Was ist objektorientiere Programmierung?
-
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?
-
u_ser-l schrieb:
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.
Auch wenn ich dir vom Grundsatz recht gebe, das OO-Code häufig die Wartbarkeit erhöht, heißt dies noch nicht lange das alle OO-Programmierer vorher über das nachdenken, was sie umsetzen (Und damit ist OO-Code eben nicht immer Wartbarer).
Der "OO"-Code meines ehemaligen Programmierchefs halte ich für einen der am schlechtest wartbaren Dinge. Das hat aber nichts mit OO, sondern mit der Umsetzung zu tun (Und dort liegt immer die größte Fehlerquelle vor dem Rechner).
Ich bin zwar kein Vertreter von dem in C kann man OO Programmieren (Weil für mich auch Datenkapselung zu OO gehört, und die sehe ich in C nicht gegeben), aber ebenso sehe ich in dem reinen Begriff OO die Lösung aller Probleme. Viele sagen OO nehmen dieses Wort aber eher als Marketingbegriff.
cu André
-
Bashar schrieb:
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.
Jo, guck Dir z.B. mal das Spring Framework an (gibts für Java, .NET):
http://www.springsource.org/downloadIst zwar eine recht große API, aber da es verschiedene Aspekte behandelt, kannst Du Dir gut einen kleinen rauspicken und die Sourcen dazu einsehen. Das Framework ist IMO nicht nur perfekt dokumentiert, sondern ist auch ein Paradebeispiel für OOP.
-
Hi,
ich versuchs mal nem Vergleich aus dem waren Leben.
Ne Mutter von vielen kleinen Kindern muß jedes einzeln waschen. Das enstpricht prozeduraler Programmierung.
Ne Mutter von gößeren Kindern hat ihnen die Fähigkeit sich selbst zu waschen beigebracht und braucht nur noch zu jedem zu sagen "wasch dich"!. Das entspricht objektorientierter Programmierung.
Im Medizinischen Bereich stellt man dagegen Regeln auf, was als sauber zu gelten hat und das das zu realisieren ist. Das entspricht dann der logischen Programmierung (z.B. in Prolog).Gruß Mümmel
-
asc schrieb:
(Weil für mich auch Datenkapselung zu OO gehört, und die sehe ich in C nicht gegeben)
wieso soll das nicht gegeben sein?
-
supertux schrieb:
asc schrieb:
(Weil für mich auch Datenkapselung zu OO gehört, und die sehe ich in C nicht gegeben)
wieso soll das nicht gegeben sein?
asc ist c++ programmierer, ihm fehlen private, public, protected usw.
-
Weil für mich auch Datenkapselung zu OO gehört, und die sehe ich in C nicht gegeben
Kannst du's ohne Widerspruch denken?
Ist C turing-vollständig?
Wenn ja auf beides, dann kann man's in C machen.