Ex05 Aufgabe1

maroo
Neuling
Neuling
Beiträge: 1
Registriert: 5. Nov 2007 10:08

Ex05 Aufgabe1

Beitrag von maroo »

Tach!!
Ich versuche den Adapter in Aufgabe 1 zu bauen, aber irgendwie weiss ich nicht wie ich vorgehen soll.
Ich habe einfach eine neue Klasse namens "Adapter" die eine Methode
load(HierarchyDisplay,Company) hat.
In dieser Methode wird die ganze Struktur gebaut, fast genauso wie bei der Methode load(HierarchyDisplay) in "HierarchyInitData" geschieht.

Es funktioniert super!!!!!

Die Frage ist nun in wie fern ist das ein Adapter Pattern? wo bleiben die "inheritences" was in der Vorlesung gesprochen wurde?

Gruß

Benutzeravatar
dinkelaker
Mausschubser
Mausschubser
Beiträge: 72
Registriert: 9. Okt 2007 10:35

Was ist ein Adapter Pattern?

Beitrag von dinkelaker »

Hallo,

Wahrscheinlich hast Du für Deine Lösung eine Methode implementiert,
die den vorhanden Baum traversiert und die Texte mittels der Node.setText() Methode setzt. Ist das so?

Versuche mal im Menü-Punkt "Change", die verschiedenen Operationen auszuführen. Wird das Display aktualisiert?

Bitte schau Dir noch einmal die Folien zum Adapter-Pattern aus dem Script an und lese nocheinmal die Aufgabenstellung genau.
Bitte beachte dabei, dass in der Aufgabenstellung u.a. folgende Vorgaben gemacht wurden:
- es ist das Adapter Design Pattern wie in der Vorlesung vorgestellt zu verwenden?
- setText() darf nicht verwendet werden

Wenn Du das (richtige) Adapter Design Pattern verstanden und in Deiner Lösung eingesetzt hättest, dann müsstest Du folgende Fragen mit Leichtigkeit beantworten können.
- Handelt es sich um die Variante Object Adapter oder Class Adapter?
- Welchen Typ hat "Adaptee", welchen Typ hat "Target"?

Überlege Dir auch folgendes:
- Ist Deine Lösung objekt-orientiert programmiert?
- Was passiert, wenn ein neuer Mitarbeiter eingestellt wird, muss Deine Methode angepasst werden?

Gruß, Tom

MisterMo
Nichts ist wie es scheint
Beiträge: 23
Registriert: 13. Nov 2006 17:03

Beitrag von MisterMo »

Hi,
also wir haben die Object Variante des Adapters implementiert und können die Fragen für unseren Adapter beantworten... aber die setText(...) haben wir natürlich trotzdem verwendet. Wie soll man denn den sonst auf den Text der Knoten zugreifen? Eine neue Schnittstelle in der Klasse Node dürfen wir doch nicht implementieren?!?

Gruß, Mo

Bara2
Mausschubser
Mausschubser
Beiträge: 54
Registriert: 11. Nov 2005 13:41

Re: Was ist ein Adapter Pattern?

Beitrag von Bara2 »

dinkelaker hat geschrieben:Hallo,

Wahrscheinlich hast Du für Deine Lösung eine Methode implementiert,
die den vorhanden Baum traversiert und die Texte mittels der Node.setText() Methode setzt. Ist das so?
Im Prinzip schon.
Versuche mal im Menü-Punkt "Change", die verschiedenen Operationen auszuführen. Wird das Display aktualisiert?
Selbstverständlich - das habe ich ja so implementiert, dass es klappt.
Bitte schau Dir noch einmal die Folien zum Adapter-Pattern aus dem Script an und lese nocheinmal die Aufgabenstellung genau.
Bitte beachte dabei, dass in der Aufgabenstellung u.a. folgende Vorgaben gemacht wurden:
- es ist das Adapter Design Pattern wie in der Vorlesung vorgestellt zu verwenden?
- setText() darf nicht verwendet werden
Adapter-Pattern, so wie ich es verstanden habe, ja.
setText() wird verwendet. Wie sonst soll ich den Namen des jeweiligen Knoten setzen? Man könnte natürlich eine (oder auch mehrere) neue Klasse erstellen, die von Node erbt und das irgendwie anders löst, aber das halte ich eigentlich nicht für nötig.
Wenn Du das (richtige) Adapter Design Pattern verstanden und in Deiner Lösung eingesetzt hättest, dann müsstest Du folgende Fragen mit Leichtigkeit beantworten können.
- Handelt es sich um die Variante Object Adapter oder Class Adapter?
- Welchen Typ hat "Adaptee", welchen Typ hat "Target"?

