Objektorientierte Programmierung
LVA 185.162, VL 2.0, 2007 W

4. Übungsaufgabe

Themen:

Untertypbeziehungen, Vererbung, Sichtbarkeit, Klassen, Interfaces, Pakete

Termine:

Ausgabe: 08.11.2007
reguläre Abgabe: 22.11.2007, 12:45 Uhr
nachträgliche Abgabe: 29.11.2007, 12:45 Uhr

Abgabeverzeichnis:

Aufgabe4

Programmaufruf:

java Test

Grundlage:

Skriptum, die ersten zwei Kapitel.

Aufgabe

Welche Aufgabe zu lösen ist:

Entwickeln Sie in Java Teile eines optimierenden Programmiersystems.

Entwickeln Sie ein Paket datastructures, welches zumindest Klassen und Interfaces für folgende Zwecke enthält:

Entwickeln Sie unter Verwendung des Pakets datastructures ein Paket processors, welches Klassen und Interfaces für folgende Zwecke enthält:

Entwickeln Sie unter Verwendung der Pakete datastructures und processors ein Paket routines, welches Klassen und Interfaces für folgende Zwecke enthält:

Entwickeln Sie ein Paket test, das zum nicht interaktiven Testen der Klassen und Interfaces dieser Aufgabe dient. Die wichtigsten Normal- und Grenzfälle sollen überprüft werden, und die Testergebnisse sind in allgemein verständlicher Form in der Standardausgabe darzustellen.

Schreiben Sie eine Klasse Test im existierenden Ordner Aufgabe4. Ein Aufruf von java Test in Aufgabe4 soll die Tests im Paket test ausführen.

Wie die Aufgabe zu lösen ist:

Überlegen Sie genau, wo sie (abstrakte) Klassen und wo Interfaces verwenden. Achten Sie darauf, Pakete wie oben beschrieben einzusetzen, und sorgen Sie dafür, dass Methoden, Klassen und Interfaces nur dort sichtbar sind, wo sie gebraucht werden. Bei den Methoden, Klassen und Interfaces, die in dieser Aufgabenstellung beschrieben sind, ist davon auszugehen, dass sie auch außerhalb der vorgegebenen Pakete verwendet werden sollen. Setzen Sie Vererbung nur dort ein, wo Untertypbeziehungen bestehen. Überall, wo Ersetzbarkeit ermöglicht werden kann, soll Ersetzbarkeit gegeben sein. Erben Sie so viel Code wie möglich, und vermeiden Sie unnötigen Code. Alle notwendigen Zusicherungen sollen als Kommentare im Code stehen. Vermeiden Sie Kommentare, die keine Zusicherungen darstellen, sowie mehrdeutig formulierte Zusicherungen. Wählen Sie stets jene Faktorisierung und jene Arten von Zusicherungen, durch welche die Abhängigkeiten zwischen unterschiedlichen Paketen am kleinsten sind.

Zur Lösung von Teilen dieser Aufgabe bietet sich die Verwendung von Generizität an. Generizität wird aber erst in kommenden Vorlesungen behandelt. Verzichten Sie daher auf die Verwendung von Generizität, außer wenn Sie damit ausreichend Erfahrung haben und wissen, was Sie tun.

Hinweise zur Beurteilung:

