Objektorienterte Programmierung - Vorteile von Klassen?

  • Hallöchen,




    ich befasse mich schon etwas länger mit PHP etc. und fange derzeit ein neues Projekt an.
    Bisher arbeite ich komplett ohne Klassen. Nun wollte ich damit anfangen, jedoch stellt sich mir die Frage, welche Vorteile man aus Klassen zieht.
    Ich persönlich sehe keine Vorteile in Klassen, da man das Ganze auch mit Funktionen bewerkstelligen kann.


    Gibt's hier jemanden, der mir eine Antwort darauf geben kann? :)

  • Der Vorteil an OOP ist ganz klar die Strukturierung. Letztendlich ist OOP eigentlich eher ein Pattern nach dem man entwickelt.


    Am Beispiel Feuerwehr:



    Jetzt kannst du ein Objekt der Klasse Standort erstellen. Diesem Standort weißt du einige Stellplätze zu, denen du bereits jeweils ein Fahrzeug zugewiesen hast. Nun kannst du über die Hierarchie entsprechend auf die Objekte und deren Methoden zugreifen. Jedes Fahrzeug hat seine eigene Methode "fahreZumEinsatzort" und führt für genau dieses Fahrzeug die entsprechenden Berechnungen durch. Dies lässt sich ohne Klassen und Objekte eher umständlicher lösen.


    Und sehr schick ist dann auch der Punkt Vererbung. Ein Löschgruppenfahrzeug kann z.B. von der Klasse Fahrzeug erben. Bietet dann noch die Methoden "getWassermenge" und "fülleTank".


    Hoffe das erklärt so ein bisschen die Vorzüge. Ansonsten einfach mal "Warum Objektorientierte Programmierung" bei Google eingeben. Dort gibts einige interessante Facharbeiten.

  • Könnte es Probleme geben, wenn die Variable denselben Namen wie die Klasse hat?
    Also etwas wie $car = new car()?

    Nein, üblicherweise nicht. Praktisch jede Programmiersprache bringt allerdings eine bestimmte Menge an reservierten Begriffen mit: http://en.wikipedia.org/wiki/Reserved_word#Syntax


    Für die meisten Programmiersprachen existieren allerdings gängige Konventionen, welche auch die Namensgebung betreffen. So werden beispielsweise in Java Klassennamen groß geschrieben. Das hilft, Verwechslungen mit Objekten zu vermeiden. Dein Beispiel könnte in Java problemlos so aussehen:

    Code
    Klasse klasse = new Klasse();


    Mit diesem (bzw. deinem) Code erzeugst du ein neues Objekt. Wenn du dir die Klassen als Schablonen vorstellst, so erstellst du also ein exaktes Abbild mithilfe der Schablone. Allerdings sind die Eigenschaften des Objektes, deren Existenz in der Klasse ("Schablone") beschrieben ist, noch nicht mit Werten belegt. Es handelt sich also nicht um eine Variable, welche einen einzigen Wert von einem fest bestimmten Datentyp speichern kann, sondern um eine Art Container nach Vorbild der Schablone, welcher seine eigenen Eigenschaften ("Variablen") hat und Funktionen ("Methoden") ausführen kann, um diese Eigenschaften zu manipulieren. Natürlich ist darüber hinaus viel mehr möglich... Vielleicht schaust du dir für den Anfang erst einmal eine kleine Einführung in die OOP an. Zum Beispiel hier: http://openbook.galileocomputing.de/oop/