Überlege Dir auch folgendes:
- Ist Deine Lösung objekt-orientiert programmiert?
- Was passiert, wenn ein neuer Mitarbeiter eingestellt wird, muss Deine Methode angepasst werden?
- Object
- Adaptee und Target sind klar, will hier nicht direkt die Lösung verraten, aber eigentlich gibt es da doch keine Auswahlmöglichkeit.
- Objektorientiert: zumindest widerpricht es dem Objektorientierten nicht.
- bei neuem Mitarbeiter, wenn dieser in Company enthalten ist, ist keinerlei Code-Anpassung nötig, genauso bei neuen Departments.


---> Kurz und gut: Ich sehe bei mir keinen Fehler, habe aber setText() benutzt und wüsste nicht, wie es anders gehen sollte...

ujs
Windoof-User
Windoof-User
Beiträge: 38
Registriert: 13. Jul 2004 14:33

Beitrag von ujs »

Nur mal so als Frage am Rande, wieso werden die Interfaces [font=Courier]INode[/font] und [font=Courier]ICompositeNode[/font] eigentlich definiert, wenn sie nachher gar nicht "benutzt" werden.
[font=Courier]HierarchyDisplay[/font] arbeitet direkt mit [font=Courier]Node[/font]s...

Benutzeravatar
dinkelaker
Mausschubser
Mausschubser
Beiträge: 72
Registriert: 9. Okt 2007 10:35

Beitrag von dinkelaker »

Alle sollten sich an daran halten setText() nicht zu verwenden,
schließlich ist das so in der Aufgabe verlangt mit dem Hintergrund,
dass wir möchten, dass ihr die Aufgabe richtig löst und Euch gedanken
über ein gutes Design macht.

Wir gehen aber gerne auch auf andere Lösungswege ein und
sind bereit mit Euch über alternative Lösungswege zu diskutieren.

Hmm, jetzt müssten wir ziemlich speziell diskutieren und ich müsste Deinen Quelltext sehen können, damit ich Deine Lösung kritisieren kann.
Vielleicht kannst Du mal bei Gelegenheit kurz bei mir im Büro vorbei kommen,
dann kann ich ausführlich darauf eingehen warum das Verwenden von setText() aus Design Gründen nicht angebracht ist.

Wir haben die Verwendung absichtlich in der Aufgabenstellung verboten, da es sehr verführerisch ist dies zu tun, aber wenig mit guten Design zu tun hat. Oft produzieren einfache Lösungen schnelle Fortschritte, am Ende entsteht jedoch ein schlechtes Design welches nicht gerüstet ist für zukünftige Veränderungen und schließlich wesentlich mehr Aufwände produziert also ein gutes Design von Anfang an.
setText() wird verwendet. Wie sonst soll ich den Namen des jeweiligen Knoten setzen?
Bemerke es gibt noch eine zweite Art auf den Text zuzugreifen, mit getText().
Man könnte natürlich eine (oder auch mehrere) neue Klasse erstellen, die von Node erbt und das irgendwie anders löst, aber das halte ich eigentlich nicht für nötig.
Warum hälst Du es nicht für nötig? Eine neue Klasse ist doch kein Ding.
---> Kurz und gut: Ich sehe bei mir keinen Fehler, habe aber setText() benutzt und wüsste nicht, wie es anders gehen sollte...
Vielleicht versuchst Du mal folgende Fragen für Dich zu beantworten.
Welche Klasse ruft bei Deine Lösung den setText() auf? Sollte das Setzen des Textes Teil der Verantwortlichkeit dieser Klasse sein? An wievielen Stellen wird setText() aufgerufen? Entstehen dardurch zusätzliche Abhängigkeiten?

