Fachhochschule Südwestfalen - Homepage von Peter Ziesche
Fachhochschule Südwestfalen - Homepage von Peter Ziesche
Fachhochschule Südwestfalen - Homepage von Peter Ziesche
Erfolgreiche ePaper selbst erstellen
Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.
Einführung in die Programmierung<br />
Sommersemester 2005 – 2. Semester – Übungblatt Nr. 1<br />
Aufgabe 1<br />
Eine Anwendung zur Kundenverwaltung besteht aus den folgenden Klassen:<br />
public class Person<br />
{<br />
String Anrede;<br />
String Vorname;<br />
String Name;<br />
Anschrift PrivatAnschrift;<br />
Anschrift DienstAnschrift;<br />
}<br />
public class Anschrift<br />
{<br />
String Strasse;<br />
String Plz;<br />
String Ort;<br />
}<br />
public class Firma<br />
{<br />
String Name;<br />
Person Ansprechpartner;<br />
Anschrift FirmenAnschrift;<br />
}<br />
Zeichnen Sie das Speicherabbild, dass durch die folgende main()-Methode erzeugt wird.<br />
Tragen Sie dort neben den Objekten und den Referenzen zwischen ihnen auf jeden Fall auch die<br />
lokalen Variablen ein und deuten Sie durch einen Pfeil an, welche Objekte <strong>von</strong> ihnen<br />
referenziert werden.<br />
public static void main( String[] args )<br />
{<br />
Person p1 = new Person();<br />
p1.Anrede = “Herr”;<br />
p1.Vorname = “Willi”;<br />
p1.Name = “Müller”;<br />
Anschrift a1 = new Anschrift();<br />
a1.Strasse = “Markstr.”;<br />
a1.Plz = “44787”;<br />
a1.Ort = “Bochum”;<br />
Anschrift a2 = new Anschrift();<br />
a2.Strasse = “Steeler Str.”;<br />
<strong>Fachhochschule</strong> <strong>Südwestfalen</strong><br />
<strong>Peter</strong> <strong>Ziesche</strong><br />
E-Mail: mail@peterziesche.de
}<br />
a2.Plz = “44780”;<br />
a2.Ort = “Essen”;<br />
p1.PrivatAnschrift = a1;<br />
p1.DienstAnschrift = a2;<br />
Firma f1 = new Firma();<br />
f1.Name = “Ich AG”;<br />
f1.Ansprechpartner = p1;<br />
f1.FirmenAnschrift = a2;<br />
Person p2 = new Person();<br />
p2.Anrede = “Frau”;<br />
p2.Vorname = “Claudia”;<br />
p2.Name = “Schiller”;<br />
p2.PrivatAnschrfit = a1;<br />
p2.DienstAnschrift = new Anschrift();<br />
p2.DienstAnschrift.Strasse = “Hauptstr.”;<br />
p2.DienstAnschrift.Plz = “60309”;<br />
p2.DienstAnschrift.Ort = “Frankfurt”;<br />
Nun umgekehrt: Schreiben Sie eine main()-Methode, die das folgende Speicherbild erzeugt<br />
(Beachten Sie, dass es außer firmaA und firmaB keine lokalen Variablen in main() geben<br />
soll. Sie müssen statt Anschrift as = new Anschrift(); also z.B.<br />
firmaA.FirmenAnschrift = new Anschrift(); schreiben).<br />
Aufgabe 2<br />
:Firma<br />
Name = "IT GmbH"<br />
Ansprechpartner =<br />
Firmenanschrift =<br />
firmaA<br />
:Person<br />
Anrede = "Frau"<br />
Vorname = "Maria"<br />
Name = "Schreiber"<br />
PrivatAnschrift =<br />
DienstAnschrift =<br />
:Anschrift<br />
Strasse = "Dorstener Str."<br />
Plz = "44809"<br />
Ort = "Bochum"<br />
:Anschrift<br />
Strasse = "Unistr."<br />
Plz = "44787"<br />
Ort = "Bochum"<br />
:Anschrift<br />
Strasse = "Hellweg"<br />
Plz = "44807"<br />
Ort = "Bochum"<br />
:Person<br />
Anrede = "Frau"<br />
Vorname = "Claudia"<br />
Name = "Wagner"<br />
PrivatAnschrift =<br />
DienstAnschrift =<br />
:Firma<br />
Name = "Spielzeug AG"<br />
Ansprechpartner =<br />
Firmenanschrift =<br />
firmaB
Ein Automobilhersteller produziert Autos am Fließband. Jedes Auto durchläuft nacheinander<br />
mehrere Stationen und weiß immer genau, an welcher Station es sich zurzeit befindet. Jede<br />
Station hat eine Referenz auf die folgende Station (Ausnahme: die letzte Station).<br />
public class Station<br />
{<br />
String Bezeichnung;<br />
Station Folgestation;<br />
}<br />
public class Auto<br />
{<br />
int ProduktionsNummer;<br />
Station aktuelleStation;<br />
}<br />
Schreiben Sie eine Methode void weiter() in der Klasse Auto. Sie soll das Auto zur<br />
nächsten Station weitertakten, d.h. die Eigenschaft aktuelleStation auf die Folgestation<br />
setzen. Sie erkennen die letzte Station, zu der es keine Folgestation gibt, mit der Abfrage<br />
if( aktuelleStation.Folgestation == null ). Steht das Auto an der letzten<br />
Station, soll die Methode nichts tun.<br />
Schreiben Sie eine Methode boolean istFertig(), die true zurückliefert, wenn das<br />
Auto an der letzten Station steht.<br />
Zeichnen Sie das Speicherabbild, das durch die folgende main()-Methode erzeugt wird.<br />
public static void main( String[] args )<br />
{<br />
Station s1 = new Station();<br />
s1.Bezeichnung = “Motoreinbau”;<br />
Station s2 = new Station();<br />
s2.Bezeichnung = “Lackieren”;<br />
Station s3 = new Station();<br />
s3.Bezeichnung = “Räder montieren”;<br />
Station s4 = new Station();<br />
s4.Bezeichnung = “Scheiben einsetzen”;<br />
}<br />
s2.Folgestation = s4;<br />
s4.Folgestation = s1;<br />
s1.Folgestation = s3;<br />
Auto a1 = new Auto();<br />
a1.ProduktionsNummer = 356;<br />
a1.aktuelleStation = s2;<br />
Auto a2 = new Auto();<br />
a2.ProduktionsNummer = 357;<br />
a2.aktuelleStation = s1;<br />
Auto a3 = new Auto();<br />
a3.ProduktionsNummer = 358;<br />
a3.aktuelleStation = s1;
Ergänzen Sie am Ende der main()-Methode Code, der das Auto an der ersten Station bis zur<br />
letzten durchtaktet. Dieser Code soll unabhängig da<strong>von</strong> sein, wie viele Stationen es gibt.<br />
Verwenden Sie eine while-Schleife und die Methoden istFertig() und weiter() der<br />
Klasse Auto. Geben Sie anschließend für jedes Auto die Bezeichnung der aktuellen Station<br />
aus.<br />
Aufgabe 3<br />
Es soll eine einfache Kurssteuerung für ein Flugzeug entwickelt werden. Ein Flugzeug hat<br />
immer einen bestimmten Kurs, der durch eine Eigenschaft dargestellt wird. Entsprechend des in<br />
der in der Fliegerei verwendeten Systems ist Kurs 0 Richtung Norden, Kurs 90 Richtung Osten,<br />
Kurs 180 Richtung Süden und Kurs 270 Richtung Westen.<br />
Schreiben Sie die Klasse Flugzeug mit einer Eigenschaft Kurs und folgenden Methoden:<br />
void drehen(int grad)<br />
Ein positiver Grad-Wert ändert den Kurs im Uhrzeigersinn um den angegebenen Betrag, ein<br />
negativer Wert gegen den Uhrzeigersinn. Beachten Sie: 359 ist die höchste Wert für den Kurs.<br />
Wenn die Maschine sich noch einen Grad weiter im Uhrzeigersinn dreht, steuert sie wieder<br />
Kurs 0 Grad (Nord). Analog fliegt ein Flugzeug, das sich <strong>von</strong> Kurs 005 Grad um 10 Grad gegen<br />
den Uhrzeigersinn dreht, auf neuem Kurs 355 Grad. Die Methode soll die Eigenschaft Kurs, so<br />
ändern, dass anschließend der neue Kurs gespeichert wird.<br />
void neuerKurs( int grad )<br />
Die Methode soll das Flugzeug auf den angegebenen Kurs drehen. Gültige Werte für grad<br />
liegen also zwischen 0 und 359. Die Methode soll berechnen, um wie viel Grad sich die<br />
Maschine drehen muss, um vom aktuellen auf den neuen Kurs zu kommen. Mit dem<br />
berechneten Wert soll anschließend die Methode drehen() aufgerufen werden. Es soll nicht<br />
direkt die Eigenschaft Kurs verändert werden. Beachten Sie, dass man sowohl durch<br />
Rechtsdrehung als auch durch Linksdrehung auf einen Kurs kommen kann. Sie sollen<br />
neuerKurs() so schreiben, dass das Flugzeug sich möglichst wenig drehen muss. Beispiel:<br />
um <strong>von</strong> Kurs 180 auf Kurs 190 zu kommen, soll sich die Maschine nach rechts drehen. Um <strong>von</strong><br />
Kurs 010 auf Kurs 350 zu kommen, soll sie sich nach links drehen.<br />
void nachNorden()<br />
Die Methode dreht das Flugzeug nach Norden. Sie können diese Methode sehr kurz und einfach<br />
halten, wenn Sie geschickt die beiden vorangegangenen Methoden aufrufen.<br />
void nachOsten()<br />
Die Methode dreht das Flugzeug nach Osten. Sie können diese Methode sehr kurz und einfach<br />
halten, wenn Sie geschickt die beiden vorangegangenen Methoden aufrufen.<br />
void nachWesten()<br />
Die Methode dreht das Flugzeug nach Westen. Sie können diese Methode sehr kurz und einfach<br />
halten, wenn Sie geschickt die beiden vorangegangenen Methoden aufrufen.<br />
void nachSueden()<br />
Die Methode dreht das Flugzeug nach Süden. Sie können diese Methode sehr kurz und einfach<br />
halten, wenn Sie geschickt die beiden vorangegangenen Methoden aufrufen.<br />
Schreiben Sie eine main()-Methode, die das Flugzeug <strong>von</strong> Frankfurt über New York (Kurs<br />
280), <strong>von</strong> dort nach Los Angeles (Kurs 260) und <strong>von</strong> dort schließlich nach Caracas (Kurs 170)<br />
fliegen lässt.