Was ist objektorientiere Programmierung?
-
Was macht objektorientiere Programmierung aus und was zeichnet objektorientiere Programmiersprachen aus?
-
Google, Wikipedia, ...
-
... c-plusplus.net ...
-
_matze schrieb:
Google, Wikipedia, ...
Nun, die Erfahrung hier (im Forum) zeigt, dass die Fragen vom OP nicht einfach mit google und wikipedia beantwortbar sind, da es doch recht unterschiedliche "Definitionen" von OOP gibt, und vielmehr noch "was eine Sprache zur OOP-Sprache macht". Ich erwarte eine mehrseitige Diskussion
-
_matze schrieb:
Google, Wikipedia, ...Nun, die Erfahrung hier (im Forum) zeigt, dass die Fragen vom OP nicht einfach mit google und wikipedia beantwortbar sind, da es doch recht unterschiedliche "Definitionen" von OOP gibt, und vielmehr noch "was eine Sprache zur OOP-Sprache macht". Ich erwarte eine mehrseitige Diskussion
Ich glaube ihr stimmt mir zu, wenn keiner mehr eine Diskussion in diesem Thema zustande bringt, oder? Ich meine, Trolle schrecken hab.
-
Standard Definition:
Objekt Orientierte Programmierung ist, wenn man sich beim Programmieren and Objekten orientiert.Und da man in jeder Sprache OO programmieren kann, ist die Frage was eine OO-Sprache ist. idR ist damit eine Sprache gemeint die OOP speziell unterstuetzt: zB in dem sie Klassen, Prototypen, Messages, etc. anbietet.
Generell ist OOP aber eine Denkweise und daher prinzipiell mit allen Sprachen realisierbar.
-
Shade Of Mine schrieb:
Standard Definition:
Objekt Orientierte Programmierung ist, wenn man sich beim Programmieren and Objekten orientiert.Was zum Einrahmen.
-
Verstehe ich es richtig?
In C würde man sagen:
Gehe zu der tür
öffne die tür
gehe durch die tür
schieße die tür.in C++
würde man sagen:
Die tür ist ein Objekt mit der fähigkeit sich zu öffnen und schließen
Die Person ist ein Objekt mit der fähigkeit sich zu bewegen.Ganz im ernst. OOP ist doch quatsch? Bevor ich mir überhaupt wieder wachgerufen habe was ich da tue hab ich mein c prog schon fertig.
-
richtigverstande? schrieb:
Verstehe ich es richtig?
In C würde man sagen:
Gehe zu der tür
öffne die tür
gehe durch die tür
schieße die tür.in C++
würde man sagen:
Die tür ist ein Objekt mit der fähigkeit sich zu öffnen und schließen
Die Person ist ein Objekt mit der fähigkeit sich zu bewegen.Ganz im ernst. OOP ist doch quatsch? Bevor ich mir überhaupt wieder wachgerufen habe was ich da tue hab ich mein c prog schon fertig.
Du hast es erfasst. Mehr musst du über oop nicht wissen.
Im endeffet programmierst du in C auch objektorientiert und das ohne klassen.
Is doch scheissegal ob du sagst:
objekt.geh_sterben();oder
geh_sterben(&objekt);
Wobei beim letzteren das objekt irgend ne datenstruktur wäre.
-
Exakt! Daher habe ich den Sinn hinter der OOP geschichte nicht verstanden!
-
sdfsdfsdf schrieb:
geh_sterben(&objekt);
Wobei beim letzteren das objekt irgend ne datenstruktur wäre.
nicht einmal zwangsläufig eine Datenstruktur. z.b: Dateideskriptoren. Diese sind in der Regel ein int. Und sie sind ebenso Objekte.
-
exakt! schrieb:
Exakt! Daher habe ich den Sinn hinter der OOP geschichte nicht verstanden!
Wieso? Nur weil du auch in Sprachen OOP programmieren kannst, die dies nicht durch bestimmte Sprachmittel unterstützen, hast du die OOP nicht verstanden?
-
Gibt doch genug Literatur zum Thema OOP.
Mein Tipp: Einfach mal eins davon lesen. Und danach vielleicht mal einen Blick in die Sourcen eines wirklich großen Projekts werfen, das objektorientiert programmiert ist.
Vielleicht ist danach ja der Tellerrand etwas näher gerückt.
-
Shade Of Mine schrieb:
Standard Definition:
Objekt Orientierte Programmierung ist, wenn man sich beim Programmieren and Objekten orientiert.Grandios
-
byto schrieb:
Und danach vielleicht mal einen Blick in die Sourcen eines wirklich großen Projekts werfen, das objektorientiert programmiert ist.
Kannst du eins empfehlen? Vielleicht was kleines bis mittelgroßes, nicht gleich Eclipse oder sowas.
-
RobinMo schrieb:
Was macht objektorientiere Programmierung aus
man nähert sich der Frage am besten, indem man sich fragt, wozu OOP überhaupt gut ist?
Eine Antwort (unter mehreren möglichen) ist: um den Programmierer vor seiner eigenen Schusseligkeit und Kurzsichtigkeit zu bewahren.
Ein Softwaredesigner mit IQ 170 könnte wohl nahezu jedes hochkomplexe Programmierproblem auch ohne OOP lösen, und zwar so, daß das Ergebnis dennoch durchschaubar, offen und leicht erweiterbar ist.
Der Durchschnittsprogrammierer hat - sorry, wenn ich jetzt einigen auf die Füße trete - nicht immer IQ 170 und es fehlt ihm daher oft an planerischem Weitblick und Kurzzeitgedächtnisleistung, um so viele Details gleichzeitig im Kopf parat zu haben, wie nötig sind, um hochkomplexe Programmprobleme ohne die Sicherheit der OOP-Datenkapselung und OOP-Schnittstellendefinitionen zu lösen.
OOP zwingt den Programmierer früh zu mehr Sorgfalt und mehr Denkarbeit im Voraus (Klassendefinitionen, Schnittstellen usw...) und hindert ihn daran, einige grobe Fehler zu machen (Zugriff auf private members usw.).
Dies wiederum ermöglicht es, größere Programmsysteme zu überblicken als es ohne OOP möglich wäre, denn die Funktionalität ist in überschaubaren Einheiten (Klassen) eingeteilt und mit klaren Zugriffsregeln versehen - der Programmierer muß dann weniger viele Dinge gleichzeitig im Kurzzeitgedächtnis halten, denn das nach außen hin unwichtige versteckt sich ja in den privates einer Klasse, das spart Kurzzeitgedächtnisleistung und IQ, vermindert Streß und reduziert Fehlerquellen.
Abgesehen davon ist ein weiterer Kern der OOP die Datenzentriertheit: in der OOP bestimmen die Daten, was mit ihnen gemacht werden darf.
-
supertux schrieb:
sdfsdfsdf schrieb:
geh_sterben(&objekt);
Wobei beim letzteren das objekt irgend ne datenstruktur wäre.
nicht einmal zwangsläufig eine Datenstruktur. z.b: Dateideskriptoren. Diese sind in der Regel ein int. Und sie sind ebenso Objekte.
Das nenne ich Kapselung
-
u_ser-l schrieb:
Eine Antwort (unter mehreren möglichen) ist: um den Programmierer vor seiner eigenen Schusseligkeit und Kurzsichtigkeit zu bewahren.
Äh... Nein. Schlechter OO-Code ist keinen deut besser als schlecter XY-Code.
@sdfsdfsdf:
wenn ich file.open() sage, ist es für dich OOP und wenn ich fopen(file) sage, nicht. stimmts?
-
Shade Of Mine schrieb:
Äh... Nein. Schlechter OO-Code ist keinen deut besser als schlecter XY-Code.
Wer redet hier von schlechtem OO-Code ? OO zwingt den Programmierer, mehr *vorher* nachzudenken, das Ergebnis ist typischerweise besser wartbarer Code als ohne OO.
-
u_ser-l schrieb:
Wer redet hier von schlechtem OO-Code ? OO zwingt den Programmierer, mehr *vorher* nachzudenken, das Ergebnis ist typischerweise besser wartbarer Code als ohne OO.
Warum muss ich bei OO mehr vorher nachdenken?