FB18 - Das Forum für Informatik

fb18.de / Diplom Informatik / Unterbereich Grundstudium / Praktische Informatik

P3 - Blatt 3 - Aufgabe 2

P3 - Blatt 3 - Aufgabe 2 2004-11-24 17:58
NaZo
An die Aufgabensteller bzw. Übungsleiter:

Wie habt Ihr Euch das mit den Enumerations gedacht? Das gibts ja afaik nur als Interface. Sollen wir das also auch noch implementieren oder können wir auch was anderes (z.B. Iterator) benutzen?

Re: P3 - Blatt 3 - Aufgabe 2 2004-11-24 20:11
Brokkoli
also für einige der benötigten enumeratoren gibts schon fertige in den klassen (hashtable) die kannst du einfach weitergeben…
mindestens einen musst du allerdings wohl selber schreiben..
ich hab da eine inner class für geschrieben, von der dann eine instanz erzeugt und zurückgegeben wird..

Re: P3 - Blatt 3 - Aufgabe 2 2004-11-24 21:38
Spaceman
Kannst auch einfach alles in einen Vector tun. Dieser kann eine Enumeration seiner Elemente zurückgeben!

Re: P3 - Blatt 3 - Aufgabe 2 2004-11-24 23:42
NaZo
Das mit dem Vector hab ich inzwischen auch herausgefunden. Versteh zwar nich, wieso das geht, aber von mir aus…

Die Lösung mit der Inner Class finde ich irgendwie blöd.

Aber trotzdem vielen Dank für die Antworten bis hier.

Re: P3 - Blatt 3 - Aufgabe 2 2004-11-25 13:59
Brokkoli
bei der successor enum gehts wohl kaum anders…

(und in den java sources wirds im allgemeinen auch so mit inner classes gemacht..)

EDIT: geht schon anders… vektor erzeugen, alle knoten rein die du dann in der enumeration zurückgeben willst und dann eine enum von dem vektor zurückgeben - nur es ist deutlich auswändiger *g*

Re: P3 - Blatt 3 - Aufgabe 2 2004-11-25 23:18
Spaceman
Das mit dem Vector hab ich inzwischen auch herausgefunden. Versteh zwar nich, wieso das geht, aber von mir aus…

Du musst ja auch garnicht zwangläufig verstehen wie die Klassen der API implementiert sind. In der Regel reicht es ja aus zu wissen wie man sie sinnvoll einsetzt. Und wenn die Klasse Vector halt die Möglichkeit bietet eine Enumeration zurückzugeben, dann ist doch toll!

Re: P3 - Blatt 3 - Aufgabe 2 2004-11-27 00:27
NaZo
EDIT: geht schon anders… vektor erzeugen, alle knoten rein die du dann in der enumeration zurückgeben willst und dann eine enum von dem vektor zurückgeben - nur es ist deutlich auswändiger *g*

Also, wenn ich ehrlich bin, finde ich diese Lösung viel einfacher und nicht "auswändiger".

Aber so langsam müssen wir hier mal aufpassen, dass wir nich zu viel verraten… [img]http://www.fb18.de/gfx/25.gif[/img]

Re: P3 - Blatt 3 - Aufgabe 2 2004-11-27 13:38
Brokkoli
naja ich meine nicht aufwändiger zu programmieren… das sicher nicht ;) aber es werden eben viele objekte erzeugt die man sonst eigentlich garnicht bräuchte..

Re: P3 - Blatt 3 - Aufgabe 2 2004-11-29 16:51
Anonymer User
Wieso dat denn? Die Objekte sind doch die gleichen (identischen), nur der Vektor wird neu erzeugt.

Re: P3 - Blatt 3 - Aufgabe 2 2004-11-29 16:53
NaZo
Das hier drüber kam übrigens von mir. Hatte vergessen mich einzuloggen. Sorry!!!

Re: P3 - Blatt 3 - Aufgabe 2 2004-11-29 17:00
Brokkoli
mh der vektor und einige arrays (im vektor) werden wohl erzeugt. naja auch nichts weiter schlimmes bei dem programm ;)

Re: P3 - Blatt 3 - Aufgabe 2 2004-12-06 23:17
ersatzreifen
Moin,

bei der Musterlösung, Aufgabe2 werden bei der Methode removeVertex(Vertex knoten) auch noch die Kanten zuvor entfernt. Tut das not?[img]http://www.fb18.de/gfx/2.gif[/img] Oder was passiert, wenn nicht? Ach ja, einige ham eine InnerClass geschrieben und das Interface Enumeration implementiert… Ging das? Und wenn ja, dann poste bitte mal den Code…

Emanuel

Re: P3 - Blatt 3 - Aufgabe 2 2004-12-07 00:22
korelstar
Nun ja, die Kanten sollten ja jeweils bei den Knoten, zwischen denen die Kante liegt, gespeichert werden. Entfernst du nun nicht die Kanten aus den entsprechenden anderen Knoten, kannst du später arge Probleme bekommen, weil dann bei den anderen Knoten noch Kanten vorhanden sein können, die zu einem Knoten führen, den es gar nicht in deinem Graphen gibt.

Re: P3 - Blatt 3 - Aufgabe 2 2004-12-07 17:15
Brokkoli
Ach ja, einige ham eine InnerClass geschrieben und das Interface Enumeration implementiert… Ging das? Und wenn ja, dann poste bitte mal den Code…

Emanuel

warum sollte es nich gehen?

public Enumeration getSuccessors(Vertex v) { return new SuccessorEnum(v); } private class SuccessorEnum implements Enumeration { private Vertex _v; private Enumeration _edges; private SuccessorEnum(Vertex v) { _v = v; _edges = getEdges(v); } public boolean hasMoreElements() { return _edges.hasMoreElements(); } public Object nextElement() { return ((Edge)_edges.nextElement()).getTargetVertex(_v); } } (wobei das natürlich bei anderen (die z.b. andere methoden an den edges haben auch etwas anders aussieht… *g*)