Benutzer-Werkzeuge

Webseiten-Werkzeuge


listen:verkettet: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:verkettet:start [2024/09/19 06:15] – [Klassendiagramm] Martin Pabstlisten:verkettet:start [2024/09/27 08:45] (aktuell) – [Problem des ersten Ansatzes:] Martin Pabst
Zeile 19: Zeile 19:
 {{ :listen:verkettet:objektdiagramm_einfach_verkettete_liste_einfacher_ansatz_.svg |}} {{ :listen:verkettet:objektdiagramm_einfach_verkettete_liste_einfacher_ansatz_.svg |}}
  
 +</WRAP>
 +
 +==== Klassendiagramm ====
 +<WRAP center round info 60%>
 +{{ :listen:verkettet:klassendiagramm_einfach_verkettete_liste_einfacher_ansatz_.svg|}}
 +Es ergibt sich das rechts dargestellte Klassendiagramm. \\ \\ 
 +Die einfach verkettete Liste ist eine **rekursive** Datenstruktur, da ein Kunde-Objekt wiederum ein Kunde-Objekt als Nachfolger hat. \\ 
 +Zwischen den Klassen Warteschlange und Kunde bestehen zwei **Aggregationsbeziehungen**.
 </WRAP> </WRAP>
  
Zeile 74: Zeile 82:
 </HTML> </HTML>
  
-==== Klassendiagramm ==== 
-<WRAP center round info 60%> 
-{{ :listen:verkettet:klassendiagramm_einfach_verkettete_liste_einfacher_ansatz_.svg|}} 
-Es ergibt sich das rechts dargestellte Klassendiagramm. \\ \\  
-Die einfach verkettete Liste ist eine **rekursive** Datenstruktur, da ein Kunde-Objekt wiederum ein Kunde-Objekt als Nachfolger hat. \\  
-Zwischen den Klassen Warteschlange und Kunde bestehen zwei **Aggregationsbeziehungen**. 
-</WRAP> 
  
 ==== Aufgabe 1 ==== ==== Aufgabe 1 ====
-Implementieren Sie die Methode ''getAnzahl()'', die die Anzahl der Kunden in der Warteschlange ausgibt.+Implementieren Sie die Methode ''getAnzahl()'', die die Anzahl der Kunden in der Warteschlange ausgibt. Nutzen Sie dazu das Prinzip der Rekursion. 
 + 
 +[[.getAnzahl:start|Lösung]] 
  
  
Zeile 91: Zeile 95:
 Bei dieser Implementierung der Warteschlange müssen wir die Klasse ''Kunde'' anpassen, um die Listenfunktionalität umzusetzen: Sie wird um ein zusätzliches Attribut ''nachfolger'' erweitert und bekommt unweigerlich auch Methoden zur Verwaltung der Listenstruktur (''getAnzahlRekursiv'', ...). Stellen Sie sich vor, Sie programmieren ein Spiel und benötigen eine Liste zur Verwaltung der Spieler, eine zur Verwaltung der Gegner, eine zur Verwaltung der Hindernisse usw. Dies führt dazu, dass Sie die Spieler-, Gegner- und Hindernis-Klasse jeweils um das Attribut ''nachfolger'' und die Methoden zur Verwaltung der Listenstruktur erweitern müssen: **IMMER WIEDER DERSELBE PROGRAMMCODE!** \\ \\  Bei dieser Implementierung der Warteschlange müssen wir die Klasse ''Kunde'' anpassen, um die Listenfunktionalität umzusetzen: Sie wird um ein zusätzliches Attribut ''nachfolger'' erweitert und bekommt unweigerlich auch Methoden zur Verwaltung der Listenstruktur (''getAnzahlRekursiv'', ...). Stellen Sie sich vor, Sie programmieren ein Spiel und benötigen eine Liste zur Verwaltung der Spieler, eine zur Verwaltung der Gegner, eine zur Verwaltung der Hindernisse usw. Dies führt dazu, dass Sie die Spieler-, Gegner- und Hindernis-Klasse jeweils um das Attribut ''nachfolger'' und die Methoden zur Verwaltung der Listenstruktur erweitern müssen: **IMMER WIEDER DERSELBE PROGRAMMCODE!** \\ \\ 
 Der Kern des Problems liegt darin, dass der Code zur Modellierung der Daten (Klasse ''Kunde'') und der Code zum Verwalten der Listenstruktur vermischt sind. \\ \\  Der Kern des Problems liegt darin, dass der Code zur Modellierung der Daten (Klasse ''Kunde'') und der Code zum Verwalten der Listenstruktur vermischt sind. \\ \\ 
 +
 **Problem 2: Performance beim Zugriff aufs n-te Element** \\  **Problem 2: Performance beim Zugriff aufs n-te Element** \\ 
 Will man auf das n-te Element einer verketteten Liste zugreifen, so muss sich das Programm - beginnend beim ersten Element - n-mal "nach vorne hangeln". Das kostet viel Zeit, denn im Mittel sind n/2 Schritte nötig. Da man bei einer Warteschlange nicht aufs n-te Element zugreifen muss, ist eine verkettete Liste dafür aber insgesamt gut geeignet. Will man auf das n-te Element einer verketteten Liste zugreifen, so muss sich das Programm - beginnend beim ersten Element - n-mal "nach vorne hangeln". Das kostet viel Zeit, denn im Mittel sind n/2 Schritte nötig. Da man bei einer Warteschlange nicht aufs n-te Element zugreifen muss, ist eine verkettete Liste dafür aber insgesamt gut geeignet.
 +
 </WRAP> </WRAP>
  
listen/verkettet/start.1726726528.txt.gz · Zuletzt geändert: 2024/09/19 06:15 von Martin Pabst

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki