Aufgabe 1.

template <class TElement>
void GWarteschlange<TElement>::anzahl(const TElement& element) {
	int anz = 0;
	for (int i = 0; i < zaehler; i++) if (speicher [i % groesse] = element) anz++;
	return anz;
};

Aufgabe 2:

class CErweiterung : public CKlasse<int> { public: 
	void schreiben(const int w) { wert = w; };
};

Aufgabe 3:

(X) falsch Für Klassen, die als verkettete Listen implementiert wurden, muß die Zuweisung überladen werden.
Grund: muß nicht, aber sonst funktioniert sie falsch

(X) richtig Klassen in C++ sind besser geeignet als abstrakten Datentypen mit Hilfe von Moduln in C.
Grund: ADT’s verwirklichen keine Kapselung

(X) richtig Ein Element des Stapels ist lesbar, nachdem alle jüngeren Elemente entfernt wurden.
Grund: nach dem LIFO-Prinzip

(X) falsch Prozeduren und Datentypen können als Argumente für Prozeduraufrufe benutzt werden.
Grund: Datentypen nicht

(X) richtig Das Profil einer Menüprozedur definiert, welche Rückrufprozeduren als Argumente geeignet sind.
Grund: Anzahl und Typ der Parameter

(X) richtig Durch die Verwendung von Zuweisung zwischen ADT-Obejkten können Inkonsistenzen entstehen..
Grund: keine "Benachrichtigung" über Zustandsänderung

(X) falsch Klassen werden immer von Modulen exportiert.
Grund: sie können auch lokal sein

(X) richtig Es gibt Module, die ohne den Aufruf einer ihrer Operationen etwas tun.
Grund: Durch ihren Initialisierungsteil

Aufgabe 4.

#include "EMAIL.HPP"
void ausgabe(char * text) { cour << text; }
void main() {
	email(ausgabe);
}

Aufgabe 5.

void CFeld::operator ++ () {
	for (int i = 0; i < groesse; i++) speicher[i]++;
}

Aufgabe 7.

// MODUL.HPP
class EBehaelter_voll {};
class EBehaelter_leer {};
void fuellen(const char* element) throw (EBehaelter_voll);
void entleeren() throw(EBehaelter_leer);
char* inhalt() throw(EBehaelter_leer);
bool gefuellt();
// MODUL.CPP
GBehaelter<char*> behaelter;
void fuellen(const char* element) throw (EBehaelter_voll) { behaelter.fuellen(element); }
void entleeren() throw(EBehaelter_leer) { behaelter.entleeren(); }
char* inhalt() throw(EBehaelter_leer) { return behaelter.inhalt(); }
bool gefuellt() { return behaelter.gefuellt(); }