Objektorientierte Programmierung
LVA 185.162, VL 2.0, 2005 W
| Ausgabe: | 03.11.2005 |
| reguläre Abgabe: | 10.11.2005, 12:45 Uhr |
| nachträgliche Abgabe: | 17.11.2005, 12:45 Uhr |
public abstract class Vieleck {
public abstract void zeichne();
// zeichnet ein Vieleck
}
Entwickeln Sie konkrete Unterklassen DreieckRWund
DreieckRWGSvon
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
DreieckRWGSsind zusätzlich gleichschenkelig, das heißt, die beiden Schenkel (= senkrechte und waagrechte Seite) sind gleich lang. Instanzen von
DreieckRWstellen also die linke obere Hälfte von entlang der Diagonale geteilten Rechtecken dar, und Instanzen von
DreieckRWGSjene von Quadraten. Längen der Schenkel müssen in jedem Fall ganzzahlig und größer als 0 sein. Die Methode
zeichnein diesen beiden Klassen soll mit dem Zeichen
Xgefü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
DreieckRWGSnur gemeinsam, für Instanzen von
DreieckRWgetrennt 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
zeichnewirksam. 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
.