faecher:informatik:oberstufe:adt:queue:start

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen der Seite angezeigt.

Link zu der Vergleichsansicht

Beide Seiten, vorherige Überarbeitung Vorherige Überarbeitung
Nächste Überarbeitung
Vorherige Überarbeitung
faecher:informatik:oberstufe:adt:queue:start [11.10.2021 17:23] – [Struktur einer generischen Schlange] Mareike Nutzfaecher:informatik:oberstufe:adt:queue:start [23.04.2024 10:05] (aktuell) – [Struktur einer generischen Schlange] Frank Schiebel
Zeile 13: Zeile 13:
 Objekte vom Typ ''Node'' (deutsch: Knoten) speichern jeweils einen Verweis auf den nächsten Knoten (''nextNode'') sowie einen Verweis auf ein beliebiges Inhaltsobjekt (''content''), z.B. vom Typ Person. Damit übernehmen die Knoten die Verwaltung der Struktur der Schlange, die eigentlichen Inhalte sind jedoch in die Inhaltsobjekte ausgelagert.  Objekte vom Typ ''Node'' (deutsch: Knoten) speichern jeweils einen Verweis auf den nächsten Knoten (''nextNode'') sowie einen Verweis auf ein beliebiges Inhaltsobjekt (''content''), z.B. vom Typ Person. Damit übernehmen die Knoten die Verwaltung der Struktur der Schlange, die eigentlichen Inhalte sind jedoch in die Inhaltsobjekte ausgelagert. 
  
-Jede Klasse hat also ihren eigenen Verantwortungsbereich: De Klasse ''Person'' verwaltet alle Daten zur Person, die Klasse ''Node'' stellt Attribute und Methoden zur Verfügung, die für die Organisation der FIFO-Daten-Struktur nötig sind. +Jede Klasse hat also ihren eigenen Verantwortungsbereich: Die Klasse ''Person'' verwaltet alle Daten zur Person, die Klasse ''Node'' stellt Attribute und Methoden zur Verfügung, die für die Organisation der FIFO-Daten-Struktur nötig sind. 
  
 Da die Knoten lediglich Verweise auf Inhaltsobjekte verwalten, können Objekte eines beliebigen Typs in der Schlangenstruktur verwaltet werden. Man spricht von einer **generischen Schlange**.  Da die Knoten lediglich Verweise auf Inhaltsobjekte verwalten, können Objekte eines beliebigen Typs in der Schlangenstruktur verwaltet werden. Man spricht von einer **generischen Schlange**. 
Zeile 20: Zeile 20:
 {{ :faecher:informatik:oberstufe:adt:queue:queue.drawio.png |}} {{ :faecher:informatik:oberstufe:adt:queue:queue.drawio.png |}}
  
 +\\
 Die Klasse ''queue'' stellt ein Schnittstelle bereit, um mit der Knotenstruktur arbeiten zu können.  Die Klasse ''queue'' stellt ein Schnittstelle bereit, um mit der Knotenstruktur arbeiten zu können. 
  
 Damit das sinnvoll möglich ist, muss die ''queue''-Klasse Methoden zum Einfügen, Löschen und Auslesen von Elementen anbieten. Damit das sinnvoll möglich ist, muss die ''queue''-Klasse Methoden zum Einfügen, Löschen und Auslesen von Elementen anbieten.
  
-''queue'' speichert sie eine Referenz auf den ersten Knoten der Schlange (''head'') als Attribut, damit man auf das erste Schlangenelement zugreifen kann, außerdem und auch eine Referenz auf den letzten Knoten (''tail''), damit man am Ende der Schlange neue Elemente einfügen kann. +''queue'' speichert sich eine Referenz auf den ersten Knoten der Schlange (''head'') als Attribut, damit man auf das erste Schlangenelement zugreifen kann, außerdem und auch eine Referenz auf den letzten Knoten (''tail''), damit man am Ende der Schlange neue Elemente einfügen kann. 
  
 Zur Funktionalität der Datenstruktur **Schlange** (**Queue**) gehören, neben den Methoden Einfügen (''enqueue'') und Entfernen (''dequeue'') die Ausgabe des ersten Elements (''front'') sowie die Abfrage, ob die Warteschlange leer ist (''isEmpty'').  Zur Funktionalität der Datenstruktur **Schlange** (**Queue**) gehören, neben den Methoden Einfügen (''enqueue'') und Entfernen (''dequeue'') die Ausgabe des ersten Elements (''front'') sowie die Abfrage, ob die Warteschlange leer ist (''isEmpty''). 
  
 Um diese Methoden umsetzen zu können, muss die Knotenklasse der Schlange ''Node'' folgende Methoden bereitstellen:  Um diese Methoden umsetzen zu können, muss die Knotenklasse der Schlange ''Node'' folgende Methoden bereitstellen: 
- 
  
   * Der Nachfolgeknoten muss gesetzt und abgefragt werden können (''setNext'' bzw. ''getNext'')   * Der Nachfolgeknoten muss gesetzt und abgefragt werden können (''setNext'' bzw. ''getNext'')
   * das jeweilige Inhaltsobjekt muss abgefragt werden können (''getContent'')   * das jeweilige Inhaltsobjekt muss abgefragt werden können (''getContent'')
  
-Die Knoten der Datenstruktur werden als innere Klasse deklariert, da einzig die Klasse Queue Zugriff auf die Knoten haben soll und benötigtQueue und QueueNode bilden so in ihrem Zusammenhalt eine logische Einheit mit klar abgegrenzten Aufgaben gegenüber anderen Klassen+Du findest [[https://codeberg.org/qg-info-unterricht/bluej-linked-queue|hier eine BlueJ-Vorlage]]((git clone https://codeberg.org/qg-info-unterricht/bluej-linked-queue.git)), in der du eine Schlange implementieren kannst. 
 + 
 +Die folgenden Erklärungen zu den einzelnen Funktionalitäten der Schlange sollten dir helfen. 
 + 
 +  * [[.enqueue:start|Einfügen eines Elements am Ende (enqueue)]] 
 +  * [[.dequeue:start|Entfernen eines Elements (dequeue)]] 
 +   
 + 
 +==== Alternative Implementation ==== 
 +  
  
 +  * [[.array_queue:start|Alternative Implementation einer Schlange als Array]]
  • faecher/informatik/oberstufe/adt/queue/start.1633972997.txt.gz
  • Zuletzt geändert: 11.10.2021 17:23
  • von Mareike Nutz