Fortgeschrittene objektorientierte Programmierung
LVA 185.211, VL 2.0, 2005 S
CAT calls,
features(Variablen und Methoden).
expi2.complang.tuwien.ac.at(nicht auf b3 wegen anderer Linux-Version) einloggen. Sie haben auf expi2 dasselbe Login, Passwort und Home-Directory wie auf b3. Aber nur auf expi2 können Sie durch den Befehl
estudioEiffelStudio starten. Diese Software stellt Ihnen alle Funktionen zur Verfügung, die Sie zur Lösung der Aufgabe brauchen (und noch viel mehr). Sowohl zu EiffelStudio als auch zu Eiffel selbst finden Sie umfangreiche online Dokumentation. Beachten Sie, dass auf expi2 keine Software installiert ist, die Sie für andere Teile der Übung benötigen.
Bevor Sie unter Ihrem Account estudio
aufrufen können, müssen
Sie drei Shell-Variablen setzen bzw. ändern. Unter der bash reichen diese
drei Zeilen:
export ISE_EIFFEL=/usr/local/Eiffel55 export ISE_PLATFORM=linux-glibc2.1 export PATH=$PATH:$ISE_EIFFEL/studio/spec/$ISE_PLATFORM/binFür eine andere Shell sind die Zeilen entsprechend anzupassen. Diese Zeilen sind nach jedem Einloggen (am besten in
.envrc) auszuführen.
Es gibt eine etwas abgespeckte frei verfügbare Version von Eiffel-Studio, die Sie auf Ihrem eigenen Rechner installieren können. Für die Übung ist diese freie Version vollkommen ausreichend.
compileaufrufbar. Es gibt jedoch keine integrierte Entwicklungsumgebung. Sourcen und Dokumentation zu SmallEiffel finden Sie unter http://smarteiffel.loria.fr/index.html. Wenn Sie SmallEiffel auf Ihrem eigenen Rechner installieren wollen, beachten Sie bitte, dass die Readme-Dateien im Paket unvollständig sind/waren; befolgen Sie die Installationsschritte auf den Web-Seiten und erzeugen Sie zwei entsprechende Konfigurations-Dateien und eine Shell-Variable, bevor Sie mit der automatischen Installation beginnen - zumindest für Versionen aus dem ersten Quartal 2004.
Schreiben Sie ein Programm zur Verwaltung von Konten. Jedes Konto verfügt über Angaben zu den Zeichnungsberechtigten, einen Kreditrahmen (bei dessen Überschreitung die Bank in der Regel keine weitere Überziehung zulässt), je einen Prozentsatz für die Sollverzinsung (Zinsen für den Betrag, um den das Konto überzogen ist) und Habenverzinsung (Zinsen für das Guthaben am Konto) und den aktuellen Betrag am Konto. Es sollen Operationen für Bareinzahlungen, Barauszahlungen, Überweisungen zwischen Konten sowie Abfragen und Änderungen der zu den Konten gespeicherten Daten (ausgenommen Änderungen des Guthabens) unterstützt werden.
Auf Konten sollen zumindest folgende Zusicherungen gelten: Die Verzinsung und der Kreditrahmen sollen stets innerhalb der vom Kreditinstitut vorgegebenen Grenzen bleiben. Es gibt einen Mindestbetrag von 5 Euro für jede Einzahlung, Auszahlung und Überweisung.
Entwickeln Sie zwei Untertypen des Kontos: Ein Studentenkonto und ein
Pensionskonto. Diese Arten von Konten sollen jeweils nur einen Zeichnungsberechtigten
haben, der Student bzw. Pensionist ist. Überprüfen Sie, ob die
Zeichnungsberechtigten tatsächlich die richtigen Typen haben, wobei
Student
und Pensionist
Untertypen von Person
sind.
Studenten- und Pensionskonten sollen folgende Unterschiede zu normalen Konten
aufweisen: Für Verzinsungen und Kreditrahmen gelten engere Grenzen als bei
normalen Konten, dafür gelten niedrigere Mindestbeträge für
Einzahlungen, Auszahlungen und Überweisungen (1 Euro). Überlegen Sie
sich weitere Zusicherungen, die die Möglichkeiten und vor allem Grenzen
von Zusicherungen in Eiffel demonstrieren.
Schreiben Sie ein einfaches Programm zum Testen der Konten (interaktiv oder
auch nicht), das auch die Einschränkungen von CAT calls
auslotet.
Achten Sie generell auf ein sinnvolles Sichtbarmachen von features
in
anderen Programmteilen.