Ein Crashkurs - Seite 2

Klassen-Definition

Eine Klasse wird definiert
In C++ werden die Daten (die 'C' Struktur) und die zugehörigen Funktionen zusammengefasst - das Resultat ist die Klassendefinition:
class Line {
   char* m_pc;
   int m_cb;
   bool ReadLine( FILE hSource);
   int PrintLine();
};
 


Bei einer Klasse handelt es sich um einen Mechanismus zur Ordnungsfindung: Zusammengehörige Datenstrukturen und die Funktionen, die diese Datenstrukturen manipulieren, werden dadurch mit einem Namen nutzbar.
Klassen eignen sich nicht nur zum Aufräumen im Quellcode. Eine Klasse definiert auch einen neuen Typ, der voll in die Sprache integriert ist. In vielen Programmiersprachen, und auch in C++, gibt es primitive Datentypen wie 'Int'; 'Char' oder 'Double'. Wenn man eine Variable vom Typ 'int' - also Integer - benutzen möchte, schreibt man in C und C++ folgendes:

int a;

Danach gibt es eine Variable mit dem Namen 'a' und dem Typ 'int' - dieser Variable kann man einen Wert zuweisen:
a = 12;


Klasse als Typ
Die Definition einer Klasse erzeugt einen neuen Typ, der wie die eingebauten Typen verwendet werden kann. So legt der Ausdruck
Line a;

eine Variable vom Typ 'Line' an. Auf die Daten innerhalb dieser Klasse (Daten-Member) kann man genauso zugreifen, wie man in C auf Elemente einer Struktur zugreifen kann. Wenn man den char-Zeiger setzen möchte, schreibt man folgendes:
a.m_ps = "Hallo C++";


Dies ist eigentlich nicht der Sinn der Sache - normalerweise abstrahiert man Daten-Member in C++, so dass die Implementierung der Klasse verändert werden kann, wenn das zu einem späteren Zeitpunkt notwendig wird. Zu diesem Zweck definiert man Zugriffsfunktionen, mit denen die Daten erfragt und gesetzt werden können, wie etwa
SetLength() und GetLength()

um die Länge der Zeile zu setzen oder zu erfragen. (Der Zugriff auf die Daten kann mit weiteren Methoden auf verschiedenen Stufen feingeregelt werden - doch dazu später mehr.)

Zusätzlich zu diesem aus C bekannten Konzept hat eine Klasse Funktionen, die im Zusammenhang mit Klassen 'Methoden' genannt werden: Im Beispiel sind dies die Methoden ReadLine() und PrintLine(). Die Funktionskörper dieser Funktionen müssen ebenfalls implementiert werden - und zwar entweder innerhalb der Klassendefinition oder an anderer Stelle. Für dieses Beispiel gehen wir davon aus, dass diese Implementierung bereits vorliegt. Um eine Textzeile auszugeben, wird folgendes Statement verwendet:

Line a;
// hier wird das ‚Line' Objekt im Verlaufe des Programms
// mit Daten gefüllt
a.PrintLine();
 

Artikel kommentieren