3. Objektorientierte Programmierung

Inhalt:

    3.1 Grundlagen und Begriffe
    3.2 Deklaration von Klassen in C++
    3.3 Konstruktoren
    3.4 Destruktoren
    3.5 Dynamische Objekte
    3.6 Klassen-Variablen und -Methoden
    3.7 Vererbung
    3.8 Mehrfachvererbung
    3.9 Funktionen redefinieren - Polymorphie
    3.10 Beispiele
    3.11 Übungen

3.1 Grundlagen und Begriffe

Von einzelnen Variablen zur Kapselung:

Begriffe der Objektorientierten Programmierung:

3.2 Deklaration von Klassen in C++

3.3 Konstruktoren

3.4 Destruktoren

3.5 Dynamische Objekte

3.6 Klassen-Variablen und -Methoden

3.7 Vererbung

3.8 Mehrfachvererbung

3.9 Funktionen redefinieren - Polymorphie

3.10 Beispiele

  1. Zahlenliste: Schreiben Sie eine Klasse "Liste", mit folgenden Eigenschaften:

    Speichern Sie die Klasse in in der Datei "liste.h". Benutzen Sie die Klasse mit dem Programm liste-test.cc, das eine Listen anlegt, und anschliessend bis zum erreichen des Dateiendes Zahlen von der Tastatur einliesst, und diese in die Liste einhaengt. Anschliessend soll die Liste ausgegeben werden:

    % make liste-test
    ...
    % ./liste-test
    Zahl eingeben:  17
    Zahl eingeben:  42
    Zahl eingeben:  1
    Zahl eingeben:  2
    Zahl eingeben:  3
    Zahl eingeben:  -2
    Zahl eingeben:  -1
    Zahl eingeben:  0
    Zahl eingeben:  55
    Zahl eingeben:  ^D
    
    Zahlen: 55 0 -1 -2 3 2 1 42 17
    % 
    (Lösungsvorschlag: liste.h)

  2. Zahlenstapel: Schreiben Sie eine Klasse "Stack", fuer einen Stapel von Integer-Zahlen. Die Klasse soll die folgenden Eigenschaften haben:

    Benutzen Sie das Testprogramm stack-test.cc, das einen Stack anlegt. Das Programm liest Zahlen von Tastatur ein, und legt sie auf den Stack. Bei erreichen des Dateiendes werden alle Zahlen auf dem Stack ausgegeben:

    % make stack-test
    ...
    % ./stack-test
    17
    42
    33
    ^D
    Stack: 33 42 17 |
    > 33
    > 42
    > 17
    % 
    
    (Lösungsvorschlag: stack.h)

3.11 Übungen

  1. Programmieren Sie einen Taschenrechner, der die Umgekehrt Polnischer Notation (UPN; Englisch: Reverse Polish Notation, RPN) versteht, basierend auf der Stack-Klasse. (Inspiration: C-Implementierung)
  2. Klasse für n-dimensionale Vektoren mit Methoden für Betrag, Normalisieren, Addition, Subtraktion, Skalarprodukt, Multiplikation mit skalarem Wert, ...
  3. Klasse für Matrizen mit Operationen zur Matrizen- und Vektoraddition, Multiplikation, Transposition, Inversion (Schicker Blatt 2.10)
  4. Lösen Sie das Gleichungssystem Ax=b (A = Matrix; x, b = Vektoren) mit Ihren Operationen gemäß den in der Wikipedia vorgeschlagenen Umformungen bzw. mit dem Gauß'schen Eliminationsverfahren. Überprüfen Sie Ihr Programm mit mehreren Beispielen!
  5. C++-Operatoren überladen fuer Vektor- und Matrizen-Klasse
  6. Klasse Person mit Attributen Vorname und Nachname, und Methoden print() sowie Konstruktoren und ggf. Destruktoren
  7. Klasse PersonMitOrt abgeleitet von Klasse Person erstellen (Jobst Blatt 7.1, Java-Lösung)
  8. Feld von PersonMitOrt'en nach Wohnort (Vorname, ...) sortieren (Jobst Blatt 7.2, Lösungsvorschlag)

$Id: 3-oop.html,v 1.26 2008/06/04 12:13:45 feyrer Exp $
Copyright (c) 2008 Hubert Feyrer <hubert@feyrer.de>
Alle Rechte vorbehalten.