OOP: Weiß die Dose in welcher Schublade sie liegt???
Verfasst: Montag 12. Juni 2006, 13:16
Ich hab gerade mal ein grundsätzliche Frage... Bisher hab ich Klassen nie so richtig als Objekte angesehen, die Daten/Dinge repesäntieren. Deswegen weiß ich nicht so genau wo welches Attribut/Methode hingehört.
Mal ein Beispiel:
Ich hab folgende Hirachie:
Ich würde sagen der Klassische Fall.
Wo Kommen die Attribute parent_id hin und wo die Methoden save_to_db() ???
Ich wollte das so machen, das jede Klasse (Schreibtisch, Schublade, Dose) die Methode save_to_db() bekommt.
Nun gibt es mehrere Möglichkeiten:
1. Ich rufe Schreibtisch.save_to_db() auf. Der Schreibtisch wird in die DB eingetragen und bekommt eine ID, die ich der nächsten Methode mitgebe, also: Schublade.save_to_db(ID). Die Schublade speichert sich dann in die DB und vermerkt die parent_id... usw...
2. Jedes Objekt hat das Attribut parent_id welches bei der Instanzierung mitgegeben wird. Bei dem Aufruf der save_to_db()-Methode braucht man die IDs also nicht übergeben...
3. Nicht die Dose hat eine Methode save_to_db(), sondern die Schublade speichert die Dose in die DB. Von daher muß die Dose garnicht wissen in welcher Schublade sie liegt...
Welche Variante ist die "Beste" ???
Mal ein Beispiel:
Ich hab folgende Hirachie:
- 1. Ebene: Schreibtische
- 2. Ebene: Schubladen
- 3. Ebene: Dosen
- 2. Ebene: Schubladen
Ich würde sagen der Klassische Fall.
Wo Kommen die Attribute parent_id hin und wo die Methoden save_to_db() ???
Ich wollte das so machen, das jede Klasse (Schreibtisch, Schublade, Dose) die Methode save_to_db() bekommt.
Nun gibt es mehrere Möglichkeiten:
1. Ich rufe Schreibtisch.save_to_db() auf. Der Schreibtisch wird in die DB eingetragen und bekommt eine ID, die ich der nächsten Methode mitgebe, also: Schublade.save_to_db(ID). Die Schublade speichert sich dann in die DB und vermerkt die parent_id... usw...
2. Jedes Objekt hat das Attribut parent_id welches bei der Instanzierung mitgegeben wird. Bei dem Aufruf der save_to_db()-Methode braucht man die IDs also nicht übergeben...
3. Nicht die Dose hat eine Methode save_to_db(), sondern die Schublade speichert die Dose in die DB. Von daher muß die Dose garnicht wissen in welcher Schublade sie liegt...
Welche Variante ist die "Beste" ???