Objekte konfigurieren

- programmiertechnik
Hallo zusammen,
wie konfiguriert man am besten Objekte ohne eine Datenbank zu benutzen?
Mein Problem:
(bitte nicht böse sein, wenn ich etwas durcheinander bringe, ich bin kein spezialist in Sachen OOP, arbeite aber daran)
Ich habe eine Vielzahl von Objekten, die von Benutzern eingerichtet, konfiguriert, geändert - wie auch immer - werden können. Ich nehme einfach mal ein Auto als Objektbeispiel.
Nun könnte ich eine simple Konfigurationsdatei erzeugen und alle Objekte darin abspeichern:
[objekt1]
paramter=wert
[objekt2]
parameter=wert
Das Objekt hat aber verschiedene Klassen, wie zum Beispiel Karosserie, Motor, Kofferraum, Fenster etc., womit ich weitere Untersektionen (Subklassen?) erzeugen müsste, was meiner Ansicht nach aber irgendwie unübersichtlich ausschaut und mir irgendwie nicht behagt.
Zunächst dachte ich an soetwas wie eine Verzeichnisstruktur. Jedes Verzeichnis wäre im Sinne einer Ober- oder Unterklasse und Dateien beinhalten die Klassendefinitionen. Ein Beispiel:
Verzeichnis:Audi
Verzeichnis:A4
Datei:Karosserie
Datei:Fenster
Verzeichnis:Motor
Datei:12Zyl
Datei:6Zyl
Verzeichnis:A8 # übrigens mein Favorit :-)
Datei:Karosserie
Datei:Fenster
Verzeichnis:Motor
Datei:12Zyl
Datei:6Zyl
Verzeichnis:BMW
usw....
Als weiteres kam mir in den Sinn bei einer einzigen Konfigurationsdatei zu bleiben mit folgendem Aufbau:
Audi:A4:Karosserie:parameter1=wert1
Audi:A4:Karosserie:parameter2=wert2
Audi:A4:Karosserie:parameter3=wert3
Audi:A4:Motor:6Zyl:parameter1=wert1
Audi:A4:Motor:6Zyl:parameter2=wert2
Audi:A4:Motor:6Zyl:parameter3=wert3
Audi:A4:Motor:12Zyl:parameter1=wert1
Audi:A4:Motor:12Zyl:parameter2=wert2
Audi:A4:Motor:12Zyl:parameter3=wert3
Audi:A8:Karosserie:parameter1=wert1
Audi:A8:Karosserie:parameter2=wert2
Audi:A8:Karosserie:parameter3=wert3
Audi:A8:Motor:6Zyl:parameter1=wert1
Audi:A8:Motor:6Zyl:parameter2=wert2
Audi:A8:Motor:6Zyl:parameter3=wert3
Audi:A8:Motor:12Zyl:parameter1=wert1
Audi:A8:Motor:12Zyl:parameter2=wert2
Audi:A8:Motor:12Zyl:parameter3=wert3
BMW:3er:Karosserie:parameter1=wert1
usw....
Und genau an diesem Punkt bin ich mit meiner Weisheit am Ende - kommt ja schon mal öfter vor. Jedes Beipiel bring Vor- und Nachteile, aber wie macht man soetwas richtig? Gibt es Standards, an die man sich halten sollte und wenn ja, wie schauen die aus? Oder wie habt Ihr das bis jetzt gemacht?
Wäre super, wenn Ihr mir helfen könntet.
Greez,
opi
Hi,
Jedes Beipiel bring Vor- und Nachteile, aber wie macht man soetwas richtig?
es gibt hier kein pauschales "Richtig". Grundsätzlich sollte man immer den Einzelfall betrachten, auch in seinem Kontext, und sich von Best Practices leiten lassen.
Gibt es Standards, an die man sich halten sollte
In Deinem Fall sehe ich vor allem strukturierte Daten, was förmlich nach XML schreit. Dies hängt aber von vielen Faktoren ab, wie beispielsweise die Änderungsrate der Daten und die Menge der Datenanalysen.
Cheatah
Hi,
dein Objekt Auto könnte z.b. mit einer Save() Methode ausgestattet
werden, die dann die Inhalte der Klasse in ein bestimmtes Format
"serialisiert". Dann würde sich eine Load() Methode als Komplementär
anbieten.
Wenn deine Klassen wiederum mit weiteren Klassen arbeiten, z.b. Auto
mit Karosse, Motor ... dann würden auch diese Unterklassen Methoden
zur Serialisierung ihrer Daten benötigen um so ihre Information an
ihre Elternklasse hochreichen zu können.
Jenachdem welche Programmiertechnologie du verwendest bietet diese dir
evt. schon vorgefertigte Patterns, die du anwenden kannst. Als Beispiel
seien hier kurz mal Reflection und Xml.Serialization von .Net genannt.
Mit Reflection bekommst du Informationen über die Elemente (Member,
Methoden, Konstruktoren etc) deiner Klasse. Xml.Serialization nutzt
in dem Moment Reflection um die Member als Xml-Nodes mit Werten
abzuspeichern.
Dir steht natürlich frei, dies auch selbst neu zu implementieren.
Wie Cheatah schon bemerkte, solltest du dich dann an "Best Practices"
orientieren.
Grüße,
Frank