8.6 Übungen
8.6 Übungen
8.6.1 Aufruf von überschriebenen MethodenImplementieren sie die Klasse TopClass mit den folgenden Eigenschaften
|
Implementieren Sie die Klasse LowClass welche aus TopClass abgeleitet mit den folgenden Eigenschaften
Implementieren Sie ein Hauptprogramm, dass folgende Befehle ausführt
|
Zu beobachten:
- Wieviel Instanzen welcher Klasse (TopClass, LowClass) wurden erzeugt?
- Wieviel Instanzen wurden insgesamt erzeugt?
- Was geschieht wenn das Attribut zaehler der Klasse LowClass gelöscht wird?
Methode zum Testen
Nutzen Sie die main() Methode der Klasse LowClass zum Testen:
public static void main(String[] args) { int size = 3; TopClass[] feldT = new TopClass[size]; LowClass[] feldL = new LowClass[size]; for ( int i=0; i<size; i++) feldT[i]= new TopClass(); for ( int i=0; i<size; i++) { feldL[i]= new LowClass(); feldL[i].test(); } System.out.println(TopClass.getZaehler() + " Instanzen TopClass generiert, "+ LowClass.getZaehler() + " Instanzen LowClass generiert"); }
8.6.2 Vererbung und Assoziation
Implementieren Sie eine Klasse Point mit den folgenden Eigenschaften:
- private Fliesskommaattribute für x und y Koordinate
- öffentlicher Konstruktor mit x und x als Parameter
- öffentliche setXY(x,y) Methode
- Auslesemethoden getX(), getY()
- print() Methode die eine Zeichenkette mit allen Werten liefert
- überschreiben die die toString() Methode von Object so das sie alle Werte für Point ausgibt.
Implementieren Sie eine Klasse CircleIsPoint die die Eigenschaften der Klasse Point hat und zusätzlich einen Radius verwalten kann mit folgenden Eigenschaften:
- erbt von Point
- das des Zentrum des Kreises sind die (x,y) Koordinaten von Point
- privates Fliesskomma Attribut für den Radius radius
- getRadius() und setRadius(r) Methoden zum Pflegen des Attributs
- öffentlicher Konstruktor für (x,y) Zentrum und Radius
- print() Methode die eine Zeichenkette mit allen Werten liefert
- überschreiben die die toString() Methode von Object so das sie alle Werte für Point ausgibt.
Implementieren Sie eine Klasse CircleHasPoint die die Eigenschaften der Klasse Point hat und zusätzlich einen Radius verwalten kann mit folgenden Eigenschaften:
- erbt nicht von Point
- benutzt privates Attribut vom Referenztyp auf Point
- das des Zentrum des Kreises sind die (x,y) Koordinaten von Point
- alle öffentlichen Methoden sind identisch zu CircleIsPoint!
Was unterscheidet beide Implementierungen? Welche ist die bessere Implementierung?
Klasse Main
Die drei obigen Klassen sollten mit der folgenden main() Methode in CircleIsPoint funktionieren:
package s1.block9; public class Main { public static void main(String[] args) { Point p1 = new Point (2.2, 3.3); Point p2 = new Point (2.22, 3.33); CircleIsPoint cip1 = new CircleIsPoint(4.4,5.5,6.6); p1.print(); cip1.print(); CircleHasPoint chp1 = new CircleHasPoint(44.4,55.5,66.6); chp1.print(); } }
8.6.3 Flughafenbeispiel
Die Referenzimplementierung ist im GitHub Repository dhbwjava im Block 8 zu finden.
- 9452 views