mercoledì 3 settembre 2014

Scenetta al Ristorante del C#. Sempre il solito apprendista innovatore!

Adesso ripetiamo la stessa storia al Ristorante del 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 pasta con " + condimento);
            Console.ReadLine();
        }
    }

    class Apprendista : Cuoco
    {
    }



    
    class Program
    {
        static void Main(string[] args)
        {
            Cuoco Mario = new Cuoco();
            Apprendista Antonio = new Apprendista();
            Mario.Pasta("broccoli");
            Antonio.Pasta("sugo");

     
        }
    }
}
Io cucino pasta con broccoli

Io cucino pasta con sugo




Bene.
Adesso il solito apprendista rompiscatole innovativo si inventa l'idea di cucinare la pasta con due condimenti, come quello del Ristorante del 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 pasta con " + condimento);
            Console.ReadLine();
        }
    }

    class Apprendista : Cuoco
    {
        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("broccoli");
            Antonio.Pasta("sugo");
            Antonio.Pasta("aglio", "olio");
     
        }
    }
}
Io cucino pasta con broccoli

Io cucino pasta con sugo

Io cucino la pasta con aglio e olio


Ecco: diversamente da quanto avveniva in C++, che in presenza di un altro metodo con lo stesso nome, sia pur con parametri diversi, si annullava il metodo ereditato, qui non si annulla, viene overloadato. E questa è una prima importante differenza (forse la maggiore, prima delle interfacce).

Quindi quando l'Apprendista è solo al ristorante, e arriva il cliente tradizionalista, lui può accontentarlo anche senza bisogno di ridichiarare il metodo rapportandolo al metodo del maestro Cuoco: il metodo ereditato viene overloadato dal nuovo metodo con lo stesso nome!

Nessun commento:

Posta un commento