Example #1
0
        static void Main(string[] args)
        {
            //Si vuole creare un supermarket dove si vendono due tipi di oggetti: quelli venduti a peso e quelli venduti a pezzi.

            List <Element> elements = new List <Element>();

            var p1 = new ItemSoldInPieces("C01", "cereali", 2.20D, 2);
            var p2 = new ItemSoldInPieces("C02", "Quaderno", 1.10D, 1);
            var w1 = new ItemSoldInWeight("C03", "Mele", 2.50D, 2.0D);

            elements.Add(p1);
            elements.Add(p2);
            elements.Add(w1);

            var    ProductVisitor = new ShoppingVisitor();
            double TotalCost      = 0;

            foreach (var item in elements)
            {
                item.Accept(ProductVisitor);
                TotalCost += ProductVisitor.GetProduct();
            }

            Console.OutputEncoding = System.Text.Encoding.UTF8;
            Console.WriteLine("Codice: {0} | Descrizione: {1}| Prezzo unitario: {2:C}| Pezzi: {3}", p1.Code, p1.Description, p1.UnitPrice, p1.NumberOfPieces);
            Console.WriteLine("Codice: {0} | Descrizione: {1}| Prezzo unitario: {2:C}| Pezzi:{3}", p2.Code, p2.Description, p2.UnitPrice, p2.NumberOfPieces);
            Console.WriteLine("Codice: {0} | Descrizione: {1}| Prezzo unitario al kg: {2:C}| Kili: {3}", w1.Code, w1.Description, w1.UnitPrice, w1.Weight);

            Console.WriteLine();
            Console.WriteLine("Total cost = {0:C} ", TotalCost);
            Console.Read();
        }
 public void visit(ItemSoldInPieces visitable)
 {
     if (visitable == null)
     {
         throw new ArgumentException("Null visitable!");
     }
     product = visitable.NumberOfPieces * visitable.UnitPrice;
 }