§4 Aufgaben zur Objektorientierten Modellierung

«


« Reproduktion

  1. Erklären Sie die Begriffe Generalisierung und Spezialisierung
  2. Was ist eine "abstrakte Klasse"
  3. Was ist der Unterschied zwischen der Klasse und einem Objekt?
  4. Zählen Sie die Bestandteile einer Klasse auf und erklären Sie ihre Funktion
  5. Was ist der Unterschied zwischen Vererbung und Assoziationen
  6. Welche Vorstellung liegt der objektorientierten Modellierung zugrunde?

« Analyse von Java-Quelltexten

  1. Fertigen Sie ein UML-Diagramm zu folgendem Quelltext (beachten Sie dabei, dass "String" eine eigene Klasse in Java ist, deren Eigenschaften nicht genauer beschreiben werden müssen).
    
    
    
    class Table{
    
    
    
      String[] Elemente = new String[4];
    
    
    
      public void Invert(){
    
        // dreht alle Zeichenketten um
    
      }
    
    
    
    }
    
    
    
    
  2. Gegeben ist folgender Quelltext zur Implementation eines binären Baums:
    
    
    
    class Node{
    
    
    
      Node left, right;
    
      int  key;
    
    
    
      public Node( int key ){
    
        this.key = key;
    
      }
    
    
    
      public boolean find( int key ){
    
        if (this.key == key) return true;
    
        if (key < this.key&&left!=null) return left.find( key );
    
        else if (key > this.key&&right!=null) return right.find( key );
    
        return false;
    
      }
    
    }
    
    
    
    class Tree{
    
      Node root = null;
    
    
    
      public boolean find( int key ){
    
        if (root==null) return false;
    
        else return root.find( key );
    
      }
    
    }
    
    
    
    
    Stellen Sie die jeweiligen Klassen und Assoziationen grafisch als UML-Diagramme dar.

« Modellieren von Situationen

  1. Modellieren Sie die Klassen "Transportmittel" (Eigenschaft transportiere(Ort A, Ort B), "Zug", "Fahrrad" und "Auto" mit Vererbung und Assoziationen und jeweils einer bei der Vererbung zusätzlichen charakteristischen Eigenschaft.

« Übersetzen eines Modells nach Java

    Gegeben ist das folgende UML-Diagramm.

    UML-Modell einer Schulklasse

  1. Skizzieren Sie eine Darstellung als Java-Quelltext.
  2. Erweitern Sie das Diagramm derart, dass Sie "Schüler" und "Lehrer" generalisieren.

« Lösungen

  1. Bei "Generalisierung" und "Spezialisierung" handelt es sich um Modellierungsmöglichkeiten der Vererbung zwischen Klassen. Wird z. B. die Klasse "Hochhaus" von "Gebäude" abgeleitet, so ist die Klasse "Gebäude" eine Generalisierung der Klasse "Hochhaus" und umgekehrt "Hochhaus" eine Spezialisierung von "Gebäude".
  2. Eine abstrakte Klasse ist eine Generalisierung, von der keine Objekte erzeugt werden (können). Solche Klassen dienen nur der Funktion das System der Klassen zu strukturieren und werden deshalb nicht als Objekte in einem Programm verwendet. Beispiel: Die Klassen Kreis und Rechteck können von einer abstrakten Klasse "graf. Figur" abgeleitet werden, in der Eigenschaften graf. Figuren wie "zeichnen" und "Liniendicke" enthalten sind. Diese Klasse ist aber nicht spezialisert genug um sie darstellen zu können.
  3. Eine Klasse ist eine "Objektbauvorschrift". Sobald eine Klasse entworfen wurde können beliebig viele "Instanzen"(Objekte) von ihr erzeugt werden.
    Beispiel: Eine Klasse "Zimmer" beschreibt die wesentlichen Eigenschaften eines Zimmers mit Türanzahl, Wandfarbe, Fenster und so weiter. Jedes (erzeugte) Objekt dieser Klasse repräsentiert ein eigenes Zimmer mit einer festgelegten Zahl an Türen, einer Wandfarbe und allen weiteren Eigenschaften. Objekte repräsentieren die jeweilige Existenz des Zimmers, während Klassen die allgemeine Struktur eines Zimmers beschreiben.
  4. Eine Klasse besteht aus einem Namen und zweierlei Eigenschaften: Attribute und Methoden.
    Attribute beschreiben Variablen, die den Zustand des Objektes charakterisieren.
    Methoden sind Aktionen die man mit dem Objekt ausführen kann.
    Beispiel: Eine Klasse "Fenster" besitzt die Attribute "Rahmenfarbe", "Rahmenmaterial", "Höhe", "Breite" usw. Methoden wären beispielsweise "öffne" und "schließe".
  5. Vererbung beschreibt im wesentlichen die Beziehung "ist ein" zwischen Klassen, während Assoziationen andere, frei definierbare Beziehungen(Relationen) zwischen Objekten modelliert.
  6. Die objektorientiert Modellierung setzt im Kern auf den Begriff des Objektes auf. Die Idee entspricht der physikalischen Sichtweise: Die zu modellierende Situation wird in verschiedene Objekte zerlegt, die untereinander über Nachrichten kommunizieren.
    Der Programmierer versucht dabei, Objekte so weit es geht zu "kapseln" (kleine Schnittstellen zur Umgebung), um einzelne Objekte im Laufe der Entwicklung problemlos erweitern und verändern zu können, ohne den Rest des Modells wesentlich zu beeinflussen.
  7. Table-Klasse
    UML-Diagramm für 'Table' und 'String'

  8. Node-Klasse
    UML-Diagramm für 'Node' und 'Tree'

  9. Transportmittel


  10. Der Quelltext:
    
    class Schulklasse{
    
      // Attribute
    
      String name;
    
      // Assoziationen
    
      Schueler s[] = new Schueler[35];
    
      // Methoden
    
      public void versetze(){
    
        ...
    
      }
    
    }
    
    class Schueler{
    
      // Attribute
    
      String name;
    
      // Methoden
    
      public void versetze(){
    
        ...
    
      }
    
    }
    
    class Lehrer{
    
      // Attribute
    
      String name;
    
      // Assoziationen
    
      Schulklasse k[] = new Schulklasse[8];
    
    }
    
    
    
    
  11. Erweitertes Diagramm: