[gelöst]QMultimap oder Parent->Child-Klassen?

Du bist neu in der Welt von C++? Dann schau hier herein!
Antworten
Fenriswolf
Beiträge: 27
Registriert: 11. November 2014 18:06

[gelöst]QMultimap oder Parent->Child-Klassen?

Beitrag von Fenriswolf »

Hallo liebes tageb... äh Forum ;)
ich habe ein kleines (nicht QT) Problem, bei dem ich euren Rat zur Herangehensweise bräuchte.
prinzipieller aufbau: Zentrale -> Modul -> Bezeichnung
die Daten werden aus einer Datei ausgelesen. Für mich ist es wichtig entweder zu erfahren welche Module eine Zentrale hat bzw zu welcher Zentrale das Modul gehört, und wie die Bezeichnung des Moduls ist (hieraus ergeben sich weitere spezielle eigenschaften).
Das für mich einfachste wäre, es in eine Map/QMultiMap einzulesen, nur hätte ich dann etliche Schlüssel:
Zentrale -> Modul 1
...
Zentrale -> Modul n
Modul 1 -> Bezeichnung
...
Modul n -> Bezeichnung

Ist das Sinnvoll?

Die zweite variante die mir einfallen würde, wäre Parent->child Klassen aufzubauen (womit ich mich in dem falle noch eingehender beschäftigen müsste)
oder ist das schon wieder zu viel des guten?

Ich bedanke mich wie immer schon mal für eure hilfreichen antworten!

MfG
Zuletzt geändert von Fenriswolf am 24. August 2015 21:28, insgesamt 1-mal geändert.
Ich bin die Summer meiner Erfahrungen; und heute bin ich mehr, als ich gestern war
RHBaum
Beiträge: 1436
Registriert: 17. Juni 2005 09:58

Re: QMultimap oder Parent->Child-Klassen?

Beitrag von RHBaum »

Es kommt auf die Verwendung der Schlüssel an ....

Wenn du für den Zugriff auf das Modul immer die Zentrale brauchst .... Und für die Bezeichnunng (ich geh mal davon aus das die bezeichnung auch ne Collection am Modul ist) immer das Modul, für die eindeutige identifizierung, dann sind Bäume / Hirarchien ein nicht ganz unübliches Mittel !
Dafür gibts auch "fertige" Lösungen .... z.b. boost::propertytree ...

Das einzige was dich davon abhalten könnte/sollte, sowas als Hirarchie zu bauen, ist Performance .
Hier musst selber definieren was wichtig ist ... wie geschiet der Zugriff ? lässt sich der "normalisieren". Ist die Geschwindigkeit bei EInfügen und Löschen relevant, wenn ja wie relevant .... etc.

EIne bewährte rangehensweisse beim design ist hier, deine funktionalitaet in klassen zu kapseln ....
Dabei zuerst die Schnittstellen dafü zu entwerfen ....
Dann die Schnittstellen performance kritisch noch mal überdenken (aka kann man damit überhaupt performant werden)
Dabei die einzelnen Methoden der Schnittstellen bewerten, welche muss schnell gehen, welche ist irrelevant.
Meist hasst wenn das Ergebniss siehst dann auch schon ne konkrete Implementation im Hinterkopf ...

Anmerkung:
Ne "Klassische" Abstraktion (virtualitaet) hat immer nen Performance Overhaed ... aka kostet was.
Grad bei Containern will man das oft nicht haben ...
Aber Abstraktionen gehen auch anders. Headerimplementierungen / inline am besten noch generisch durch templates sind dann dein Freund ...

Ciao ...
Fenriswolf
Beiträge: 27
Registriert: 11. November 2014 18:06

Re: QMultimap oder Parent->Child-Klassen?

Beitrag von Fenriswolf »

hi RHBaum,
ui, erstmal jede menge input fürn anfänger...

da die datei die ich einlese nur etwa ~1,5MB groß ist ist die performance denk ich eher nebensächlich. (aber natürlich schöner, wenns schneller passiert ;))
ich denke, dann muss ich mich nochmal mit den klassen auseinander setzen

danke dir für die hilfe
Ich bin die Summer meiner Erfahrungen; und heute bin ich mehr, als ich gestern war
RHBaum
Beiträge: 1436
Registriert: 17. Juni 2005 09:58

