1. using System;
  2. using System.Collections.Generic;
  3. using System.Text;
  4.  
  5. namespace FirmaWerkProdukt
  6. {
  7.     class Program
  8.     {
  9.         static void Main(string[] args)
  10.         {
  11.             Firma f1 = new Firma();
  12.  
  13.             /*  Um die Assoziationen als starken Besitz (Komposition)
  14.              *  zu realisieren, werden die Objekte hier direkt im Konstruktoraufruf
  15.              *  erzeugt.
  16.              *  Die Werk-Produkt-Assoziation dagegen ist eine Aggregation!
  17.              * */
  18.  
  19.             Werk w1 = new Werk(new Produkt("4 TiB Festplatte", 7000, 195.5));   // Komposition
  20.             Werk w2 = new Werk(new Produkt("250 GiB SSD", 6000, 149.9));
  21.  
  22.             f1.addWerk(w1);                                                     // Aggregation
  23.             f1.addWerk(w2);
  24.             Console.WriteLine(f1.berechneGesamtUmsatz());
  25.             Console.ReadKey();
  26.         }
  27.     }
  28.  
  29.     class Produkt
  30.     {
  31.         string produktName;
  32.         double preis;
  33.         int anzahl;
  34.         public Produkt(string n, int a, double p)
  35.         {
  36.             produktName = n;
  37.             anzahl = a;
  38.             preis = p;
  39.         }
  40.         public double Preis
  41.         {
  42.             get { return preis; }
  43.         }
  44.         public int Anzahl
  45.         {
  46.             get { return anzahl; }    
  47.         }
  48.     }
  49.     class Werk
  50.     {
  51.         Produkt produkt;
  52.         public Werk(Produkt p)
  53.         {
  54.             produkt = p;
  55.         }
  56.         public double berechneUmsatz()
  57.         {
  58.             return produkt.Anzahl * produkt.Preis;
  59.         }
  60.     }
  61.     class Firma
  62.     {
  63.         private List<Werk> werke = new List<Werk>();
  64.  
  65.         public void addWerk(Werk w)
  66.         {
  67.             werke.Add(w);
  68.         }
  69.         public double berechneGesamtUmsatz()
  70.         {
  71.             double umsatz = 0;
  72.             for(int i=0; i<werke.Count; i++)
  73.                 umsatz += werke[i].berechneUmsatz();
  74.             return umsatz;
  75.         }
  76.     }
  77. }


UML-Sequenzdiagramm: Firma-Werk-Produkt

UML-Sequenzdiagramm: Firma-Werk-Produkt

Last modified: Wednesday, 3 February 2021, 12:06 PM