Objektorientierte Programmierung
LVA 185.162, VL 2.0, 2005 W

4. Übungsaufgabe

Themen:

Untertypbeziehungen und Verhalten, Zusicherungen

Termine:

Ausgabe: 03.11.2005
reguläre Abgabe: 10.11.2005, 12:45 Uhr
nachträgliche Abgabe: 17.11.2005, 12:45 Uhr

Abgabeverzeichnis:

Aufgabe4

Programmaufruf:

java Test

Grundlage:

Skriptum bis Seite 70

Aufgabe:

Folgende abstrakte Klasse sei gegeben:
    public abstract class Vieleck {
        public abstract void zeichne();
            // zeichnet ein Vieleck
    }
Entwickeln Sie konkrete Unterklassen DreieckRW und DreieckRWGS von Vieleck. Instanzen dieser beiden Klassen sollen rechtwinkelige Dreiecke darstellen, wobei je eine Seite waagrecht und eine senkrecht steht und der rechte Winkel links oben liegt. Instanzen von DreieckRWGS sind zusätzlich gleichschenkelig, das heißt, die beiden Schenkel (= senkrechte und waagrechte Seite) sind gleich lang. Instanzen von DreieckRW stellen also die linke obere Hälfte von entlang der Diagonale geteilten Rechtecken dar, und Instanzen von DreieckRWGS jene von Quadraten. Längen der Schenkel müssen in jedem Fall ganzzahlig und größer als 0 sein. Die Methode zeichne in diesen beiden Klassen soll mit dem Zeichen X gefüllte Zeilen in die Standardausgabe schreiben, so dass sich eine Zeichnung des Dreiecks ergibt: Die Anzahl der Zeilen soll der Länge der senkrechten Seite entsprechen, die Anzahl der Zeichen in der ersten Zeile der Länge der waagrechten Seite. Die Anzahl der Zeichen in den weiteren Zeilen ist jeweils entsprechend dem Verhältnis zwischen waagrechter zu senkrechter Seite zu reduzieren, damit der Eindruck einer geraden dritten Seite des Dreiecks entsteht; die Länge jeder Zeile ist wenn nötig auf ganze Zahlen aufzurunden (nicht abzurunden). Es soll möglich sein, die Längen der beiden Schenkel (für Instanzen von DreieckRWGS nur gemeinsam, für Instanzen von DreieckRW getrennt voneinander) jederzeit von außen zu ändern. Aufrufe entsprechender Methoden dürfen nicht zur Ausgabe von Fehlermeldungen oder Auslösung von Exceptions führen. Änderungen der Schenkellängen werden beim nächsten Aufruf von zeichne wirksam. Schreiben Sie auch ein einfaches, nicht interaktives Programm (verlangt keine Benutzereingaben) zum Testen Ihrer Lösung.

Ziel der Aufgabe ist das Verstehen von Untertypbeziehungen (Skriptum bis Seite 70). Überlegen Sie also genau, ob DreieckRW ein Untertyp von DreieckRWGS oder DreieckRWGS ein Untertyp von DreieckRW ist, oder ob überhaupt keine Untertypbeziehung zwischen diese beiden Typen besteht. Überlegen Sie auch, ob zwischen Vieleck und DreieckRW beziehungsweise DreieckRWGS weitere abstrakte oder konkrete Klassen stehen sollen. Wenn ja, schreiben Sie diese. Verwenden Sie Vererbung (extends-Klausel) genau dort wo eine Untertypbeziehung besteht. Versehen Sie Klassen und Methoden mit Zusicherungen in Form von Kommentaren. Achten Sie darauf, dass Ihr Testprogramm die wichtigsten Fälle abdeckt und auch die Ersetzbarkeit (falls gegeben) überprüft.

Schreiben Sie Ihre Lösung in den bereits existierenden Ordner Aufgabe4 in Ihrem Verzeichnis auf dem Übungsrechner b3. Das Programm soll von diesem Ordner aus durch java Test aufrufbar sein; das heißt, die Methode main soll in der Klasse Test in der Datei Test.java (die Sie selbst schreiben) stehen. Schreiben Sie nicht mehr als eine Klasse in jede Datei. Der Ordner soll zum Zeitpunkt der Abgabe (10.11.2005, 12:45 Uhr) und der nachträglichen Abgabe (17.11.2005, 12:45 Uhr) 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 Ordnern innerhalb von Aufgabe4.

Wichtiger Hinweis:

Für Vererbungsbeziehungen, die keine Untertypbeziehungen sind, sowie für vergessene Untertypbeziehungen (das ist, es wird keine Vererbung verwendet obwohl Untertypbeziehungen angebracht wären) gibt es sehr kräftige Punkteabzüge. Auch für fehlende oder widersprüchliche Zusicherungen (das heißt, für die Verwendung der Methoden und öffentlich zugreifbaren Variablen nötige Informationen sind nicht in Form von Kommentaren angegeben oder die Kommentare widersprechen sich) gibt es kräftige Punkteabzüge. Dagegen spielt die direkte Codewiederverwendung durch Vererbung für diese Aufgabe nur eine sehr geringe Rolle; für eine nicht wahrgenommene Gelegenheit zur direkten Vererbung von Code werden höchstens ganz wenige Punkte abgezogen.
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
         LVAs 2007 S
         LVAs 2006 W
         LVAs 2006 S
         LVAs 2005 W
            OOP
               Laborübung
               1. Aufgabe
               2. Aufgabe
               3. Aufgabe
               4. Aufgabe
               5. Aufgabe
               6. Aufgabe
               7. Aufgabe
               8. Aufgabe
               9. Aufgabe
            Typsysteme
            Seminar, WA
         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: 2005-11-03 (Puntigam)