Prof. Franz Schweiggert Abteilung Angewandte
Informationsverarbeitung 6. Dezember 2002
Christian Ehrhardt Blatt 8
Allgemeine Informatik 3 (WS 2002/2003)
Abgabetermin 15.12.2002
In diesem Blatt soll eine Lösung von Blatt 6 modularisiert werden.
Ein Modul (bestehend aus Headerdatei und Implementierung) soll
den Baum implementieren, ein weiteres Modul soll das Hauptprogramm
enthalten. Das Modul, das den Baum implementiert soll folgende
Bedingungen erfüllen:
- Das Hauptprogramm soll über die Art, wie der Baum implementiert
ist nichts wissen, insbesondere darf also im Hauptprogramm
nie auf ein Element der Baumstruktur zugegriffen werden.
- In einem Programm sollen (auch gleichzeitig) mehrere unabhängige
Bäume verwendet werden können. Es wird also eine Funktion
zum Anlegen von Bäumen und eine zum wieder freigeben nötig sein.
Um die zweite Eigenschaft zu testen, soll das
Hauptprogramm von Blatt 6 um einen zweiten Baum erweitert werden.
In diesen zweiten Baum werden die gleichen Namen eingefügt, allerdings
ohne den ersten Buchstaben. Selbstverständlich gehört zu einem
modularisierten Programm auch ein passendes Makefile.
Zusammengefaßt wird das Modul also die folgenden Schnittstellenfunktionen
implementieren müssen, die vollkommen unabhängig davon sind, ob die
Implementierung einen Baum oder irgend eine andere Datenstruktur
verwendet. Deshalb wird in der Beschreibung der Schnittstelle auch
der Begriff Container und nicht der Begriff Baum verwendet:
- Anlegen eines neuen Containers.
- Freigeben eines Containers und all seiner Elemente.
- Nachsehen, ob es für einen Namen bereits einen Eintrag im
Container gibt. Ggf. soll ein neuer Eintrag erzeugt werden.
- Eine Funktion, die die Zahl der Elemente zurückliefert.
Im Hinblick auf den zweiten Teil der Aufgabe (siehe unten), kann die
Berechnung der Baumtiefe und alles was im Hauptprogramm damit
zusammenhängt, entfallen.
Um zu testen, ob die Modularisierung auch richtig funktioniert,
soll jetzt eine zweite Implementierung der Schnittstelle durch eine
einfach verkettete Liste geschrieben werden. Es sollte möglich
sein, die Baumimplementierung durch die Implementierung als Liste
zu ersetzten, ohne daß die Headerdatei oder das Hauptprogramm
verändert werden müssen. Das Makefile soll so angepaßt werden,
daß zwei ausführbare Programme erzeugt werden: Eines, das die
Baumimplementierung verwende und eines, das die Listenimplementierung
verwendet.
Christian Ehrhardt
2002-12-06