SS 1998, FB MNI,  Prof. Dr. Franzen
 

          Übungsblatt 5 - SW-Technik 1 SS 98 

  1. Die Mitglieder der ADT Boxliga treffen regelmäßig in Kämpfen aufeinander, um ihre Rangfolge zu bestimmen. Ein Kampf wird zwischen zwei Boxern ausgetragen und endet mit einem Gewinner und einem Verlierer oder mit einem Unentschieden. Geht der Kampf nicht unentschieden aus, wird das Ergebnis des Kampfes zur Neufestlegung der Rangfolge in der Liga benutzt: Der Gewinner wird als besser erklärt als der Verlierer und als alle anderen Boxer, die zuvor schlechter als der Verlierer standen. Andere Rangfolgen bleiben unverändert. Spezifizieren Sie dieses Problem als eine Menge abstrakter Datentypen: ADTLiga, Boxer, Kampf. (Hinweis: Führen Sie keinen expliziten Begriff "Rangfolge" ein, sondern modellieren Sie dieses Konzept durch eine Funktion "besser", die ausdrückt, ob eine Kämpfer in der Liga besser steht als ein anderer.) 
  2. Analysieren den folgenden Auszug einer Systemspezifikation eines Programms zur Simulation einer Portalrobotersteuerung ( vgl. Pomberger/Blaschek, Software Engineering", S. 126):
  3. Ein Portalroboter, bestehend aus einem Fundament und einem Portal mit einem vertikalem Greifarm, soll lineare Bewegungen ausführen können und nach jeder Teilbewegung im Aufriß, Grundriß, Seitenriß und Schrägriß gezeichnet werden. Das Fundament besteht aus zwei Schienen, das Portal aus drei Balken (zwei vertikalen und einem horizontalen). Der Greifarm soll durch einen Balken und eine Kugel (für den Greifer) dargestellt werden.
    Verwenden Sie die Methode von Abbot, um einen Klassenentwurf, bestehend aus
    1. Schnittstellenbeschreibung der relevanten Klassen
    2. Vererbungshierarchie
    für die Anzeigekomponente dieses Programms zu finden. 
  4. Um aus einer Liste Elemente zu entfernen, benötigt man eine Methode remove. Gehört diese Methode zur Klasse Liste oder zur Klasse Element? Heißt es also list.Remove(element) oder aber element.removeFrom(list)
  5. Zur Vererbungsbeziehung:
    1. Ist Quadrat eine Unterklasse von Rechteck oder umgekehrt?
    2. Halten Sie die untenstehende Modellierung der Klasse Linie als Erben der Klasse Punkt für korrekt?
    3.            class Punkt { ...
                   int x, y, z; // kartesische Koordinaten
                 ...}
      
                 class Linie extends Punkt { ...
                   int x1, y1, z1; // kartesische Koordinaten des zweiten Linienpunktes
                 ...}
    4. Betrachten Sie die folgende Klassenhierarchie:
    5.            class Rectangle                 { ...}
                 class RedRectangle  : public Rectangle { ...}
                 class BlueRectangle : public Rectangle { ...}
      Halten Sie diesen Entwurf für gelungen? Welche Alternative bietet sich an?

  6. ANSI C enthält die folgenden vordefinierten Datentypen für Zahlen: char, double, float, int, long, long double, short. Einige davon können als vorzeichenbehaftet (signed) oder vorzeichenfrei (unsigned) vereinbart werden. Bestimmen Sie die Vererbungshierarchie dieser Datentypen. 
  7. Zeichnen Sie jeweils ein Klassendiagramm, d.h. Klassen mit relevanten Attributen und den statischen Beziehungen (Vererbung, Aggregation oder Assoziation) mit ihren Kardinalitäten:
    1. Jeder Mensch ist das Kind einer Frau und eines Mannes. Eine Frau ist ein Mensch. Ein Mann ist ein Mensch. Ein Mensch kann beliebig viele oder keine Kinder haben.
    2. Ein Mensch (des Mittelalters) ist ein Adliger oder ein Bauer. Jedem Adligen ist eine Gruppe von Menschen unterstellt. Jeder Mensch hat einen Namen, eine Adresse und einen Adligen, dem er unterstellt ist, es sei denn, sie oder er ist der König. Könige sind Adlige und Menschen, aber keine Bauern.