Benutzeravatar
dinkelaker
Mausschubser
Mausschubser
Beiträge: 72
Registriert: 9. Okt 2007 10:35

Beitrag von dinkelaker »

Nur mal so als Frage am Rande, wieso werden die Interfaces INode und ICompositeNode eigentlich definiert, wenn sie nachher gar nicht "benutzt" werden.
HierarchyDisplay arbeitet direkt mit Nodes...
Die Interfaces sind notwendig und werden in Connection verwendet.
Wenn Du Aufgabe 2 bearbeitest sollte Dir klar werden, warum man die Interfaces benötigt. Ansonsten wäre das eine gute Diskussion für die Übung.

ujs
Windoof-User
Windoof-User
Beiträge: 38
Registriert: 13. Jul 2004 14:33

Beitrag von ujs »

dinkelaker hat geschrieben:
Nur mal so als Frage am Rande, wieso werden die Interfaces INode und ICompositeNode eigentlich definiert, wenn sie nachher gar nicht "benutzt" werden.
HierarchyDisplay arbeitet direkt mit Nodes...
Die Interfaces sind notwendig und werden in Connection verwendet.
Wenn Du Aufgabe 2 bearbeitest sollte Dir klar werden, warum man die Interfaces benötigt. Ansonsten wäre das eine gute Diskussion für die Übung.
Ich meine nur dass es z.B. nicht möglich ist, dass eine Adapter Klasse das Interface [font=Courier]INode[/font] implementiert und dann in [font=Courier]HierarchyDisplay[/font] verwendet werden kann. Ein Adapter müsste schon von [font=Courier]Node[/font] erben...

Gerät
Neuling
Neuling
Beiträge: 1
Registriert: 16. Jan 2006 20:34

Beitrag von Gerät »

Tag zusammen...

...wir haben wunderbar-tolle Adapter, die die eine in die andere Struktur übersetzen (ohne Verwendung von setText()... :wink:). Nun haben wir aber das Problem, dass bei "Transfer Worker" zwar der Worker einem anderen Department zugeordnet wird, allerdings hat dies ja keinen Einfluss auf die - anfangs erstellte - Knoten-Hierarchie. Was genau soll hier passieren? Soll die Struktur neu aufgebaut werden oder sollen wir die Objekte selbst/manuell umhängen?!? Oder läuft bei uns einfach irgendetwas noch nicht so richtig??

Vielen Dank schon mal im Voraus.

dbm

Bara2
Mausschubser
Mausschubser
Beiträge: 54
Registriert: 11. Nov 2005 13:41

Beitrag von Bara2 »

OK, vielen Dank.
Die Tipps von dinkelaker haben mir sehr weiter geholfen.
Meine Lösung von gestern Abend war im Sinne der agilen Programmierung absolut in Ordnung - ich habe dann aber selbst fest gestellt, dass sich so Aufgabe 2 gar nicht oder nur sehr unschön hätte lösen lassen.

@Gerät: Die erstbeste (agil! :) ) Lösung, die mir für das Problem eingefallen ist, ist einfach die, die Blätter bei jedem Aufruf von refresh() in deinem HierarchyDisplay neu zu zeichnen. Das ist zwar nicht schön, funktioniert aber soweit erst mal.

MuldeR
BASIC-Programmierer
BASIC-Programmierer
Beiträge: 131
Registriert: 18. Okt 2005 16:14
Wohnort: (d)armstadt
Kontaktdaten:

Re: Was ist ein Adapter Pattern?

Beitrag von MuldeR »

dinkelaker hat geschrieben:Wenn Du das (richtige) Adapter Design Pattern verstanden und in Deiner Lösung eingesetzt hättest, dann müsstest Du folgende Fragen mit Leichtigkeit beantworten können.
- Handelt es sich um die Variante Object Adapter oder Class Adapter?
Eigentlich kann man das nur mit dem Object Adapter lösen, denn die zu adaptierenden Objekte existieren ja alle schon...

Antworten

Zurück zu „Archiv“