Lass mich raten: Du hast selbst noch nie ein größeres Softwareprojekt geschrieben?
Ist ja auch nicht schlimm, aber spätestens da merkst du einen der vielen Vorteile von OOP: Du kannst Deinen Code kapseln und zigfach aufgeräumter halten als ohne OOP.
Ein Beispiel: Hast du jemals php programmiert? Man mag zu dieser Sprache stehen wie man will. Das was mich am meisten an ihr stört ist ihr völlig überladener Befehlsraum. Ich hab es jetzt nicht nachgeguckt, aber ich würd die Anzahl der bei php >so verfügbaren< Befehle/Funktionen auf locker 200+ schätzen. Ist irgendwo nett, aber wird halt auch schnell unübersichtlich und häßlich. (so fern man über Schönheitsaspekte von Code diskutieren mag)
Natürlich kann man auch in klassischen prozeduralen Sprachen wie C kapseln und Sichtbarkeit einschränken, indem man seine Funktionen auf einzelne Dateien verlagert und dann immer nur das included was man gerade braucht. Aber jedes Mal wenn ich Ansi-C programmiere rege ich mich darüber auf, welche Posix Libraries ich alle includen muss.
OOP stellt Dir nun viel schönere Hilfsmittel zur Verfügung, um deine Softwareprojekte zu strukturieren. Um Objekte zu verändern oder zu verarbeiten, stellen dir die Klassen idR nur Methoden zur Verfügung die auch passen, und oft lässt sich die Semantik von Methoden durch Ihren Objektkontext viel besser anhand Ihrer Namen zuordnen.
Heißt natürlich nicht, dass wenn man objektorientiert programmiert automatisch hübscher Code entsteht. Im Gegenteil, ich hab schon viele grausigen OOP-Code gesehen. Aber die Hürde sauberen und hübschen (und damit insbesondere für andere auch deutlich besser lesbaren) Code zu schreiben ist imho deutlich niedriger.
Das du bei OOP so tolle Dinge wie Vererbung, Sichtbarkeit, Typsicherheit quasi geschenkt bekommst sollte man natürlich auch nicht vergessen. 😉
mfg,
Christian
Edit:
Furry schriebTheJensens schriebFurry schriebDas zweite Beispiel ist auch objektorientiert
Warum wird C dann nicht als richtige OO Sprache bezeichnet?
Vermutlich, weil sie nicht als solche konzipiert wurde. Möglich ist es aber dennoch (siehe gtk).
Naja, ich persönlich würde GObjects (der Aufsatz für pseudoobjektorientiertes Programmieren mit C den gtk+ nutzt) höchstens als OOP-Light klassifizieren: Keine starke Typsicherheit, keine richtigen Sichtbarkeitsebenen und dafür dann noch eine nach meinem Geschmack äußerst häßliche Syntax.
Ne Danke, da bleibe ich lieber bei Ansi-C oder für größere Projekte C++ (wenns denn C sein soll). Auch mit GObjects bleibt C eine prozedurale/imperative Programmiersprache