domenica 7 settembre 2014

Classi astratte comparate nei quattro linguaggi

Andiamo dunque all'eventualità in cui il maestro Cuoco non lavori più.
Egli non è più disponibile per essere istanziato, ossia per svolgere turni al ristorante, ma continua a dirigere il ristorante stesso.
Egli lascia completa libertà su tutto, ma esige che chi lavora per lui faccia il pollo col rosmarino e non in modo diverso.

In C++:
#include "iostream"
using namespace std;

class Cuoco{

public:
	void Pollo(){
		cout << "io cucino il pollo con rosmarino" << endl;
		getchar();
	}
	virtual void Pasta(char * condimento)=0;
};

class Apprendista: public Cuoco{
	
public:
	void Pasta(char * condimento){
		cout << "io cucino con la pentola a pressione pasta e " << condimento << endl;
		getchar();
	}
	void Pasta(char * condimento, char * condimento2){
		cout << "io cucino con la pentola a pressione pasta e " << condimento << " e " << condimento2 << endl;
		getchar();
	}
};


class Apprendista2: public Cuoco{
public:
	void Pasta(char * condimento){
		cout << "io cucino col forno a legna pasta e " << condimento << endl;
		getchar();
	}
		void Pasta(char * condimento, char * condimento2){
		cout << "io cucino con la pentola a pressione pasta e " << condimento << " e " << condimento2 << endl;
		getchar();
	}
};


void main(){
	Apprendista * Antonio=new Apprendista();
	Apprendista2 * Giuseppe=new Apprendista2();

	Antonio->Pasta("sugo");
	Antonio->Pasta("tonno", "formaggio");
	Antonio->Pollo();

	Giuseppe->Pasta("sugo");
	Giuseppe->Pasta("aglio", "olio");
	Giuseppe->Pollo();

	
}
io cucino con la pentola a pressione pasta e sugo

io cucino con la pentola a pressione pasta e tonno e formaggio

io cucino il pollo con rosmarino

io cucino col forno a legna pasta e sugo

io cucino con la pentola a pressione pasta e aglio e olio

io cucino il pollo con rosmarino




In VB:
Module Module1
    MustInherit Class Cuoco
        Public Sub Pollo()
            Console.WriteLine("io cucino il pollo col rosmarino")
            Console.ReadLine()
        End Sub
        Public MustOverride Sub Pasta(condimento As String)
    End Class

    Class Apprendista
        Inherits Cuoco
        Public Overrides Sub Pasta(condimento As String)
            Console.WriteLine("io cucino nella pentola a pressione pasta con " & condimento)
            Console.ReadLine()

        End Sub
        Public Overloads Sub Pasta(condimento As String, condimento2 As String)
            Console.WriteLine("io cucino nella pentola a pressione pasta con " & condimento & " e " & condimento2)
            Console.ReadLine()
        End Sub
    End Class

    Class Apprendista2
        Inherits Cuoco
        Public Overrides Sub Pasta(condimento As String)
            Console.WriteLine("io cucino col forno a legna a pressione pasta con " & condimento)
            Console.ReadLine()

        End Sub
        Public Overloads Sub Pasta(condimento As String, condimento2 As String)
            Console.WriteLine("io cucino col forno a legna pasta con " & condimento & " e " & condimento2)
            Console.ReadLine()
        End Sub
    End Class


    Sub Main()
        Dim Antonio As New Apprendista
        Dim Giuseppe As New Apprendista2

        Antonio.Pasta("sugo")
        Antonio.Pasta("tonno", "formaggio")
        Antonio.Pollo()

        Giuseppe.Pasta("sugo")
        Giuseppe.Pasta("aglio", "olio")
        Giuseppe.Pollo()


    End Sub

End Module
io cucino nella pentola a pressione pasta con sugo

io cucino nella pentola a pressione pasta con tonno e formaggio

io cucino il pollo col rosmarino

io cucino col forno a legna a pressione pasta con sugo

io cucino col forno a legna pasta con aglio e olio

io cucino il pollo col rosmarino





In C#:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication3
{

    abstract class Cuoco
    {
        public void Pollo()
        {
            Console.WriteLine("io cucino il pollo col rosmarino");
            Console.ReadLine();
        }
        abstract public void Pasta(string condimento);
        
    }

    class Apprendista : Cuoco
    {
        public override void Pasta(string condimento)
        {
            Console.WriteLine("io cucino nella pentola a pressione pasta con " + condimento);
            Console.ReadLine();
        }
        public void Pasta(string condimento, string condimento2)
        {
            Console.WriteLine("io cucino nella pentola a pressione la pasta con " + condimento + " e " + condimento2);
            Console.ReadLine();
        }
    }

    class Apprendista2 : Cuoco
    {
        public override void Pasta(string condimento)
        {
            Console.WriteLine("io cucino nel forno a legna pasta con " + condimento);
            Console.ReadLine();
        }
        public void Pasta(string condimento, string condimento2)
        {
            Console.WriteLine("io cucino nel forno a legna la pasta con " + condimento + " e " + condimento2);
            Console.ReadLine();
        }
    }



    
    class Program
    {

        static void Main(string[] args)
        {
            
            Apprendista Antonio = new Apprendista();
            Apprendista2 Giuseppe = new Apprendista2();

            Antonio.Pasta("sugo");
            Antonio.Pasta("tonno", "formaggio");
            Antonio.Pollo();

            Giuseppe.Pasta("sugo");
            Giuseppe.Pasta("aglio", "olio");
            Giuseppe.Pollo();
        }
    }
}
io cucino nella pentola a pressione pasta con sugo

io cucino nella pentola a pressione la pasta con tonno e formaggio

io cucino il pollo col rosmarino

io cucino nel forno a legna pasta con sugo

io cucino nel forno a legna la pasta con aglio e olio

io cucino il pollo col rosmarino




In Java:
package javaapplication1;

abstract class Cuoco{
    public void Pollo(){
        System.out.println("io cucino il pollo col rosmarino");
     }
    public abstract void Pasta(String condimento);
}

class Apprendista extends Cuoco{
    
    public void Pasta(String condimento){
        System.out.println("io cucino nella pentola a pressione pasta con "+ condimento);
    }
    public void Pasta(String condimento, String condimento2){
        System.out.println("io cucino nella pentola a pressione pasta con " + condimento + " e "+ condimento2);
    }
}

class Apprendista2 extends Cuoco{
    public void Pasta(String condimento){
        System.out.println("io cucino nel forno a legna pasta con "+ condimento);
    }
    public void Pasta(String condimento, String condimento2){
        System.out.println("io cucino nel forno a legna pasta con " + condimento + " e "+ condimento2);
    }
}
public class JavaApplication1 {


   
    
    public static void main(String[] args) {
        Apprendista Antonio=new Apprendista();
        Apprendista2 Giuseppe=new Apprendista2();
        
        Antonio.Pasta("sugo");
        Antonio.Pasta("tonno","formaggio");
        Antonio.Pollo();
        
        Giuseppe.Pasta("sugo");
        Giuseppe.Pasta("aglio","olio");
        Giuseppe.Pollo();
        

    }
}
run:
io cucino nella pentola a pressione pasta con sugo
io cucino nella pentola a pressione pasta con tonno e formaggio
io cucino il pollo col rosmarino
io cucino nel forno a legna pasta con sugo
io cucino nel forno a legna pasta con aglio e olio
io cucino il pollo col rosmarino
BUILD SUCCESSFUL (total time: 0 seconds)
Ecco.
Adesso dobbiamo ripassarci bene overriding e overloading comparati...

Nessun commento:

Posta un commento