Objektorientierung und Frameworks - was bringts wirklich?

  • Hallo,
    ich würde gerne mal nachfragen was die Frameworks die es so gibt
    im Endeffekt bringen. Ich höre öfters, dass man damit eine Menge Zeit
    sparen kann. Oder das die Objektorientierte Programmierung ja so super ist.

    Bisher finde ich keine Vorteile der Frameworks und dieses schöne Auto
    Beispiel in den ganzen Tutorialen verdeutlicht auch nicht wirklich einen
    funktionellen nutzen, gegenüber der prozedualen Programmierung.

    Könnt ihr mir praktische Anwendungsbeispiele nennen wo Frameworks wie
    Zend usw Sinn machen und man auf die Objektorientierung so gut wie nicht
    verzichten kann?

    (Ich habe mir mittleweile bis einschließlich Vererbung alles von der
    objektorientierten Programmierung beigebracht.)

    Danke

  • Objektorientierung ist einfach effektiver und flexibler.
    Willst du z.B. flexibel Formulare erstellen kannst du z.B. für jeden Input-Typ eine Funktion machen. Da du vielleicht mehrere Formulare erlauben willst, übergibst du dem ein Daten-Array. Dann muss eine andere Funktion zur Registrierung im Array aufgerufen werden. Erster Vorteil von OOP: Die Übergabe ist nicht in dieser Form nötig.
    Ins Array musst du dann Informationen zur Validierung packen. Möglichkeit 1: Zentral die Validierungs-Optionen abarbeiten => unflexibel. Möglichkeit 2: Callbacks übergeben. Die Callbacks zu handhaben ist wiederum kompliziert.
    Zweiter Vorteil von OOP: Einfach eine Member-Funktion definieren, die das übernimmt. Keine separate Eintragung von Callbacks nötig.
    Jetzt brauchst du vielleicht einen neuen Typ: Passwort-Eingabe, was sehr ähnlich zur normalen Eingabe ist. Mit Funktionen hast du nun zwei Möglichkeiten: Komplett neu schreiben oder andere Funktion aufrufen und Änderungen revidieren.
    Dritter Vorteil von OOP: Du kannst ableiten, einfach einzelne Element-Funktionen ändern und den Rest beibehalten.
    Mit einer Aufteilung der Funktionen wäre das natürlich auch mit prozeduraler Programmierung möglich, doch du bräuchtest eine noch komplexere Callback-Struktur, um diese Form des Polymorphismus zu simulieren.
    Anschließend muss die eigentliche Verarbeitung stattfinden. Du hast eine Funktion, die das Array mit den Formulardaten übernimmt und einige Callbacks handlen muss. Nun übergibst du ihr aus Versehen ein anderes Array, das vielleicht bloß ein fetch-Ergebnis war. Ergebnis: Fehler treten tief in der Funktion auf. Wegen der Callbacks noch problematischer. Du weißt nicht, von wo genau ein Callback aufgerufen wurde und es verursacht dann Fehler auf Grund falscher Werte im Array.
    Vierter Vorteil von OOP: Du kannst die korrekte Struktur der Daten über Typehinting oder Element-Funktionen garantieren. Bei einer falsch verwendeten Variable schlägt der Interpreter an Ort und Stelle Alarm.
    Hier siehst du meine Implementierung. Bitte beachte, dass sie unter AGPL steht.

    Außerdem sehr praktisch: Automatische Code-Erzeugung. Du kannst dir problemlos MySQL o.ä. mit OOP erzeugen lassen - und das einmalig und nicht jedes Mal neu.

    Viele liebe Grüße
    The User

  • Ergänzend zu dem guten Beitrag von The_User noch ein pragmatischerer Punkt:

    Übersichtlichkeit und schnellere/leichtere Erweiterbarkeit deines Codes

    Lass dir das von jemand gesagt sein der ein halbwegs komplexes Social Network prozedural runtergeschrieben hat. :D
    Beim erstmaligen coden ist das noch kein größeres Problem. Aber wenn es dann später zu Anpassungen und Erweiterungen kommt macht das wirklich keinen Spaß.

    Ein weiterer eher pragmatischer Grund ist der eigene Namensraum für Variablen (bzw. Eigenschaften) innerhalb von Klassen.

    "Programming today is a race between software engineers
    striving to build bigger and better idiot-proof programs,
    and the universe trying to build bigger and better idiots.
    So far, the universe is winning."
    Rick Cook

  • Es geht vor allem alles intuitiver.
    Man erstellt den Datensatz und wendet die passende Operation an.
    Im übrigen hat auch MVC im DB-Bereich große Vorteile: Einmal sorgst du für das Handling der Daten und einmal für die Darstellung im Template. => Flexibilität.

    Aber man sollte sich nicht so fixieren. Man kann Prozeduren, OOP und MVC gemischt gut verwenden.

    SinnlosS
    Für den Namensraum wird es ja bald etwas semantisch besseres geben, das auch Klassen enthalten kann: Namensräume.^^
    Man sollte den Vorteil mehrerer Objekte eines Typs nicht vergessen. Eine Interaktion zwischen Objekten ist viel einfacher als zwischen Arrays. Seit clone haben Arrays auch keine Vorteile mehr.

  • Hier ein Auszug aus einem Tutorial von mir: