UML-Klassendiagramm: gerichtete Assoziationen und Vererbung

UML-Klassendiagramm: gerichtete Assoziationen und Vererbung



  1. class Konto
  2. {
  3.     protected double ktoStand;
  4.     private int nr;
  5.     private static int zaehler = 400000;    //statische Eigenschaft
  6.  
  7.     private Kunde kunde;
  8.  
  9.     public Konto()              //Standardkonstruktor
  10.     {
  11.         nr = ++zaehler;
  12.         ktoStand = 0;
  13.     }
  14.  
  15.     public Konto(double w, Kunde k)
  16.         : this()                // allgemeiner Konstruktor (mind. ein Parameter)
  17.     {                           // :this() bewirkt, dass zuerst der Standardkonstr.
  18.                                 // aufgerufen wird
  19.         ktoStand = w;
  20.         kunde = k;
  21.     }
  22.     public void info()
  23.     {
  24.         Console.Write("ktoNummer=" + nr + "\tktoStand=" + ktoStand + "\tKunde=" + kunde.Name);
  25.     }
  26.     public void buchen(double betrag)
  27.     {
  28.         ktoStand += betrag;     //ktoStand = ktoStand + betrag;
  29.     }
  30. }
  31.  
  32. class Taschengeldkonto : Konto  // Taschengeldkonto erbt von Konto
  33. {
  34.     private Kunde erziehungsberechtigter;
  35.  
  36.     public Taschengeldkonto(double w, Kunde k, Kunde e)
  37.         : base(w, k)  // base bewirkt, das der Konstruktor der Oberklasse aufgerufen wird.
  38.     {
  39.         // Hier ist zusätzlicher Code möglich
  40.         erziehungsberechtigter = e;
  41.     }
  42.  
  43.     new public void info() // Die Methode info() der Oberklasse wird "ausgeblendet"
  44.     {
  45.         base.info(); // info() der Oberklasse wird aufgerufen
  46.         Console.WriteLine("\tErziehungsberechtigter=" + erziehungsberechtigter.Name);
  47.     }
  48.  
  49.     new public void buchen(double betrag)  // Die Methode buchen() der Oberklasse wird "ausgeblendet"
  50.     {
  51.         if (ktoStand + betrag >= 0)  // falls im Plus, abbuchen erlaubt
  52.         {
  53.             ktoStand += betrag;
  54.         }
  55.         else
  56.         {
  57.             Console.WriteLine("Überziehen leider nicht möglich!");
  58.         }
  59.     }
  60. }
  61.  
  62. class Kunde
  63. {
  64.     public string Name { get; private set; }
  65.  
  66.     private int nr;
  67.     private static int zaehler = 400000;
  68.     private List<Konto> konten = new List<Konto>();  //Liste mit Konten
  69.  
  70.     public Kunde()      //Standardkonstruktor (keine Parameter)
  71.     {
  72.         nr = ++zaehler;
  73.         Name = "noname";
  74.     }
  75.     public Kunde(string name)
  76.         : this()             // allgemeiner Konstruktor (mind. ein Parameter)
  77.     {                        // :this() bewirkt, dass zuerst der Standardkonstr.
  78.                                 // aufgerufen wird
  79.         this.Name = name;
  80.     }
  81.     public void addKonto(Konto kto)
  82.     {
  83.         konten.Add(kto);    // Hinzufügen eines Kontos
  84.     }
  85.     public List<Konto> getKonten()  //Liste mit Konten zurückgeben
  86.     {
  87.         return konten;
  88.     }
  89. }
  90.  
  91. class Programm
  92. {
  93.     static void Main(string[] args)
  94.     {
  95.         Kunde kind = new Kunde("Kind");
  96.         Kunde erziehungsberechtigter = new Kunde("Erziehungsberechtigter");
  97.  
  98.         Taschengeldkonto k1 = new Taschengeldkonto(50, kind, erziehungsberechtigter);
  99.         k1.info();
  100.         Console.ReadKey();
  101.     }
  102. }


Siehe auch:

https://docs.microsoft.com/de-de/dotnet/csharp/language-reference/keywords/access-keywords


Last modified: Wednesday, 16 October 2019, 9:06 AM