Forum: PC-Programmierung C++ Menustruktur => Referenzdesigns/Artikel?


von Jasson J. (jasson)


Lesenswert?

Hallo zusammen,

mal wieder eine Frage zum Menuaufbau in C++. An sich habe ich schon ein 
System aufgebaut, welches funktioniert. Meine Frage geht eher in die 
Richtung, wie "verbinde" ich Einstellungen, die ich im Menu machen kann 
OOP-konform mit dem Rest des Programmes? - Klar über "extern" kann ich 
alles über all hin bringen, nur die feine englische Art ist das nicht.
Gibt es vll. Artikel/Referenzdesigns oder auch Bücher, die sich damit 
beschäftigen?

viele Grüße!

>>Konkret:
>ich habe eine Klasse als Knoten definiert, die zum "senkrechten" itterieren 
>einen "parent" und einen "child" Zeiger hat - zum waagerechten "next" und 
>"previous". Dazu einen Itterator, der in der Lage ist, durch von außen >gesetzte 
Controlls in dem Baum "rumzuklettern".

>Währe es z.B. OOP legitim, einer abgeleiteten Knoten Klasse eine Callback 
>Methode mitzugeben? Darüber könnte ich ja auch Instanzen von Objekten aus >der 
"habenden" Hierachiestufe darüber mitgeben. Zum Beispiel möchte ich >"Items" 
erzeugen, die in einem "ItemHeap" liegen. Dessen Referenz könnte >ich einer 
spezialisierten Klassenableitung von "Item_Node" mitgeben?

von Markus (Gast)


Lesenswert?

Eine Anleitung für erfolgreiche OOP:

1.) Besuch die Schule zueende und pass gut auf, wenn es ums Schreiben 
von Aufsätzen geht. Wenn du die Schule schon hinter dir hast, besorg dir 
die Deutschbücher für Klasse 1-10 und lern, wie man sich verständlich 
ausdrückt!

2.) Lies https://de.wikipedia.org/wiki/Entwurfsmuster_(Buch)

Wenn du in ein paar Jahren mit 1. und 2. fertig bist, komm wieder und 
erklär dein Problem.

von Mikro 7. (mikro77)


Lesenswert?

Hallo Jasson,

ich nehme an es geht darum Ereignisse der GUI an die "entsprechende" 
Funktion weiteruleiten?!

Das wird häufig über Callbacks umgesetzt, die entweder direkt im 
GUI-"Fenster"-Objekt oder beim Dispatcher registriert werden (good old C 
style).

Eine Alternative (in C++) ist die Registrierung von Objekten (mit einem 
vorgegebenen Interface), die bei entsprechenden Events aufgerufen werden 
(bspw. Observer Pattern).

von Jay (Gast)


Lesenswert?

Wenn es so richtig hässlich aber Hipster-kompatibel sein soll:

Für jeden Callback eine std::function Template Instanz, dazu eine 
Methode mit der man als std::function Ziel einen Lambda-Ausdrucken 
zuweisen kann.

Die klassische Lösung:

Den Kern den Menüsystems als ein Framework schreibt. Fehlendes Verhalten 
wird durch abstrakte Methoden abgebildet. Der Programmierer 
implementiert abgeleitete Klassen mit dem gewünschten, spezifischen 
Verhalten. Allerdings ist Vererbung in modernen Programmierer-Kreisen 
völlig aus der Mode gekommen und wird verteufelt.

Andere klassische Lösung:

Simple, anwendungsspezifische Sprache zur deklarieren von Menüs und 
deren Verhalten entwerfen. Codegenerator (ist z.B. mit klassischen Linux 
Textprocessing-Tools eine Fingerübung), der aus Menüdeklarationen C++ 
Code erzeugt. Den normalerweise unglaublich hässlichen generierten Code 
nicht mehr ansehen und nicht mehr anfassen. Nur compilieren.

von Dieter (Gast)


Lesenswert?

Hallo,
Ich bin mir zwar nicht 100% sicher was du meinst, aber es erinnert mich 
an Rekursive Datenstrukturen, habe ich damit recht? Wenn ja musst du 
deine Informationen die du an eine bestimmte Stelle Schreiben willst, 
solange vom Startknoten aus übergeben bis du an die passende Stelle 
gekommen bist.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.