Objektorientierte Programmierung
LVA 185.162, VL 2.0, 2008 W

9. Übungsaufgabe

Themen:

Entwurfsmuster, Untertypbeziehungen, gesamter Stoff

Termine:

Ausgabe: 11.12.2008, 12:45 Uhr
reguläre Abgabe: 18.12.2008, 12:45 Uhr
nachträgliche Abgabe: 15.01.2009, 12:45 Uhr

Abgabeverzeichnis:

Gruppe/Aufgabe9

Programmaufruf:

java Test

Grundlage:

Skriptum bis Seite 161 und Seite 168 bis 171

Aufgabe

Welche Aufgabe zu lösen ist:

Der Weihnachtsmann verpackt seine Geschenke in Schachteln, die er in seinem Schachtellager gelagert hat. Geschenke und Schachteln haben unterschiedliche Formen. Die Grundfläche einer Schachtel kann entweder ein Kreis, ein Quadrat oder ein Rechteck sein. Auch Geschenke haben eine Grundfläche, die entweder in einen Kreis, in ein Quadrat oder in ein nichtquadratisches Rechteck hineinpasst. Geschenke sollen so in einer Schachtel verpackt werden, dass sie nicht verrutschen können. So passt z.B. eine Weinflasche in eine Schachtel mit einem kreisförmigen, aber auch mit einem quadratischen Boden. Ein Rubikwürfel passt in eine Schachtel mit quadratischem Boden, aber nicht in eine mit rechteckigem Boden, da der Würfel darin verrutschen würde. Ein Buch passt nur in eine Schachtel mit rechteckigem Boden. Rechteckige oder quadratische Geschenke sollen aber nicht in kreisförmigen Schachteln verpackt werden, da zu viel Raum verloren gehen würde. Um die Spannung beim Auspacken zu erhöhen ist es sehr beliebt, ein Geschenk in mehreren Schachteln zu verpacken, z.B. etwas Wertvolles in eine kleine Schachtel, diese Schachtel in eine mittlere und diese in eine große Schachtel, d.h. auch eine Schachtel kann als Geschenk gesehen werden.

Geschenke haben einen Namen, eine Höhe (in cm) und abhängig von der Art des Geschenks Informationen über die Grundfläche (in cm) gespeichert (Kreis: Durchmesser; Quadrat: Seitenlänge; Rechteck: Länge und Breite). Von einer Schachtel werden die Innenmaße (in cm, Höhe und abhängig von der Art Informationen über die Grundfläche) gespeichert. Die Kartondicke beträgt 5mm, d.h. die Aussenmaße einer Schachtel sind um 1cm größer als die Innenmaße. Weiters wird zu jeder Schachtel gespeichert, welches Geschenk sich in der Schachtel befindet.

Entwickeln Sie ein Javaprogramm, das ein Schachtellager mit leeren Schachteln und einen Geschenkesack des Weihnachtsmanns, der Schachteln mit Geschenken enthält, verwalten kann. Entwickeln Sie Klassen(hierarchien) um Geschenke, Schachteln, das Lager und den Geschenkesack darzustellen. Geschenke und Schachteln, ein Lager und ein Geschenkesack sollen erzeugt werden. Das Lager und der Geschenkesack sollen befüllt werden.

Weiters sollen folgende Methoden und Funktionalitäten unterstütz werden:

Entwickeln Sie eigene Klassen für Geschenke (Bücher, Bälle, ...), mindestens zwei von unterschiedlicher Größe für jede Art von Grundflächen. Sorgen Sie dafür, dass zwischen allen Klassen für Geschenke und Schachteln, die zueinander in einer Untertypbeziehung stehen können, auch tatsächlich Untertyp- und Vererbungsbeziehungen bestehen.

Schreiben Sie eine Klasse Test, die das Lager, den Geschenkesack, alle Klassen von Geschenken und Schachteln und alle Untertypbeziehungen testet.

Warum die Aufgabe diese Form hat:

Neben einer Einstimmung auf Weihnachten beinhaltet diese Aufgabe mehrere Details, die den Einsatz bestimmter Entwurfsmuster nahelegen. Durch viele Arten von Geschenken und Schachteln ergibt sich eine einheitliche, aber umfangreiche Struktur an Untertypbeziehungen, die auch parallele Teilstrukturen enthält.

Was im Hinblick auf die Beurteilung zu beachten ist:

Der Schwerpunkt bei der Beurteilung liegt auf korrekten Untertypbeziehungen und der sinnvollen Verwendung von Entwurfsmustern. Kräftige Punkteabzüge gibt es für

Punkteabzüge gibt es auch für unnötigen (oder unnötig komplexen) Code, mangelhafte Zusicherungen und falsche Sichtbarkeit.

Wie die Aufgabe zu lösen ist:

Obwohl ein Schwerpunkt auf dem gezielten Einsatz von Entwurfsmustern liegt, werden in dieser Aufgabe wesentliche Teile des gesamten bisher durchgenommenen Vorlesungsstoffs geübt. Es ist vor allem wichtig, alle Untertypbeziehungen zu finden und die Ersetzbarkeit auf geeignete Weise (auch durch Testfälle) sicherzustellen. Überlegen Sie sich, wo Sie (abstrakte) Klassen und Interfaces verwenden. Beachten Sie die Sichtbarkeit. Wenn sinnvoll, sollen Generizität bzw. (vorgefertigte) Containerklassen benützt 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
            OOP
               Laborübung
               1. Aufgabe
               2. Aufgabe
               3. Aufgabe
               4. Aufgabe
               5. Aufgabe
               6. Aufgabe
               7. Aufgabe
               8. Aufgabe
               9. Aufgabe
               Cacao
            Typsysteme
            Seminar
         LVAs 2008 S
         LVAs 2007 W
         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
vorige Aufgabe
Fakultät für Informatik
Technische Universität Wien
Anfang | HTML 4.01 | Datenschutzerklärung | letzte Änderung: 2008-12-11 (Puntigam)