Für Vererbungsbeziehungen, die keine Untertypbeziehungen sind, sowie für nicht wahrgenommene Gelegenheiten für Untertypbeziehungen und Vererbung gibt es kräftige Punkteabzüge. Ein Schwerpunkt bei der Beurteilung liegt auf der richtigen Verwendung von Zusicherungen. Zusicherungen in Testklassen werden jedoch nicht beurteilt. Für fehlende oder mißverständlich formulierte Zusicherungen gibt es kräftige Punkteabzüge, ebenso wie für Kommentare, die keine Zusicherungen darstellen. Die in dieser Aufgabenstellung angeführten Eigenschaften der Klassen und Schnittstellen dienen als Grundlage dafür, ob eine Zusicherung bei der Beurteilung als nötig angesehen wird. Die Aufgabenstellung selbst gehört nicht zum Programmcode. Daher dürfen Anforderungen in der Aufgabenstellung einem Leser des Programmcodes nicht als bekannt vorausgesetzt werden. Für unnötige Zusicherungen werden Punkte abgezogen, wenn dadurch sonst nicht benötigter Programmcode geschrieben werden muss oder sonst mögliche Vererbungs- und Untertypbeziehungen verhindert werden. Ein weiterer Schwerpunkt liegt auf einem vernünftigen Einsatz von Interfaces und (abstrakten) Klassen, der korrekten Verwendung von Paketen und einer kontrollierten Verwendung von private, protected und public.

Betreuung durch TutorIn:

Diese und alle folgenden Aufgaben sind von ihnen selbst zu lösen. Ihre Tutorin bzw. Ihr Tutor wird Fragen zur Aufgabe natürlich trotzdem gerne beantworten. Die genaue Struktur der Lösung betreffende Fragen werden aber nur ausweichend beantwortet.

Was im Hinblick auf die Abgabe zu beachten ist:

Schreiben Sie Ihre Lösung in das bereits existierende Verzeichnis Gruppe/Aufgabe4. Das Programm soll von diesem Verzeichnis aus durch java Test aufrufbar sein. Schreiben Sie nicht mehr als eine Klasse in jede Datei. Das Verzeichnis soll zu den Abgabezeitpunkten alle .java-Dateien enthalten, die Sie für Ihre Lösung benötigen. Bitte entfernen Sie alle .java-Dateien, die nicht zur Abgabe gehören. Dateien mit anderen Endungen werden bei der Beurteilung nicht berücksichtigt. Verzichten Sie auf die Verwendung von Verzeichnissen innerhalb von Gruppe/Aufgabe4, außer den zur Lösung der Aufgabe unbedingt nötigen Verzeichnissen datastructures, processors, routines und test. Stellen Sie sicher, dass ein Aufruf von javac *.java in Gruppe/Aufgabe4 und allen Unterverzeichnissen davon keine Fehlermeldungen liefert, da Lösungen mit Syntaxfehlern in der Regel nicht beurteilt werden.
Complang
Puntigam
   Kontakt
   Research
   Lehre
      OOP
      Typsysteme
      EP2
      FOOP
      Prog.spr.
      frühere Lehre
         LVAs 2017 W
         LVAs 2017 S
         LVAs 2016 W
         LVAs 2016 S
         LVAs 2015 W
         LVAs 2015 S
         LVAs 2014 W
         LVAs 2014 S
         LVAs 2013 W
         LVAs 2013 S
         LVAs 2012 W
         LVAs 2012 S
         LVAs 2011 W
         LVAs 2011 S
         LVAs 2010 W
         LVAs 2010 S
         LVAs 2009 W
         LVAs 2009 S
         LVAs 2008 W
         LVAs 2008 S
         LVAs 2007 W
            OOP
               Laborübung
               1. Aufgabe
               2. Aufgabe
               3. Aufgabe
               4. Aufgabe
               5. Aufgabe
               6. Aufgabe
               7. Aufgabe
               8. Aufgabe
            Typsysteme
            Seminar
         LVAs 2007 S
         LVAs 2006 W
         LVAs 2006 S
         LVAs 2005 W
         LVAs 2005 S
         LVAs 2004 W
         LVAs 2004 S
         LVAs 2003 W
   Links
Sitemap
Kontakt
Schnellzugriff:
Laborübung
Tutoren
Skriptum
Folien
Aufgaben
vorige Aufgabe
nächste Aufgabe
Fakultät für Informatik
Technische Universität Wien
Anfang | HTML 4.01 | Datenschutzerklärung | letzte Änderung: 2007-11-08 (Puntigam)