Benutzer-Werkzeuge

Webseiten-Werkzeuge


listen:trennungstrukturdaten:start

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen RevisionVorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
listen:trennungstrukturdaten:start [2024/09/27 07:09] Martin Pabstlisten:trennungstrukturdaten:start [2024/09/27 08:03] (aktuell) – [Klassendiagramm] Martin Pabst
Zeile 15: Zeile 15:
   * {{:listen:trennungstrukturdaten:aggregation.png?150|}} **Aggregation** (//aggregation//): Ein Objekt der Klasse A **enthält** Objekt(e) der Klasse B. \\ \\   * {{:listen:trennungstrukturdaten:aggregation.png?150|}} **Aggregation** (//aggregation//): Ein Objekt der Klasse A **enthält** Objekt(e) der Klasse B. \\ \\
   * {{:listen:trennungstrukturdaten:composite.png?150|}} **Komposition** (//composition//): Ein Objekt der Klasse A **besteht aus** Objekt(en) der Klasse B. \\ \\   * {{:listen:trennungstrukturdaten:composite.png?150|}} **Komposition** (//composition//): Ein Objekt der Klasse A **besteht aus** Objekt(en) der Klasse B. \\ \\
-  * {{:listen:trennungstrukturdaten:association.png?150|}} **Assoziation** (//association//): Objekte der Klasse A stehen auf irgendeine Art in Beziehung zu Objekten der Klasse B. Ein Verb über der Linie zusammen mit einem Pfeil oder > bezeichnet die Beziehung näher. \\ \\+  * {{:listen:trennungstrukturdaten:association.png?150|}} **Assoziation** (//association//): Objekte der Klasse A stehen auf irgendeine Art in Beziehung zu Objekten der Klasse B. Ein Verb/Nomen über der Linie zusammen mit einem Pfeil oder > bezeichnet die Beziehung näher. \\ \\
   * {{:listen:trennungstrukturdaten:inheritance.png?150|}} **Vererbung** (//inheritance//): A ist Unterklasse von B. \\ \\   * {{:listen:trennungstrukturdaten:inheritance.png?150|}} **Vererbung** (//inheritance//): A ist Unterklasse von B. \\ \\
 +
 +[[https://www.visual-paradigm.com/guide/uml-unified-modeling-language/uml-aggregation-vs-composition/|Hier eine schöne, anschauliche Erklärung zur Unterscheidung der Beziehungsarten]].
  
 Bei Aggregation, Komposition und Assoziation ist es oft hilfreich, die **Kardinalität** der Beziehung durch Zahlenangaben wie ''0, 1'' oder ''*'' ("0 bis unendlich") anzugeben. \\ \\  Bei Aggregation, Komposition und Assoziation ist es oft hilfreich, die **Kardinalität** der Beziehung durch Zahlenangaben wie ''0, 1'' oder ''*'' ("0 bis unendlich") anzugeben. \\ \\ 
  
 **Vorgehen in Prüfungen (auch Abitur):** \\  **Vorgehen in Prüfungen (auch Abitur):** \\ 
-Der Lehrplan unterscheidet die Fälle Aggregation, Komposition und Assoziation bisher nicht in der Symbolik, auch in den Musterlösungen zum Abitur wird in allen drei Fällen nur die Symbolik der Assoziation (Linie mit Verb drüber und Pfeil für die Leserichtung) verwendet. Entsprechend dürfen auch Sie in schriftlichen Prüfungen verfahren. \\  +Der Lehrplan unterscheidet die Fälle Aggregation, Komposition und Assoziation bisher nicht in der Symbolik, auch in den Musterlösungen zum Abitur wird in allen drei Fällen nur die Symbolik der Assoziation (Linie mit Verb/Nomen dran und Pfeil für die Leserichtung) verwendet. Entsprechend dürfen auch Sie in schriftlichen Prüfungen verfahren. \\  
-**Das Symbol für Vererbung (Dreieckpfeil) wird aber sehr wohlverwendet.**+**Das Symbol für Vererbung (Dreieckpfeil) wird aber sehr wohl verwendet.**
 </WRAP> </WRAP>
  
 ===== Umsetzung in Java ===== ===== Umsetzung in Java =====
-=== Die Klasse Inhalt ===+=== Die Klasse Kunde ===
 Die Klasse ''Kunde'' muss für die Speicherung in der Warteschlange überhaupt nicht mehr angepasst werden: Die Klasse ''Kunde'' muss für die Speicherung in der Warteschlange überhaupt nicht mehr angepasst werden:
 <code learnj> <code learnj>
Zeile 41: Zeile 43:
 <code learnj> <code learnj>
 public class Warteschlange { public class Warteschlange {
-    private Knoten erster+   Knoten anfang
-    +   Knoten ende;
 } }
  
 public class Knoten { public class Knoten {
-    private Knoten nachfolger; +   Knoten nachfolger; 
-    private Inhalt inhalt+   Kunde daten
-         + 
-    public Knoten(Inhalt inhalt){ +   Knoten(Kunde kunde) { 
-       this.inhalt inhalt+      this.daten kunde
-    }+   }
 } }
 </code> </code>
Zeile 147: Zeile 149:
  
 <script type="text/plain" title="Hauptprogramm.java"> <script type="text/plain" title="Hauptprogramm.java">
-Supermarktkasse s = new Supermarktkasse();+Warteschlange s = new Warteschlange();
 s.hintenAnstellen(new Kunde("Max")); s.hintenAnstellen(new Kunde("Max"));
 s.hintenAnstellen(new Kunde("Tina")); s.hintenAnstellen(new Kunde("Tina"));
Zeile 153: Zeile 155:
 s.hintenAnstellen(new Kunde("Tim")); s.hintenAnstellen(new Kunde("Tim"));
  
-println(s.getAnzahlIterativ());+println(s.hatKunde("Silke")); 
 +println(s.hatKunde("Tom"));
  
-println(s.erstenEntnehmen().name); 
-println(s.erstenEntnehmen().name); 
-println(s.erstenEntnehmen().name); 
  
- +class Warteschlange {
-class Supermarktkasse {+
    Knoten anfang;    Knoten anfang;
    Knoten ende;    Knoten ende;
Zeile 201: Zeile 200:
    int getAnzahlRekursiv() {    int getAnzahlRekursiv() {
       if(anfang == null) return 0;       if(anfang == null) return 0;
-      return anfang.getAnzahlRekursiv();+      return anfang.getAnzahl();
    }    }
 +
 +   Kunde gibDenNtenKunden(int n) {
 +      if(n == 0) return anfang.getDaten();
 +      return anfang.gibDenNtenKunden(n);
 +   }
 +
 +   boolean hatKunde(String name) {
 +      if(anfang == null) return false;
 +      return anfang.hatKunde(name);
 +   }
 +
 } }
  
Zeile 213: Zeile 223:
    }    }
  
-   int getAnzahlRekursiv() {+   boolean hatKunde(String name) { 
 +      if(daten.name == name) return true; 
 +      if(nachfolger == null) return false; 
 +      return nachfolger.hatKunde(name); 
 +   } 
 + 
 +   int getAnzahl() {
       if(nachfolger == null) return 1;       if(nachfolger == null) return 1;
-      return nachfolger.getAnzahlRekursiv() + 1;+      return nachfolger.getAnzahl() + 1;
    }    }
  
Zeile 228: Zeile 244:
    Kunde getDaten() {    Kunde getDaten() {
       return daten;       return daten;
 +   }
 +
 +   Kunde gibDenNtenKunden(int n) {
 +      if(n == 1) return daten;
 +      if(nachfolger != null) {
 +         return nachfolger.gibDenNtenKunden(n - 1);
 +      }
 +
 +      // Fehler: n ist zu groß!
 +      return null;
    }    }
 } }
Zeile 237: Zeile 263:
       this.name = name;       this.name = name;
    }    }
-} +}</script>
-</script>+
  
 </div> </div>
listen/trennungstrukturdaten/start.1727420979.txt.gz · Zuletzt geändert: 2024/09/27 07:09 von Martin Pabst

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki