# Aufgabenverteilung in zwei Klassen?



## Leeprasteen (17. Aug 2004)

es geht um zwei klassen Class1 und Class2. Class1 bildet ein bestimmtes objekt ab, dass mit datenbankdaten gefüllt wird. Class2 erstellt eine ArrayList mit Instanzen von Class1 in der alle objekte aus der datenbank aufgenommen werden.

meine frage wäre jetzt, welche von beiden klassen die daten für class1  aus der datenbank holt!?
ermittelt Class2 nur die anzahl und ID der objekte, instantiiert dann Class1 und diese holt sich die restlichen daten für dieses objekt aus der datenbank oder fragt Class2 gleich für jedes objekt die vollständigen informationen aus der datenbank ab und übergibt sie Class1 im Konstruktor. somit bräuchte Class1 gar keine Verbindung zur Datenbank!?


----------



## Beni (17. Aug 2004)

Ich weiss nicht was class1 ist... aber ich fände es praktischer wenn sie sich die Infos selbst holt. Solltest du sie mal erweitern, musst du nur class1, und nicht auch noch class2 verändern.


----------



## bygones (17. Aug 2004)

so wie ich es verstanden habe würde ich es andersrum machen...
class1 scheint die model klasse zu sein - also das eigentlich Objekt das die Datenbank repräsentiert. 
class2 scheint mehr die Controller Klasse zu sein die dafür zuständig ist class1 instanzen zu erzeugen. Ich fände es daher logische dass class2 sich um die beschaffung der daten für die class1 objekte kümmert und class1 eine reine model klasse bleibt !


----------



## Beni (17. Aug 2004)

Jetzt kannst du auswählen :lol: 

Was sind denn das für Klassen?


----------



## Leeprasteen (17. Aug 2004)

also Class2 ist für die Verwaltung von Instanzen von Class1 zuständig.
allerdings ist das nicht die einzige aufgabe von Class2. im programm gibt es mehr als nur class1 - also mal angenommen Class1a, Class1b, Class1c,... (wobei diese drei Klassen nichts miteinander zu tun haben, hab nur den namen von vorhin wieder verwenden wollen) jedenfalls verwaltet Class2 die Instanzen von Class1a, Class1b, Class1c,...
und jetzt war ich mir eben nicht sicher, ob jede Instanz sich die Daten selbst holt oder schon übergeben bekommt. denn von der kapselung her fänd ichs logischer jede holt sie selbst - aber wenn man die anzahl der datenbankzugriffe betrachtet, wärs widerum besser wenn Class2 nur einmal auf die datenbank losgeht und der entsprechenden Instanz im Konstruktor alle notwendigen Daten übergibt!?


----------



## bygones (17. Aug 2004)

wie ich gesagt habe - für mich erscheinen die Klassen Class1x als Datenklassen die einzig und allein dafür da sind die Daten die in der Datenbank stehen zu repräsentieren.
Class2 hingegen scheint der Manager zu sein - er verwaltet und erstellt die Objekte.

Laut Model - View - Controll Pattern sollten diese Ebenen strikt getrennt werden - d.h. die Datenklasse soll nicht wissen woher die Daten kommen und was mit ihnen geschieht - sie sind dafür da sie zu speichern....
Die Controll Klasse hingegen soll keine Daten speichern, sie ist dafür zuständig die Daten zu holen und an die Model Klassen weiterzugeben !

Daher bin ich dafür Class2 als DBManager zu nehmen und die Klassen Class1x haben mit der DB nix zu tun !


----------



## Leeprasteen (17. Aug 2004)

klingt sinnvoll - werds wohl so machen - thx


----------

