Konstruktoren
Unser Kontoprogramm funktioniert nur, weil .NET bei der Erzeugung der Objekte die Eigenschaft mit dem eingebauten Standardkonstruktor mit 0 initialisiert.
- Konto konto1 = new Konto(); // Erzeugung der Objekte der Klasse Konto
- // mit dem Standardkonstruktor
In C++ wäre dem nicht so, der ktoStand hätte zufällig irgendeinen Wert !!!
Aber auch wenn ein Konto mit z.B. 50 € Startguthaben erzeugt werden soll, dann ist ein allgemeiner Konstruktor von Vorteil. Er kann parametrisiert werden. Die Höhe des Startguthabens wird dann als Argument bei der Objekterzeugung mit übergeben:
- Konto konto2 = new Konto(50); // Allgemeiner Konstruktor
Die Funktionalität muss entwickelt werden:
- class Konto // Klassendefinitionen
- {
- private double ktoStand; // Eigenschaft
- public Konto(double betrag) // Definition des allg. Konstruktors
- {
- ktoStand = betrag; // Parameter wird der Eigenschaft zugewiesen
- }
- ...
Ein leeres Konto kann nun mit
- Konto konto2 = new Konto(0); // leeres Konto wird erzeugt
erzeugt werden.
Soll der Standardkonstruktor
- Konto konto2 = new Konto(); // Standardkonstruktor
weiterhin benutzt werden können, muss er nun auch selbst definiert werden:
- class Konto // Klassendefinitionen
- {
- private double ktoStand; // Eigenschaft
- public Konto() // Definition eines Standardkonstruktor
- {
- ktoStand = 0;
- }
- public Konto(double betrag) // Definition des allg. Konstruktors
- {
- ktoStand = betrag; // Parameter wird der Eigenschaft zugewiesen
- }
- ...
Dabei gilt:
- Konstruktoren haben in C# die gleiche Bezeichnung wie die Klasse.
- Konstruktoren haben keinen Rückgabewert, auch kein "void".
_____________________________________________________________________________
Aufgabe: Erweitern Sie obiges Programm um folgende Funktionalität:
UML-Klassen- u. Objektdiagramm
ktoNr soll dabei durch den Konstruktor automatisch inkrementiert werden. Realisieren Sie das mit Hilfe einer statischen klassenweit gültigen Variable.