db4o Developer Community

db4o open source object database, native to Java and .NET
Welcome to db4o Developer Community Sign in | Join
in Search
More Search Options

Verständins-Frage zu Abhängigkeiten zwischen zu speichernden Klassen

Last post 08-31-2008, 12:58 AM by Peter Brightman. 3 replies.
Sort Posts: Previous Next
  •  07-31-2008, 08:45 AM 50409

    Verständins-Frage zu Abhängigkeiten zwischen zu speichernden Klassen

    Normal 0 21 false false false DE X-NONE X-NONE /* Style Definitions */ table.MsoNormalTable {mso-style-name:"Normale Tabelle"; mso-tstyle-rowband-size:0; mso-tstyle-colband-size:0; mso-style-noshow:yes; mso-style-priority:99; mso-style-qformat:yes; mso-style-parent:""; mso-padding-alt:0cm 5.4pt 0cm 5.4pt; mso-para-margin-top:0cm; mso-para-margin-right:0cm; mso-para-margin-bottom:10.0pt; mso-para-margin-left:0cm; line-height:115%; mso-pagination:widow-orphan; font-size:11.0pt; font-family:"Calibri","sans-serif"; mso-ascii-font-family:Calibri; mso-ascii-theme-font:minor-latin; mso-hansi-font-family:Calibri; mso-hansi-theme-font:minor-latin; mso-fareast-language:EN-US;}

    Ich hab da ein kleines Verständnis-Problem, und eventuell eine Lösung, allerdings wollte ich sicher gehen, dass ich mir das richtig gedacht habe.

     

    Um das Problem zu vereinfachen habe ich 3 relativ einfache Klassen:

     

    Klasse Zutaten (Zucker, Mehl, Ei, …)

    Klasse Mengeneinheiten (für kg, g, EL, TL, Priese, …)

    Klasse Rezepte (Omelette, Bratkartoffeln, Pizza, …)

     

    Dafür habe ich mittels Java eine GUI erstellt, in der man Rezepte verwalten kann. Zutaten und Mengeneinheiten werden in einem speziellen Dialog (Stammdaten) erfasst und auch in db4o gespeichert. Bei der Erfassung der Rezepte werden Zutaten und Mengeneinheiten nicht manuell eingetippt, sondern eben aus den Stammdaten ausgewählt. In der Klasse Rezepte sollen also die Objekte von Zutaten und Mengeneinheiten gespeichert werden.

     

    Nun habe ich mir die Frage gestellt, wie ich die Klasse Rezepte definiere. Da es ja mehrere Zutaten sein können, werde ich mit einer Datensammlung wie z.B. einer ArrayList arbeiten. Das gleiche gilt natürlich auch für die Mengeneinheiten. Das Problem ist nur, dass die Mengeneinheit von der Zutat abhängt. Damit scheiden also zwei unabhängige ArrayListen aus.

     

    Nun hatte ich zwei Ideen:

    1.       Als erstes habe ich an das Java-Objekt Vector gedacht. Damit könnte ich das abbilden, ich weiß nur nicht, on db4o damit umgehen kann.

    2.       Ich mache eine Art Zwischenklasse (z.B. RezeptZutat) in der ich die Objekte für Zutat und Mengeneinheit speichere. Diese Klasse würde ich dann in einer ArrayList in der Klasse Rezepte speichern. Ich denke, das sollte möglich sein, die Frage ist nur, ob es so auch üblich ist.

     

    Ich hoffe, ich habe mich einigermaßen verständlich ausgedrückt. Falls nicht, einfach fragen.

  •  07-31-2008, 10:16 AM 50412 in reply to 50409

    Re: Verständins-Frage zu Abhängigkeiten zwischen zu speichernden Klassen

    Also ich würde das zweite Vorgehen bevorzugen, weil so die Zuordnung eindeutig ist und das ganze auch leicht zu händeln ist.

    In einer anderen Programmiersprache würdest du ja auch nichts anderes machen, als ein Array mit einem Record zu speichern. Der Record enthält halt dann Zutaten und Mengeneinheiten. 

    Um mehrere Objekte zu speichern kannst du verschiedene Konstrukte nutzen, z.b. ArrayList, Sets, ...

    Du könntest theoretisch auch 2 Arrays nehmen und dann halt immer für die Zugehörigen Elemente(Zutat und Mengeneinheit) den gleichen Arrayindex verwenden. 

    Zum ersten Vorschlag kann ich sagen, das db4o mit Vector umgehen kann. Wäre aber mal interressant zu hören, wie du das damit anstellen möchtest.

    Mfg Origon
     


    Germany
  •  07-31-2008, 01:52 PM 50422 in reply to 50412

    Re: Verständins-Frage zu Abhängigkeiten zwischen zu speichernden Klassen

    Origon45:

    Also ich würde das zweite Vorgehen bevorzugen, weil so die Zuordnung eindeutig ist und das ganze auch leicht zu händeln ist.


    Ja, ich denke auch, dass es die beste Lösung ist. Danke.

    Origon45:

    Du könntest theoretisch auch 2 Arrays nehmen und dann halt immer für die Zugehörigen Elemente(Zutat und Mengeneinheit) den gleichen Arrayindex verwenden.


    Daran hab ich zwischendurch auch schon gedacht, scheint mir aber bei komplexeren Klassen nicht praktikabel bzw. nicht gerade übersichtlich, weil die Abhängigkeit nicht anhand der Klasse, sondern am Quellcode zu erkennen sei.

    Origon45:

    Zum ersten Vorschlag kann ich sagen, das db4o mit Vector umgehen kann. Wäre aber mal interressant zu hören, wie du das damit anstellen möchtest.


    Erwischt. Ich arbeite noch nicht lange mit Java, war nur so ein erster Gedanke. Ob das tatsächlich durchführbar wäre, weiß ich im einzelnen gar nicht.
  •  08-31-2008, 12:58 AM 50852 in reply to 50409

    Wink [;)] Re: Verständins-Frage zu Abhängigkeiten zwischen zu speichernden Klassen

    Hi GambaJo,

    also Du hast folgendes:

    Klasse Zutaten (Zucker, Mehl, Ei, …)

    Klasse Mengeneinheiten (für kg, g, EL, TL, Priese, …)

    Klasse Rezepte (Omelette, Bratkartoffeln, Pizza, …)

     

    Ich denke Du solltest die Zweite Idee wählen, Zutaten und MEs sehe ich eher als Gruppe die dann die "Zutatspositionen" sind. Doch bei einem konkreten Rezept brauchst Du ja auch dann die konkrete Menge für die ME. Ich denke man könnte auch die Zutaten erst mal "Nahrungsmittel" nennen und dann eine Klasse "Rezeptzutat" mit jeweiliger Zutat bzw. Nahrungsmittel und der eingehenden Menge als "Zutatsposition" aufführen. Außerdem fehlen noch die Arbeitsgänge und Arbeitsbereiche (falls Großküche).

     Also etwa so:

     

    Klasse Zutat/Nahrungsmittel (Zucker, Mehl, Ei, …)

    Klasse ME (für l, ml, kg, g, EL, TL, GEL, GTL, Messerspitze, Priese, …)

    Klasse Rezeptzutat (agregiert eine Zutat, eine ME, hat eine Eingehende Menge)

    Klasse Rezept (hat Name wie etwa Omelette, Bratkartoffeln, Pizza, …, hat * Rezeptzutaten)

    Falls die Zutaten immer die gleichen MEs haben, kann die ME bei Rezeptzutat entfallen und stattdessen agregierst du diese bei Zutat/Nahrungsmittel dazu. Wichtig ist die eingehende Menge bei der Rezeptzutat, sonst schmeckt's eventuell zu salzig o. ä. :(

    Rein vorsorglich bestelle ich schon jetzt mal 'ne Pizza mit Kapern und Sardellen...

    Gruß,

    Peter

     


    ~~pb~~~~~~~~~~~~~~
View as RSS news feed in XML