Frage

Ich spiele mit der Komposition einiger Objekte herum.

Ich habe zwei Klassen (Notiz und Aufgabe).Die Task-Klasse wird von der Note-Klasse abgeleitet, da eine Aufgabe eine erweiterte Notiz ist.

Jede Notiz hat eine Eigenschaft Property Child as list (of note) als Notiz oder Aufgabe könnte einer vorhandenen Notiz oder Aufgabe hinzugefügt werden (Daher könnte diese „untergeordnete“ Notiz eine Aufgabe oder eine Notiz sein)

dh.

dim x as new note()

x.Child.item(0).Child.item(0).Child.item(0).description.ToString()

Das letzte untergeordnete Notizobjekt ist eigentlich eine Aufgabe. Wie kann ich diese Aggregation zum Laufen bringen?Es ist mir egal, ob es eine Notiz oder eine Aufgabe ist, aber ich möchte die Funktionalität der Basisklasse oder der erweiterten Klasse freigeben.

Mein erster Gedanke war, dass jedes Objekt eine Liste mit Aufgaben und eine Liste mit Notizen haben muss, aber es scheint, dass es eine elegantere Lösung geben könnte.

Hat jemand irgendwelche Gedanken dazu?

War es hilfreich?

Lösung

Ihre Sammlung von Note-Objekten sollte Ihnen bereits das bieten, was Sie wollen.

Wenn Sie zwischen Notiz und Aufgabe unterscheiden müssen, können Sie fragen, ob die Instanz eine „typeof“-Aufgabe ist, und diese dann entsprechend umwandeln, um an die abgeleiteten Eigenschaften und Methoden zu gelangen.

Wenn die von Ihnen benötigten Methoden und Eigenschaften Teil der Basisklasse sind, ist keine Umwandlung erforderlich. Sie können sich auf Polymorphismus verlassen, um die typgerechte Methode/Eigenschaft aufzurufen.

Andere Tipps

Wenn ich Sie richtig verstehe, sollten Sie das Verhalten Ihrer Klasse mit dem implementieren, was wir C#-Leute virtuelle Methoden/Eigenschaften nennen ...Im Wesentlichen verwenden sie spät gebundene Aufrufe, damit die entsprechende Funktionalität von der richtigen Klasse aufgerufen wird – sei es die übergeordnete oder die abgeleitete Klasse.

Ich denke, das VB.Net-Äquivalent ist „Overrideable“ und „Overrides“.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top