sabato 6 settembre 2014

Overriding del metodo ereditato nei 4 linguaggi.

Adesso il nostro apprendista elabora un modo suo di cucinare, e si mette a usare la pentola a pressione.

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

class Cuoco{
public:
  void Pasta(char * condimento){
  cout << "io cucino pasta con " << condimento << endl;
  getchar();
 }
};

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

 void Pasta(char * condimento, char * condimento2){
  cout << "io cucino pasta con " << condimento << " e " << condimento2 << endl;
  getchar();
 }
};


void main(){

 Cuoco * Mario = new Cuoco();
 Apprendista * Antonio=new Apprendista();
 Mario->Pasta("ragu");
 Antonio->Pasta("ragu");

}
io cucino pasta con ragu

io cucino nella pentola a pressione pasta con ragu




In VB:
Module Module1
    Class Cuoco
        Public Sub Pasta(condimento As String)
            Console.WriteLine("io cucino pasta con " & condimento)
            Console.ReadLine()
        End Sub
    End Class

    Class Apprendista
        Inherits Cuoco
        Public Overloads 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 pasta con " & condimento & " e " & condimento2)
            Console.ReadLine()
        End Sub
    End Class

    Sub Main()

        Dim Antonio As New Apprendista

        Antonio.Pasta("ragu")
    End Sub

End Module
io cucino pasta con ragu

io cucino nella pentola a pressione pasta con ragu


Ecco.
Ho dovuto ridefinire il metodo in C++, e anche in VB.NET.
Però in VB.NET ho dovuto anteporre la parola chiave Overloads anche al metodo ridefinito.

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

namespace ConsoleApplication3
{

    class Cuoco
    {
        public void Pasta(string condimento)
        {
            Console.WriteLine("io cucino la pasta con " + condimento);
            Console.ReadLine();
        }
    }

    class Apprendista : Cuoco
    {
        public 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 la pasta con " + condimento + " e " + condimento2);
            Console.ReadLine();
        }
    }



    
    class Program
    {
        static void Main(string[] args)
        {
            Cuoco Mario = new Cuoco();
            Apprendista Antonio = new Apprendista();
            Mario.Pasta("ragu");
            Antonio.Pasta("ragu");
        }
    }
}
io cucino la pasta con ragu

io cucino nella pentola a pressione pasta con ragu




in Java:
package javaapplication1;

class Cuoco{
    public void Pasta(String condimento){
        System.out.println("io cucino pasta con " + 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 pasta con " + condimento + " e "+ condimento2);
    }
}

public class JavaApplication1 {


    
    public static void main(String[] args) {
        Cuoco Mario=new Cuoco();
        Apprendista Antonio=new Apprendista();
        Mario.Pasta("ragu");
        Antonio.Pasta("ragu");

    }
}
run:
io cucino pasta con ragu
io cucino nella pentola a pressione pasta con ragu
BUILD SUCCESSFUL (total time: 1 second)


Anche qui il comportamento è simile a quello del C#.

Nessun commento:

Posta un commento