Lösung: Taschengeldkonto
Completion requirements

UML-Klassendiagramm: gerichtete Assoziationen und Vererbung
- class Konto
- {
- protected double ktoStand;
- private int nr;
- private static int zaehler = 400000; //statische Eigenschaft
- private Kunde kunde;
- public Konto() //Standardkonstruktor
- {
- nr = ++zaehler;
- ktoStand = 0;
- }
- public Konto(double w, Kunde k)
- : this() // allgemeiner Konstruktor (mind. ein Parameter)
- { // :this() bewirkt, dass zuerst der Standardkonstr.
- // aufgerufen wird
- ktoStand = w;
- kunde = k;
- }
- public void info()
- {
- Console.Write("ktoNummer=" + nr + "\tktoStand=" + ktoStand + "\tKunde=" + kunde.Name);
- }
- public void buchen(double betrag)
- {
- ktoStand += betrag; //ktoStand = ktoStand + betrag;
- }
- }
- class Taschengeldkonto : Konto // Taschengeldkonto erbt von Konto
- {
- private Kunde erziehungsberechtigter;
- public Taschengeldkonto(double w, Kunde k, Kunde e)
- : base(w, k) // base bewirkt, das der Konstruktor der Oberklasse aufgerufen wird.
- {
- // Hier ist zusätzlicher Code möglich
- erziehungsberechtigter = e;
- }
- new public void info() // Die Methode info() der Oberklasse wird "ausgeblendet"
- {
- base.info(); // info() der Oberklasse wird aufgerufen
- Console.WriteLine("\tErziehungsberechtigter=" + erziehungsberechtigter.Name);
- }
- new public void buchen(double betrag) // Die Methode buchen() der Oberklasse wird "ausgeblendet"
- {
- if (ktoStand + betrag >= 0) // falls im Plus, abbuchen erlaubt
- {
- ktoStand += betrag;
- }
- else
- {
- Console.WriteLine("Überziehen leider nicht möglich!");
- }
- }
- }
- class Kunde
- {
- public string Name { get; private set; }
- private int nr;
- private static int zaehler = 400000;
- private List<Konto> konten = new List<Konto>(); //Liste mit Konten
- public Kunde() //Standardkonstruktor (keine Parameter)
- {
- nr = ++zaehler;
- Name = "noname";
- }
- public Kunde(string name)
- : this() // allgemeiner Konstruktor (mind. ein Parameter)
- { // :this() bewirkt, dass zuerst der Standardkonstr.
- // aufgerufen wird
- this.Name = name;
- }
- public void addKonto(Konto kto)
- {
- konten.Add(kto); // Hinzufügen eines Kontos
- }
- public List<Konto> getKonten() //Liste mit Konten zurückgeben
- {
- return konten;
- }
- }
- class Programm
- {
- static void Main(string[] args)
- {
- Kunde kind = new Kunde("Kind");
- Kunde erziehungsberechtigter = new Kunde("Erziehungsberechtigter");
- Taschengeldkonto k1 = new Taschengeldkonto(50, kind, erziehungsberechtigter);
- k1.info();
- Console.ReadKey();
- }
- }
Siehe auch:
https://docs.microsoft.com/de-de/dotnet/csharp/language-reference/keywords/access-keywords
Last modified: Wednesday, 16 October 2019, 9:06 AM