Zum Menü springen.

Übungsblatt 5: Statische Datenstrukturen

An dieser Stelle der Veranstaltung findet ein thematischer Sprung statt. Eigentlich hätten die in Übungsblättern 1 bis 4 gestellten Aufgaben besser gegen Ende des Tutoriums behandelt werden sollen. Leider kam mir diese Erkenntnis damals zwei Wochen zu spät.

Aufgabe 5-1

Folgende Teilaufgaben schließen den bisher behandelten Stoff ab und bereiten den neuen Stoff vor.

  1. (weggefallen)
  2. Wiederholen Sie das Kapitel 4 „statische Datenstrukturen“ der Vorlesung „Algorithmen und Datenstrukturen 1.“
  3. Wiederholen Sie das Kapitel 2 „Algorithmen und Datenstrukturen“ der Vorlesung „Programmiersprachen 1.“
  4. Wiederholen Sie das Kapitel 3 „Grundelemente“ der Vorlesung „Programmiersprachen 1.“

Aufgabe 5-2

Sind folgende Java-Anweisungen fehlerfrei zu compilieren und auszuführen? Begründen Sie Ihre Antwort.

  1. int a;a = 5;
  2. int b = 5;
  3. int c,c = 5;
  4. float d = 5,5;
  5. float e = 5;
  6. double f1 = 5d; float f2 = f1;
  7. double g1 = 5e; float g2 = g1;
  8. double h1 = 5f; float h2 = h1;
  9. long i = 0.0;
  10. float j = 0.0;
  11. float k1 = 5f; double k2 = k1;
  12. double l = 0.0;
  13. long m = (short)Integer.MAX_VALUE;
  14. short n = (long)0;

Aufgabe 5-3

  1. Schreiben Sie eine Klasse Position, deren Objekte eine Position in einem zweidimensionalen Koordinatensystem repräsentieren. Die Klasse soll zunächst keine Objektmethoden haben. Beim Erstellen eines Objekts soll die Angabe der Koordinaten erzwungen werden.
  2. Schreiben Sie eine Klasse GeographicPosition möglichst einfach, deren Objekte eine geographische Position repräsentieren. Diese Klasse soll sich dadurch auszeichnen, dass sie über Methoden (oder Konstruktoren) zum Setzen der Position auf Werte nach Grad und Bogenminuten verfügt.
  3. Fügen Sie zur Klasse Position eine Objektmethode distanceFrom(Position) hinzu, die den Abstand zwischen zwei Positionen zurückliefert.

Aufgabe 5-4

Betrachten Sie Ihre Klassenstruktur aus Aufgabe 5-3 und das folgende Code-Fragment.

GeographicPosition p1, p2;
…  // Konstruktion der Objekte
System.out.println(p1.distanceFrom(p2));
  1. Ist dieses Code-Fragment syntaktisch korrekt? Begründen Sie Ihre Antwort.
  2. Ist dieses Code-Fragment semantisch korrekt? Begründen Sie Ihre Antwort.
  3. Was folgern Sie aus dieser Situation in Bezug auf das Prinzip der Vererbung in der objektorientierten Programmierung?

Aufgabe 5-5

Ein kartographischer Verlag legt zur Verwaltung seiner Kartenprodukte eine Klassenstruktur an. Setzen Sie diese Klassenstruktur entsprechend den folgenden Teilaufgaben in Java um!

  1. Legen Sie eine Klasse Karte mit den folgenden Objektvariablen an:

    (Vergleichen Sie diese Aufgabenstellung mit der Studienarbeit zur Vorlesung „Datenbanken und Informationssysteme 2“!)

  2. Eine bereits im Verlag vorhandene Spezifikation einer relationalen Datenbank enthält die folgenden Angaben zum Thema der Abteilungen und Mitarbeiter. Setzen Sie diesen Teil der Spezifikation in nur zwei Java-Klassen Abteilung und Mitarbeiter um! Beachten Sie dabei, dass dies sinnvollerweise nicht immer eins zu eins geschehen sollte.

    (Verwenden Sie, wie immer, Namen mit kleinen Anfangsbuchstaben für alle Variablen. In Java sollten nur Klassen Namen mit großem Anfangsbuchstaben haben.)

  3. Schreiben Sie eine Klasse Start mit einer Methode main, in der jeweils mindestens zwei Objekte jeder der in den vorhergehenden Teilaufgaben deklarierten Klassen konstruiert und vollständig mit sinnvollen Werten gefüllt werden.

  4. Erstellen Sie ein Klassenstrukturdiagramm für alle Klassen dieser Aufgabe. Vergleichen Sie dieses Diagramm mit dem Entity-Relationship–Diagramm in der Studienarbeit zur Vorlesung „Datenbanken und Informationssysteme 2“.

Zusatzaufgabe 5-6

  1. Finden Sie einen objektorientierten Ansatz, mit dem Objekte des Typs GeographicPosition aus Aufgabe 5-3 Teil (b) die Position nach Grad und Bogenminuten nicht nur setzen, sondern auch zurückliefern können! Beachten Sie, dass dafür die gleichzeitige Rückgabe mit return von mehr als einem Wert primitiven Typs erforderlich ist.
  2. Implementieren Sie den in Teilaufgabe (a) gefunden Ansatz. Die Klasse GeographicPosition soll jedoch nicht verändert werden! Benutzen Sie daher das objektorientierte Prinzip der Vererbung. (Bonuspunkte für Anwendung des Decorator-Patterns!)
  3. Erstellen Sie auch für alle Klassen aus Aufgaben 5-3 und 5-6 ein gemeinsames Klassendiagramm.

Zusatzaufgabe 5-7

Sind folgende Java-Anweisungen syntaktisch korrekt (mit den Variablen a und b deklariert mit Typ int)? Begründen Sie Ihre Antwort.

  1. a + 1 = b;
  2. boolean y = true - false;
  3. b = 1 & 2;
  4. int a = 'A';
  5. byte x = (byte)280;
  6. boolean z = (false == (10 >= 20));
$Id: HEADER.html,v 1.7 2008/01/10 16:32:18 arne Exp $
Icon  Name                                   Last modified      Size  Description
[DIR] Parent Directory - [HTM] HEADER.html 2023-10-11 10:00 7.9K [HTM] Loesung52.html 2023-10-11 10:00 7.3K Lösungsvorschlag zu Aufgabe 5-2 – Tutorium Algorithmen und Datenstrukturen 2 – WS 2007/08 [TXT] Loesung52.java 2023-10-11 10:00 921 [TXT] Loesung53a.java 2023-10-11 10:00 694 [TXT] Loesung53b.java 2023-10-11 10:00 1.3K [TXT] Loesung53c.java 2023-10-11 10:00 1.6K [HTM] Loesung54.html 2023-10-11 10:00 6.1K Lösungsvorschlag zu Aufgabe 5-4 – Tutorium Algorithmen und Datenstrukturen 2 – WS 2007/08 [TXT] Loesung55a.java 2023-10-11 10:00 847 [TXT] Loesung55b.java 2023-10-11 10:00 1.2K [TXT] Loesung55c.java 2023-10-11 10:00 4.7K [TXT] Loesung56.java 2023-10-11 10:00 3.0K [HTM] Loesung57.html 2023-10-11 10:00 4.0K Lösungsvorschlag zu Aufgabe 5-7 – Tutorium Algorithmen und Datenstrukturen 2 – WS 2007/08 [TXT] Loesung57.java 2023-10-11 10:00 751 [HTM] README.html 2023-10-11 10:00 947