Aufgabe 1: Nassi-Shneiderman-Diagramm eines Programmes mit

Werbung
Block3, Aufgabe 1: Klassenvariablen
Schreiben Sie eine Klasse Pkt für einen zweidimensionalen Punkt. Die Koordinaten
eines Punktes sollen private sein. Es soll eine Klassenvariable anzahl geben,
welche die Anzahl der erzeugten Punkte zählt und public ist. Als Methoden sollen zur
Verfügung stehen:



eine Methode print() zur Ausgabe der beiden Koordinaten
ein Konstruktor mit 2 Parametern
eine Methode main() zum Testen
In der Methode main() sollen ein Punkt mit den Koordinaten (1|1) und ein Punkt mit den
Koordinaten (2|2) angelegt werden. Bei jedem Erzeugen eines Punktes soll die
Klassenvariable anzahl um 1 hochgezählt werden. Vor und nach dem Erzeugen eines
Punktes ist anzahl am Bildschirm auszugeben.
Block3, Aufgabe 2: Klassenvariablen
Nehmen Sie die Lösung von Aufgabe 1 und verlagern Sie die Methode main() in die Klasse
TestPunkt2. Die Klasse Pkt soll in die Klasse Punkt2 ohne eine Methode main()
umgeschrieben werden.
Versuchen Sie in der Methode main() der Klasse TestPunkt2, ob Sie über die Referenz
p1 auf den Punkt1 die Koordinaten ändern können durch
p1.x = 5;
Ändern den Zugriffsmodifikator von private auf public und versuchen Sie es erneut.
Versuchen Sie dasselbe in der Methode main() der Klasse Pkt. Gibt es einen Unterschied
?
Block3, Aufgabe 3: Klassenvariablen
Verbessern Sie Ihr Programm, indem Sie das Hochzählen der Punktanzahl im Konstruktor
durchführen.
Block3, Aufgabe 4: Klassenvariablen und Klassenmethoden (optional)
Ergänzen Sie die Klasse Dampfer. Bei jedem Erzeugen eines Dampfers soll
anzahlDampfer um 1 erhöht werden. Jeder Dampfer soll beim Erzeugen eine eindeutige
Nummer dampferNummer erhalten.
Mit der Methode
public void setzeAnzahlSitzplaetze (int sitzplaetze)
soll für einen neu erzeugten Dampfer die anzahlSitzplaetzeDampfer gesetzt werden.
Dabei soll auch die anzahlSitzplaetzeFlotte aktualiert werden.
Aufgaben Java-Kurs Block 3, 2002
1
public class Dampfer
{
private int dampferNummer = 0;
private int anzahlSitzplaetzeDampfer = 0;
private static int anzahlDampfer = 0;
private static int anzahlSitzplaetzeFlotte = 0;
public Dampfer()
{
. . . . .
}
public static int gibAnzahlDampfer()
{
// Klassenmethoden hat Zugriff auf Klassenvariable
return anzahlDampfer;
}
public static int gibAnzahlSitzplaetzeDerFlotte()
{
return anzahlSitzplaetzeFlotte;
}
public void setzeAnzahlSitzplaetze (int sitzplaetze)
{
. . . . .
// Instanzmethode hat Zugriff auf Instanz- und Klassen// variablen
System.out.println
("Sitzplaetze von Dampfer Nr. "+dampferNummer+": "
+anzahlSitzplaetzeDampfer+ ", der Flotte: "
+anzahlSitzplaetzeFlotte);
}
public static void main (String args[])
{
// Klassenvariablen ausgeben über Klassennamen
. . . .
Dampfer michelangelo = new Dampfer();
Dampfer leonardoDaVinci = new Dampfer();
// Sitzplaetze festlegen
michelangelo.setzeAnzahlSitzplaetze (100);
leonardoDaVinci.setzeAnzahlSitzplaetze (150);
// Klassenvariablen ausgeben über Objekte
. . . . .
}
}
Block3, Aufgabe 5: Klassenvariablen und Klassenmethoden (optional)
Schreiben Sie die Methode
public void setzeAnzahlSitzplaetze (int sitzplaetze)
so um, dass es auch möglich wird, einen Dampfer umzubauen, wie in folgendem Beispiel:
michelangelo.setzeAnzahlSitzplaetze (100);
//michelangelo wird umgebaut
System.out.println ("Michelangelo wird umgebaut");
Aufgaben Java-Kurs Block 3, 2002
2
michelangelo.setzeAnzahlSitzplaetze (200);
// Flotte abfragen
System.out.println ("Flottengroesse: "
+ michelangelo.gibAnzahlDampfer()
+ " Dampfer, mit insgesamt "
+ leonardoDaVinci.gibAnzahlSitzplaetzeDerFlotte()
+ " Sitzplaetze");
Testen Sie ihr Programm.
Block3, Aufgabe 6: Aggregierte Objekte. Die Klassen Dreieck und Punkt
Schreiben Sie eine Klasse Punkt, eine Klasse Drei für ein Dreieck und eine Klasse
TestDrei zum Testen des Dreiecks. Die Klasse Drei soll drei Referenzen auf Punkte
enthalten, die die Eckpunkte des Dreiecks sind.
Klasse Dreieck
Referenz auf Punkt1
Punkt1
Referenz auf Punkt2
Punkt2
Referenz auf Punkt3
Punkt3
Methoden der
Klasse
umfang()
entfernung()
Das Programm erlaubt es, mit Hilfe der Methode umfang() den Umfang des Dreiecks zu
bestimmen. Die Methode umfang() ruft als Hilfsfunktion die Methode entfernung() auf,
die den Abstand zwischen 2 Punkten berechnet. Es liegt auf der Hand, dass der Umfang des
Dreiecks die Summe der 3 Entfernungen zwischen den 3 Eckpunkten ist, mit anderen
Worten, der Umfang u ist gegeben durch u = s1 + s2 + s3.
s1
s2
s3
Wer sich an den Satz des Pythagoras noch erinnert, dem ist klar, dass der Abstand
zwischen 2 Punkten i und j gegeben ist durch die Quadratwurzel von (yj - yi)2 - (xj - xi)2
Aufgaben Java-Kurs Block 3, 2002
3
Pj (xj , yj )
yj - yi
Pi (xi , yi )
xj - xi
Ergänzen Sie die fehlenden Teile des Programms.
//Datei Punkt.java
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
// Bitte ignorieren
public class Punkt {
double x;
double y;
double getX ()
{
. . . . .
}
void setX (double u)
{
. . . . .
}
double getY ()
{
. . . . .
}
void setY (double v)
{
. . . . .
}
public Punkt ()
//Ignorieren Sie den Konstruktor
//in der heutigen Uebung
//Benutzen Sie ihn einfach unbesehen
{
InputStreamReader inp = new InputStreamReader (System.in);
BufferedReader buffer = new BufferedReader (inp);
try
{
String eingabeX;
String eingabeY;
System.out.println ("Gib den x-Wert ein: ");
eingabeX = buffer.readLine();
System.out.println ("Gib den y-Wert ein: ");
eingabeY = buffer.readLine();
try
{
Double xKoord = Double.valueOf(eingabeX);
x = xKoord.doubleValue();
Aufgaben Java-Kurs Block 3, 2002
4
Double yKoord = Double.valueOf(eingabeY);
y = yKoord.doubleValue();
}
catch (NumberFormatException nFExcept)
{
System.out.println (nFExcept.toString());
System.exit(1);
}
}
catch (IOException ioexcept)
{
System.out.println (ioexcept.toString());
System.exit(1);
}
}
};
//Datei Drei.java
public class Drei {
Punkt p1;
Punkt p2;
Punkt p3;
public Drei ()
{
System.out.println ("Dreieck wird erzeugt aus 3 Eckpunkten");
p1 = . . . .;
p2 = . . . .;
p3 = . . . .;
}
double entfernung (Punkt q1, Punkt q2)
{
return Math.sqrt ( (double)
(q1.getX() - q2.getX()) *
(q1.getX() - q2.getX()) +
(q1.getY() - q2.getY()) *
(q1.getY() - q2.getY()));
}
double umfang ()
{
. . . . .
}
};
//Datei: TestDrei.java
public class TestDrei
{
public static void main (String[] args)
{
Drei d = . . . . ;
System.out.println ("\nDas Dreieck hat den Umfang " +
. . . . );
}
}
Aufgaben Java-Kurs Block 3, 2002
5
Herunterladen