Abstrakte Datentypen need help pls!

wannabe_nerd

Lieutenant
Registriert
Mai 2009
Beiträge
753
Hi leute,

keine Ahnung ob ich hier richtig bin, aber ich wusste nicht wohin sonst damit:

Ich bereite mich gerade auf meine Prüfung in Grundlagen der Informatik vor. Leider ist es schon mein zweiter Anlauf in diesem Fach. Momentan bereitet mir das Thema "Abstrakte Datentypen" Kopfzerbrechen.
Konkret geht es um folgende Aufgabe:

"Eine Autowaschanlage hat 3 Waschstraßen und kann somit 3 Autos gleichzeitig abarbeiten.
Beschreiben Sie diesen Sachverhalt durch einen Abstrakten Datentyp, wenn 15 Autos gewaschen werden sollen."

Ich weiß, dass Abstrakte Datentypen durch ihr Zugriffsprinzip beschrieben werden - Also hatte ich mir gedacht, dass diese 3 Waschstraßen halt als 3 Stapel nach dem Prinzip: first-in-first-out funktionieren und damit halt je nach geschwindigkeit pro Waschstraße soundsoviel Minuten * 5 (weil 15 durch 3 =5) brauchen um 15 Autos abzuarbeiten.
Leider hab ich für diese Lösung 0Pkt bekommen -.-

Jetzt frage ich euch, was ich stattdessen hätte antworten müssen, weil ich ehrlich gesagt etwas auf dem Schlauch stehe, was diese Aufgabe angeht.

Ich würde mich echt freuen, wenn Ihr mir etwas Hilfestellung geben könntet bei dieser Aufgabe. Vielen Dank

Mfg wannabe_nerd
Ergänzung ()

So hat sich erledigt^^ Dickes THX an toeffi noch mal an dieser Stelle;)

So hier die Lösung, damit keiner sich beschwert:

"Deine Waschanlage lässt sich durch 3 warteschlangen simulieren. als ersten werden alle warteschlangen initialisiert. und dann mit jeweils 5 autos gefüllt und nun nacheiander abgearbeitet. aus den 3 warteschlangen werden nun gleichzeit jeweils 1 auto herausgeholt, mittels der zugriffsmethode "pop" oder so ähnlich. dann werden die gewaschen und es geht weiter mit den nächsten 3 autos. das ganze machst du 5mal und deine warteschlangen sind leer."

Mfg wannabe_nerd
 
bei nem abstrakten Datentyp beschreibst du nicht die Implementierung. Es ist also völlig egal, wie die Waschanlage arbeitet(Stackarbeitsweise oder wie lange die Waschstraßen im einzelnen benötigen).

Interessant ist das Interface. Die Waschanlage erwartet z.B. eine Liste mit Autos, wird die Kapazität überschritten, muss eine Exception geworfen werden, eventuell wird als Rückgabe noch die aktuell freie Kapazität zurückgegeben.
sieht in Java dann z.B. so aus:
public abstract int kundenVerarbeiten(ArrayList<Auto> list) throws LimitException;

Der Aufrufende muss sich dann darüber Gedanken machen, wie er mit seinen 15 Autos umgeht. Ist nicht das Problem der Waschanlage, wenn 15 Kunden gleichzeitig waschen wollen. Die müssen sich dann irgendwie selbst anstellen.

edit: ok sehe gerade die "Lösung", bin noch nicht 100%ig zufrieden, für mich ist das nicht die Beschreibung eines ADT. Du würdest dem erst nahekommen, wenn du über tatsächliche Methodensignaturen sprichst *grübel*
 
Zuletzt bearbeitet:
Also ich höre zum ersten mal davon, habe gleich mal Wikipedia bemüht. Schau da auch mal rein.
Ich wette dein Prof wollte die Lösung in dem Vokabular das ihr auch in der Vorlesung benutzt habt. Für uns die wir deine Vorlesung nicht gehört haben wird es fast unmöglich sein dir zu sagen was dein Professor hören will.
Hast du zu dem Thema ein Beispiel aus der VL?
 
Auch wenn du schon eine Antwort gefunden hast, um das noch einmal klarzustellen:
Ein Stapel (Stack) arbeitet nicht FIFO sondern LIFO, daher macht das für eine Waschanlage wenig Sinn. Wer als erster kommt, wird als erster gewaschen, daher braucht man eine Warteschlange (Queue). Selbst bei mehreren Waschanlagen (Threads) reicht eine aus, wenn die darin wartenden Autos alle das gleiche Waschprogramm bekommen (um mal abstrakt zu bleiben). Gibt es nur eine Waschanlage (also einen Thread) dann ergeben auch mehrere Warteschlangen wenig Sinn.
Die Begriffe push und pop werden in der Regel bei Stacks verwendet. Bei Queues eher put und get bzw. enqueue und dequeue.
 
Zuletzt bearbeitet:
hmh ok also:
keine stapel sondern queues (warteschlangen) u als zugriffsmethoden put bzw. get zugriffsprinszip ist: FIFO first-in-first-out wer zuerst kommt wird auch zuerst gewaschen.
Hab ich das so richtig zusammengefasst?

Vielen Dank für Eure Hilfe!
 
Natürlich ist hier die Queue gefragt. Wobei diese im Normalfall nach FIFO arbeitet und nicht nach PRIORITY. Zugriffsmethode ist PUT für das Hinzufügen eines Autos zu einer Waschstraße und GET für das "Waschen" eines Autos - also sobald der Zugriff der Waschstraße auf das Auto erfolgt und dieses in Bearbeitung ist.
 

Ähnliche Themen

Zurück
Oben