Objektorientierte Programmierung
LVA 185.162, VL 2.0, 2006 W
| Ausgabe: | 09.11.2006 |
| reguläre Abgabe: | 16.11.2006, 12:45 Uhr |
| nachträgliche Abgabe: | 23.11.2006, 12:45 Uhr |
public abstract class Form {
public abstract void zeichne();
// zeichnet eine Form
}
Entwickeln Sie konkrete Unterklassen ARechteckund
AQuadratvon
Form, wobei
zeichnedie Umrisse des entsprechenden Rechtecks bzw. Quadrats als einfache ASCII-Grafik über die Standard-Ausgabe ausgibt: Ecken werden durch
+dargestellt, waagrechte Linien durch
-und senkrechte Linien durch
|. Die durch diese Umrisse eingeschlossenen Leerzeichen bilden die eigentliche Form. Zum Beispiel soll ein Quadrat mit der Seitenlänge 1 folgendermaßen gezeichnet werden:
+-+
| |
+-+
Es zählt also die Anzahl der -oben und unten sowie der
|links und rechts. Das Quadrat oder Rechteck wird in der Regel verzerrt aussehen; das ist so beabsichtigt. Jede Seite eines Rechtecks oder Quadrats hat eine ganzzahlige Länge von mindestens 1 und höchstens 10.
Es soll möglich sein, die Längen der beiden Seiten (für Instanzen von
AQuadrat
nur gemeinsam, für Instanzen von ARechteck
getrennt voneinander)
jederzeit von außen zu ändern. Aufrufe entsprechender Methoden dürfen nicht
zur Ausgabe von Fehlermeldungen oder zur Auslösung von Exceptions führen, falls
die Seitenlängen zwischen 1 und 10 liegen. Änderungen der Seitenlängen werden
beim nächsten Aufruf von zeichne
wirksam.
Schreiben Sie ein einfaches, nicht interaktives Programm (das heißt, das Programm darf keine Benutzereingaben verlangen) zum Testen Ihrer Lösung. Die Tests sollen auch die wichtigsten Grenzfälle berücksichtigen. Die Ausgabe des Testprogramms soll auch für jemanden, der das Programm nicht geschrieben hat, verständlich sein.
ARechteckein Untertyp von
AQuadratoder
AQuadratein Untertyp von
ARechteckist, oder ob überhaupt keine Untertypbeziehung zwischen diesen beiden Typen besteht. Überlegen Sie auch, ob zwischen
Formund
ARechteckbeziehungsweise
AQuadratweitere 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 auch die Ersetzbarkeit (falls gegeben) überprüft.
Stimmt diese Lösung?oder
Ist Y ein Untertyp von X?oder
Wie schaut die richtige Lösung aus?) werden die TutorInnen aber nur ausweichend (mit einem Hinweis auf das Skriptum oder eine allgemeine Erklärung des Ersetzbarkeitsprinzips) beantworten.
Aufgabe3in Ihrem Verzeichnis auf dem Übungsrechner b3. Das Programm soll von diesem Ordner aus durch
java Testaufrufbar sein. Schreiben Sie nicht mehr als eine Klasse in jede Datei. Der Ordner soll zum Zeitpunkt der Abgabe (16.11.2006, 12:45 Uhr) und der nachträglichen Abgabe (23.11.2006, 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. Vermeiden Sie die Verwendung von Ordnern innerhalb des Abgabeordners
Aufgabe3.