GU4RDI4N
24-11-2009, 15:10
hi,
ich hab da mal eine reine definitionsfrage die nur auf reinem interresse beruht:
Normalerweise sind Klassen/Instanzen eher wie Objekte gedacht.
Das heisst ich erstelle eine Klasse "Auto" (*g*) und leite davon
mehrere Instanzen ab, wovon jede Instanz ein eigenes Auto für sich darstellt.
Will man auf ein Auto zugreifen und z.B.: seine Farbe ändern,
braucht man dafür die Instanz dieses Autos und wendet auf diese Instanz dann
z.B.: die Methode ändereFarbe("blau"); an.
So hab ich es in der Schule gelernt.
Nun treffe ich aber immer häufiger auf diese "Managerklassen". (ist das ein passendes Wort dafür?)
Diese scheinen dem oben genannten (und wohl bekannten) Konzept der abstrakten Objekte zu wiedersprechen.
Die funktionieren meistens so dass man ganz am Anfang eine einzige Instanz von ihnen erstellt und mit dieser
dann auf alle Objekte zugreifen kann.
So erstelle ich zum Beispiel eine Klasse AutoManager, welche z.B.: die Methoden
"int erstelleAuto(string Farbe, int PS, string Hersteller);",
"bool ändereAuto(int AutoID, string Farbe, int PS, string Hersteller);",
"bool löscheAuto(int AutoID);" und
"int[] listeAlleAutos();" hat,
mit welcher man auf sämtliche Auto's zugreifen kann, ohne Instanziieren zu müssen,
oft sogar komplett ohne Objekte arbeiten, sondern nur mit Strings, Integer-Werten, etc... .
Und dann gibt es natürlich noch Mischformen die alle Autos listen,
bearbeiten, erstellen, löschen, etc... kann,
aber auch instanzen der Autos selbst zurückgeben kann,
aber so etwas scheint ziemlich selten zu sein.
Wiederspricht letzteres dem Konzept von OOP?
Sollte man so etwas vermeiden?
Hat es vielleicht sogar irgendwelche Nachteile/Vorteile?
Ist das Programmiersprachenabhängig?
(bin hauptsächlich PHP-Programmierer)
Wie ist eure Meinung dazu?
(Und haben diese "Managerklassen" bereits einen Namen den ich nur nicht kenne?)
(Sry falls gleich bei Google der erste Treffer die Antwort gewesen wäre,
aber ich habe unter den Stichpunkten die ich benutzt habe nichts gefunden.)
MfG
GU4RDI4N
ich hab da mal eine reine definitionsfrage die nur auf reinem interresse beruht:
Normalerweise sind Klassen/Instanzen eher wie Objekte gedacht.
Das heisst ich erstelle eine Klasse "Auto" (*g*) und leite davon
mehrere Instanzen ab, wovon jede Instanz ein eigenes Auto für sich darstellt.
Will man auf ein Auto zugreifen und z.B.: seine Farbe ändern,
braucht man dafür die Instanz dieses Autos und wendet auf diese Instanz dann
z.B.: die Methode ändereFarbe("blau"); an.
So hab ich es in der Schule gelernt.
Nun treffe ich aber immer häufiger auf diese "Managerklassen". (ist das ein passendes Wort dafür?)
Diese scheinen dem oben genannten (und wohl bekannten) Konzept der abstrakten Objekte zu wiedersprechen.
Die funktionieren meistens so dass man ganz am Anfang eine einzige Instanz von ihnen erstellt und mit dieser
dann auf alle Objekte zugreifen kann.
So erstelle ich zum Beispiel eine Klasse AutoManager, welche z.B.: die Methoden
"int erstelleAuto(string Farbe, int PS, string Hersteller);",
"bool ändereAuto(int AutoID, string Farbe, int PS, string Hersteller);",
"bool löscheAuto(int AutoID);" und
"int[] listeAlleAutos();" hat,
mit welcher man auf sämtliche Auto's zugreifen kann, ohne Instanziieren zu müssen,
oft sogar komplett ohne Objekte arbeiten, sondern nur mit Strings, Integer-Werten, etc... .
Und dann gibt es natürlich noch Mischformen die alle Autos listen,
bearbeiten, erstellen, löschen, etc... kann,
aber auch instanzen der Autos selbst zurückgeben kann,
aber so etwas scheint ziemlich selten zu sein.
Wiederspricht letzteres dem Konzept von OOP?
Sollte man so etwas vermeiden?
Hat es vielleicht sogar irgendwelche Nachteile/Vorteile?
Ist das Programmiersprachenabhängig?
(bin hauptsächlich PHP-Programmierer)
Wie ist eure Meinung dazu?
(Und haben diese "Managerklassen" bereits einen Namen den ich nur nicht kenne?)
(Sry falls gleich bei Google der erste Treffer die Antwort gewesen wäre,
aber ich habe unter den Stichpunkten die ich benutzt habe nichts gefunden.)
MfG
GU4RDI4N