hotti: OOP: Behandlung von Benutzereingaben für Konstruktor

Beitrag lesen

hi,

Vielen Dank für diesen Hinweis. Was in welche Klassen gehört und wann man weitere Klassen nimmt, dass ist in der Theorie bei den Säugetier->Pferd, Fahrzeuge->Auto etc. Beispielen immer sehr einfach.

OOP ist sehr klischeebehaftet ;)

O.g. Beispiele führen zur Neigung, komplexe Vorgänge noch viel komplexer in Programmstrukturen abzubilden.

In der Praxis ist das aber für mich schwierig, da ich prozess-/funktionsorientiert gelernt hat.

Marx ist die Theorie, Murx ist die Praxis. Programmiere nicht der OOP willen sondern praxisnah. Egal, ob mit oder ohne OOP, das Ziel sollte immer darin bestehen, einen Code so hinzuwerfen, dass redundanter Code vermieden wird und dass er übrschaubar bleibt, nicht nur für etwaige Mitarbeiter, auch für Dich selbst. Genausowenig sind vogelwilde Klassenhierarchien das Ziel, strebe flache Hierarchien an.

Was z.B. könnte ein Benutzer von der Gruppe erben? Den Namen der Gruppe? Oder vielleicht doch ein paar Methoden wie Neuanlegen, Ändern, Löschen?

Die o.g. Methoden brauchst Du in beiden Klassen, Benutzergruppe, Benutzer, um im Beispiel zu bleiben. Wenn nun der Benutzer von der Gruppe die Methoden erbt, Du wirst die in Klasse Benutzer überschreiben müssen, weil die Attribute andere sind. Und schon hast Du redundanten Code. Ja, und wenn sich dann mal der Speicherort für die Daten ändert, dann musst Du den Code an zwei Stellen ändern.

Lösung: Mache die Methoden Neuanlegen, Ändern und Löschen unabhängig von den Attributen und unabhängig vom Speicherort! Wow, wir kommen zur Sache *G: eine Klasse 'Persistent Objects', die Klassen Benutzergruppe und Benutzer treten das Erbe an auf gleicher Ebene. Der Benutzer muss nicht von der Gruppe erben, nur weil er wissen muss, zu welcher Gruppe er gehört. Dem Benutzer wird nur ein Attribut verpasst, fertig.

Insbesondere um die objektorientierte Programmierung zu lernen, habe ich mich mal an Java versucht, aber da fehlte mir dann irgendwann die Motivation und ich habe mich gefragt, ob ich schon mit der nächsten "Fremdsprache" anfangen will, wo ich mir bei der anderen gerade mal ein Bier bestellen oder nach dem Weg zum Bahnhof fragen kann.

Bleib doch ersteinmal bei PHP, Klasse Benutzer, Du wirst es auf jeden Fall brauchen.

Viele Grüße,
Horst