![]() |
![]() |
Eine Klasse erstellen
|
G.Eichelsdörfer
Staatliche Technikerschule Weilburg |
class DoubleArray
{
public:
bool append(double Val)
{
bool valid = Size < Capacity;
if(valid) Values[Size++] = Val;
return valid;
}
private:
int Size, Capacity;
double Values[100];
};
Entsprechend kann die Funktion output() als Methode in unsere Klasse eingebaut werden.
Das sollten Sie jetzt einmal selbstständig versuchen!
Denken Sie daran, dass der DoubleArray-Parameter überflüssig wird!
output() ist wie append() eine Kommunikationsschnittstelle.
Nun haben wir die Zugriffsmöglichkeiten eingeschränkt und zwei Kommunikationsschnittstellen zur Verfügung gestellt. Bevor weitere hilfreiche Kommunikationsschnittstellen eingebaut werden, soll die (automatisierte) Initialisierung der Attribute angegangen werden.
Die Initialisierungsarbeit ist zweckmäßigerweise immer dann durchzuführen, wenn ein Objekt unserer Klasse angelegt bzw. gebaut wird. Angloamerikanisch heißt das Verb für bauen to construct. Die Initialisierungsfunktion wird deshalb constructor (NG-Jargon: C'tor), zu deutsch Konstruktor genannt. Ein Konstruktor muss alle erforderlichen Anfangsarbeiten am anzulegenden Objekt durchführen. Dazu gehört insbesondere das Vorbelegen von Attributwerten.
Ein C++-Compiler erkennt einen Konstruktor an dessen Namen und Resultatstyp. Ein Konstruktor muss denselben Namen wie die Klasse besitzen und darf keinen Resultatstyp haben. Eine Klasse kann mehrere Konstruktoren mit unterschiedlichen Signaturen (Parametertypen) zur Verfügung stellen. Ein Konstruktor ohne jeglichen Parameter wird Standardkonstruktor genannt. Für unsere Klasse genügt ein solcher Standardkonstruktor.
class DoubleArray
{
public:
DoubleArray()
{
. . .
}
. . .
private:
int Size, Capacity;
double Values[100];
};
Füllen Sie den Rumpf des Konstruktors mit den beiden erforderlichen Initialisierungsanweisungen!
Nun erfüllt unsere Klasse bereits die wichtigsten Funktionen und kann getestet werden. Die folgende main-Funktion zeigt einen solchen Test:
int main()
{
DoubleArray Werte; // Der Konstruktor wird abgearbeitet.
double Wert;
bool gueltig;
do
{
cout << "Wert: ";
cin >> Wert;
if(Wert!=0.0L) gueltig = Werte.append(Wert);
} while(Wert!=0.0L && gueltig);
Werte.output();
return 0;
}