Re: [gelöst]QMultimap oder Parent->Child-Klassen?

Beitrag von RHBaum »

da die datei die ich einlese nur etwa ~1,5MB groß ist ist die performance denk ich eher nebensächlich.
Bei sowas ist es auch immer überlegenswert, eine vorhandene Implementierung zu nehmen, und einen "benutzerdefinierten" Reader/Writer für das FIleformat zu schreiben ...
Vorteile wären:
Man hat nen in der Praxis bewährtes Interface
Man bekommt Konvertierungen in Standardformate (xml Json ... ) einfach mit dazu ...

Nachteil:
Performancetechnisch meist nicht das 100% Optimum
Enarbeitung in Fremde API's. oft nicht trivial ....
ich denke, dann muss ich mich nochmal mit den klassen auseinander setzen
Ich hoffe Du meinst hier spezielle Klassen und nicht generell Klassen an sich ^^ :twisted:

Ciao ...
Fenriswolf
Beiträge: 27
Registriert: 11. November 2014 18:06

Re: [gelöst]QMultimap oder Parent->Child-Klassen?

Beitrag von Fenriswolf »

das auslesen der datei ist nicht das Problem (*.dat - alle Daten im Klartext vorhanden)

nein, nicht klassen an sich, doch konnte ich bisher dieses Thema meist umgehen (bin immernoch anfänger)
und ich komme mit learning-by-doing am besten klar. also, aufgabenstellung und probleme abarbeiten. (mit übungen in büchern komm ich nicht klar :/)
Ich bin die Summer meiner Erfahrungen; und heute bin ich mehr, als ich gestern war
RHBaum
Beiträge: 1436
Registriert: 17. Juni 2005 09:58

Re: [gelöst]QMultimap oder Parent->Child-Klassen?

Beitrag von RHBaum »

und ich komme mit learning-by-doing am besten klar.
geht sicher den meisten so ... der Lerneffekt ist hier am höchsten.

Aber das große Problem, bei speziellen Aufgabenstellungen kommt man immer ganz schnell in spezielle Problematiken rein, die für das lernen auch mal hinderlich sein können.
Es ist ziemlich Disziplin gefragt, sich Aufgabenstellungen für das passende "Level" zurechtzulegen ....

GUI's z.b. sind nie trivial ...
3D Programmierung erst recht ned.
Trotzdem versuchen viele damit "aufgabenorientiert" anzufangen obwohl sie noch ned mal nen medium komplexes konsolenprogramm hinbekommen würden ^^

Aber Dein thema ist recht schön für sowas ....
du brauchst nur streams, schlimmstenfalls nen tokenizer, und eigene Datenklassen.
Für Spätere flexibilitaet, multithreading themen etc empfehle ich dir, die QT klassen (QTextStream, QMap und co) erstmal aussen vor zu lassen und das mit stl (fstream, map) zu implementieren.

Ciao ...
Fenriswolf
Beiträge: 27
Registriert: 11. November 2014 18:06

Re: [gelöst]QMultimap oder Parent->Child-Klassen?

Beitrag von Fenriswolf »

:D ich würde mich bei jetzigem Stand nie in die 3D-Programmierung oder Treiber wagen (ich hab bei 3D schon mal reingeschaut... das is n ding, worüber ich in ein paar Jahren vllt nochmal nachdenke)

aber nochmal btt:
ich würde mir jetzt eine Klasse aufbauen, in der ich die Zentralen in einer Liste speichere, die Module in einer Map<*verweis auf position der Zentrale in der Liste*, *name des Moduls*>
Problem für mich: aus dem Namen des Moduls ergeben sich Eigenschaften (z.b. 1.Modul: 8Kontakte, 4Fühler, 2Ventile; 2.Modul: 0Kontakte, 8Fühler, 0Ventile; etc).
Gibt es (außer in einer Datenbank) eine sinnvolle Möglichkeit sowas zu speichern? das kann (würde ich bevorzugen) hardcoded passieren, weil sich an diesen eigenschaften nichts ändert

EDIT: Ich denke, ich bin selbst drauf gekommen: ich werde es als komma-getrennten String speichern. So kann ich alles einfach speichern und bei bedarf auslesen :D
Ich bin die Summer meiner Erfahrungen; und heute bin ich mehr, als ich gestern war
Antworten