Sven Rautenberg: Objektorientierung - Frage

Beitrag lesen

Moin!

Ich sammle mal:

$myObject = new object();
$myObject->setBox1($_POST["box_1"]);
$myObject->setBox2($_POST["box_2"]);
$myObject->setBox3($_POST["box_3"]);
$myObject->getBox1();
$myObject->getBox2();
$myObject->getBox3();
$myObject->save(); // In DB speichern


>   
> d) denke ich komplett falsch?  
  
Was auch immer dein Objekt jetzt genau tun soll, es tut zuviel. Aus der Beschreibung entnehme ich mindestens folgende Features:  
  
 - Formulardaten entgegennehmen  
 - Daten oder wohlmöglich ganzes HTML mit Formulardaten wieder ausspucken  
 - Speichern der Daten in einer Datenbank  
 - Lesen der Daten aus der Datenbank  
 - Pro Datenfeld eine eigenständige Methode zum Schreiben und Lesen  
  
Jeder der Teilaspekte ist für sich genommen schon so komplex, dass man ihn in der Regel nicht mit einer einzigen Klasse lösen wird. Wenn ich mal auf größere Frameworks schaue, dann findet man dort meist:  
  
Eine Klasse, die ein Formular repräsentiert. Pro Formularelement weitere Klassen. Validierung von Formulardaten in eigenen Validatorklassen. Damit hat man dann den Formularteil abgedeckt.  
  
Datenspeicherung in der Datenbank hat auch mindestens drei Klassen: Die DB-Verbindung, ein Ergebnisobjekt der Abfrage und dann Einzelobjekte der einzelnen Datenzeilen. Tendentiell sind es mehr, wenn man noch eine Abstraktionsschicht für unterschiedliche Datenbanken mit einrechnet.  
  
Und das ganze ist sicherlich eingebettet in irgendein Konstrukt, welches das Formular an den Browser ausgibt und das abgeschickte Formular irgendwie entgegennimmt.  
  
  
Objektorientierung heißt auch, dass das Ganze größer sein kann als die Summe seiner Teile. Indem man pro Klasse nur eine Aufgabe erledigt, erlaubt man sich damit, diese Klasse später auch für andere Dinge wiederzuverwenden.  
  
Ach ja: Code wiederzuverwenden ist sowieso eine gute Idee. Alle wichtigen Web-Probleme, die man üblicherweise hat, sind bereits gelöst worden. Die Aufgabe besteht darin, diese gelösten Probleme in Form von Code im Internet zu finden und zu benutzen, und sich seine Zeit nicht damit zu verschwenden, die bereits gelösten Probleme erneut zu lösen. Dann kann man sich in der Zeit nämlich mit den Problemen beschäftigen, für die es noch keine Lösung gibt.  
  
 - Sven Rautenberg