_______________________________________________________________________________________________

Aufgabe 1: Erweitern Sie die Klasse CStapel als Reihung (aus der Vorlesung) um eine int-Funktionsmethode mittelwert, die den Mittelwert (Summe/Anzahl) aller Elemente liefert. Die Datenstruktur der Klasse ist:

class CStapel { protected:

    int* inhalt; // zeigt auf das erste Reihungselement

    int spitze; // index des letzten belegten Reihungsplatzes

public: ...

_______________________________________________________________________________________________

Aufgabe 2. Zeichnen Sie das Einfügen in den obigen Stapel.

void einfuegen(int wert) {

        spitze++:

        inhalt[spitze] = wert;

    }

}

Ihre Zeichnung soll den Zustand des Stapels vor und nach dem Einfügen darstellen.

_______________________________________________________________________________________________

Aufgabe 3.: Kreuzen Sie die richtigen Antworten an und geben Sie Ihre Begründung mit Stich­worten dazu. Ohne Begründung gilt Ihre Antwort als falsch.

(       )       Richtig                   cout ist ein Objekt der Klasse iostream.h

(       )       Falsch                   

Grund:                                                                                                                                                                                                                                                                                                     

(       )       Richtig                   Ein ADT (abstrakter Datentyp) ist – ähnlich, wie eine Klasse – geeignet, Objekte zu erzeugen.

(       )       Falsch                   

Grund:                                                                                                                                                                                                                                                                                                     

(       )       Richtig                   Der Typ der Elemente in der Implementierung eines Multibehälters muss

(       )       Falsch                    in der Klasse definiert werden.

Grund:                                                                                                                                                                                                                                                                                                     

(       )       Richtig                   C++-Objekte können – im Gegensatz zu Java-Objekten – auch auch auf dem Stapel (stack)

(       )       Falsch                    gespeichert werden.

Grund:                                                                                                                                                                                                                                                                                                     

(       )       Richtig                   Der Zugriff auf ein Objekt über einen Zeiger mit einem falschen Inhalt (z.B. 0) löst in C++

(       )       Falsch                    eine Ausnahme aus.

Grund:                                                                                                                                                                                                                                                                                                     

(       )       Richtig                   Operatoren können in C++ in einer Klasse vereinbart werden.

(       )       Falsch                   

Grund: 0                                                                                                                                                                                                                                                                                                 

(       )       Richtig                   Dynamisches Binden ist nur in Java möglich; in C++ wird immer statisch gebunden.

(       )       Falsch                    (Binden = Module/Klassen miteinander verbinden)

Grund:                                                                                                                                                                                                                                                                                                     

(       )       Richtig                   Es gibt C++-Objekte, die auch  delete zerstört werden können

(       )       Falsch                   

Grund:                                                                                                                                                                                                                                                                                                     

_______________________________________________________________________________________________

Aufgabe 4: Implementieren Sie eine Klasse CBehaelter für beliebige Objekte (mit einem typenloser Zeiger vom Typ void *) mit den Methoden schreiben und lesen, die die Ausnahme EVoll und ELeer auslösen, wenn der Behälter voll bzw. leer ist.

_______________________________________________________________________________________________

Aufgabe 5: Implementieren Sie die Funktionsschablone groesser mit dem folgenden Prototyp:

template <class T> bool groesser(const T a, const T b);

Ausprägungen dieser Schablone sollen zwei Werte (gegeben als Parameter) zurückgeben. Was ist die Voraussetzung dafür, dass die Schablone für eine Klasse ausgeprägt werden kann? Beispiel:

class Klasse { ... }
Klasse objekt1, objekt2; ...
cout << objekt1 << " ist " <<
        groesser(objekt1, objekt2) ? "größer"
: "kleiner" <<
        " als " << objekt2;