Hauptelemente der Objektorientierten Programmierung
Benennung eigener Datentypen
Gruppieren der Funktionen ,die mit diesen Datentypen arbeiten
Konstruktor - Destruktor
Alle Objekte einer Klasse werden automatisch in einem sinnvollen Zustand initialisiert.Das gilt für alle Objekte , egal ob statisch , automatisch oder dynamisch erzeugt , egal ob Variable, Teil eines Arrays oder Teil eines anderen Objekts.
Z.B. kann ein automatisches Array im Konstruktor Speicher anfordern und im Destruktor den Speicher freigeben. Dadurch sind die new/delete aufrufe immer konsistent , erfolgen automatisch und können also nicht vergessen werden.Methoden und Zugriffschutz
Bestimmte Funktionen die mit den Objekten einer Klasse arbeiten, werden der Klasse fest zugeordnet und bekommen eine andere Aufrufsyntax. Diese Funktionen werden Methoden genannt.
Z.B.
string s; a = s.length(); // statt length(s).Mann kann spezifizieren, daß auf bestimmte Datenelemente und Methoden nur von den Methoden einer Klasse aus zugegriffen werden kann.
Dadurch können Klassen absolut sicher gegen unsachgemäße Benutzung gemacht werden. Etwa bei einem automatischen Array darf der 'Anwender' nicht auf das Datenelement zugreifen , welches auf den dynamischen Speicher zeigt.
Vererbung
Man kann Klassen von einer anderen Klasse , genannt Basisklasse, ableiten
Eine Abgeleitete Klasse 'erbt' alle Methoden und Daten von der Basisklasse;
Das kann genutzt werden, um Code wiederzuverwenden.
Ein Zeiger auf Typ T kann auch auf Objekte aller von Typ T abgeleiteten Klassen zeigen.
Dadurch können Objekte unterschiedlicher , aber auf Grund der Ableitungsrelation verwandter Typen gemeinsam verwaltet werden.
Virtuelle Methoden
Methoden können als "virtuell" deklariert werden.
Ist f() eine virtuelle Methode einer Klasse, dann kann jede abgeleitete Klasse eine eigene Variante von f() definieren. Wird nun die Methode f() für ein Objekt aufgerufen, so wird zur Laufzeit in Betracht gezogen, von welchem Typ das aktuelle Objekt ist, und die passende Variante aufgerufen