Nutzt mein Programm die O.O.P. oder nicht?
-
Simon2 schrieb:
Hast Du Dein Programm in Objekten organisiert, nennt man es "objektorientiert" - ganze einfach, oder ?

Das ist alles Quack. (Okay, bevor ich weiterrede: alles IMHO!)
"Alles ist ein Objekt" mag zwar der Merkspruch für OOP sein -- aber mal ehrlich, wenn das alles, wäre, dann wäre OOP ja wirklich ein wenig trivial. "Alles ist ein Objekt", das ist ja noch schlimmer als "alles ist relativ" und für sowas bekommt man nun wirklich keinen Nobelpreis (nein, nein). Ich finde daher, man sollte OOP eher darüber definieren, was sie technisch ausmacht, nämlich die Verwendung virtueller Funktionen, um Polymorphie zu realisieren. OOP-Fanatiker sprechen ja sowieso jeder Sprache OOP-Recht ab, die nicht Vererbung, Polymorphie und Kapselung unterstützt. Mal davon abgesehen, dass es doppeltgemoppelt ist, ist es schlicht falsch: Polymorphie hat mit OOP nichts zu tun, Polymorphie gibt es nämlich auch ohne Klassen. Vielmehr ist wichtig, *wie* diese Polymorphie realisiert wird: nämlich über virtuelle Funktionen, welche durch Zeigeraddition zur Laufzeit aus einer virtuellen Funktionszeigertabelle ausgelesen werden.
=> Und hier sind wir jetzt schon einen Schritt weiter. 'new' und 'delete' braucht man zwar strenggenommen immernoch nicht, Zeiger hingegen schon (oder zumindest Referenzen), denn sonst ist eine dynamische Aufruf-Weiterleitung nicht möglich.
So, und jetzt noch zum Schluss: Programmierung arbeitet *immer* mit Objekten. Wie genau man die nun abgrenzt, mag unterschiedlich sein. Aber da Menschen einen großen Drang danach haben, alles, auch abstrakte Konzepte, zu "verdinglichen", sind Konzepte wie Datenstrukturen, Algorithmen, Programmabläufe und Variablen eben zu "Dingen" geworden. Seit Chomsky ist das sogar sprachtheoretisch untermauert, denn auch in der Programmierung benutzt man einen Satzbau mit Verben, Subjekten, ... und, ja, Objekten.
-
Konrad Rudolph schrieb:
...
"Alles ist ein Objekt" mag zwar der Merkspruch für OOP sein ...Hat das hier irgendjemand behauptet ?
Insgesamt belegst Du eigentlich nur, dass der Begiff der OOP relativ ist ... so wie alles (wie schon Einstein bewiesen hat (*) ).
Der einzige halbwegs sinnvolle Minimalkonsens scheint mir tatsächlich in dieser Aussage zu liegen: In Objekten organisiert => OOP.
Randbemerkungen: Die Klassifizierung nach "OOP" und "Nicht-OOP" ist gleichzeitig stärker umstritten als auch weniger relevant als allg. angenommen. Die Frage, ob etwsa gut programmiert ist, ist da schon wesentlicher (macht aber ebenfalls einen großen Topf auf).Gruß,
Simon2.
(*)
Als Dipl.-phys. explodiere ich regelmäßig bei solchen Aussagen ... also nicht die Ironie übersehen. (Noch schlimmer als "Quantensprung")
-
Simon2 schrieb:
Konrad Rudolph schrieb:
...
"Alles ist ein Objekt" mag zwar der Merkspruch für OOP sein ...Hat das hier irgendjemand behauptet ?
Nö, aber aus Erfahrung weiß ich, dass das (nicht notwendigerweise von Dir) noch gekommen wäre.

Ich wollte auch einfach nur Deine Aussage, die Du ja selbst schon relativiert hast, noch ein wenig weiter relativieren.
-
LukasBanana schrieb:
... und Klassen gibt es ja nach meinem Wissen nur in C++ (also nicht in C), ist also OOP, und auch Vectoren, also Container gibt es nur in C++....
--> http://www3.informatik.uni-erlangen.de/Lehre/UMLEmbSys/WS2002/folien/12-oo2c.pdf

-
vista schrieb:
LukasBanana schrieb:
... und Klassen gibt es ja nach meinem Wissen nur in C++ (also nicht in C), ist also OOP, und auch Vectoren, also Container gibt es nur in C++....
--> http://www3.informatik.uni-erlangen.de/Lehre/UMLEmbSys/WS2002/folien/12-oo2c.pdf

Ach herrje. Na ja, ich habe auch in QBASIC schon OO programmiert. Zum K*tzen.

-
Konrad Rudolph schrieb:
Ach herrje. Na ja, ich habe auch in QBASIC schon OO programmiert.
siehste wohl.
und ich in assembler.
es ist also keine frage der sprache...

-
Sprachen können nur OOP mehr (z.B. C++) oder weniger (z.B. C) unterstützen. Grundsätzlich kann man aber in C ebenso OOP programmieren (nur mit viel merh Aufwand) wie man in C++ auch komplett Prozedural Programmieren kann. Von daher ist es (imho) nicht hilfreich den OOP-Begriff an Sprachelementen (z.B. virtuellen Funktionen) festzumachen.
Wers nicht glaubt sollte mal "The Design and Evolution of C++" genauer lesen. Am Anfang stand das C mit Klassen....
OOP ist eine Vorgehensweise wie man an eine Problemlösung herangeht und wie man seinen Code organisiert. Aber wie gesagt, imho

-
iiiiiiii schrieb:
Wers nicht glaubt sollte mal "The Design and Evolution of C++" genauer lesen.
Oder z.B. das Windows-API betrachten. Komplettes C-Interface und trotzdem zu großen Teilen OOP. Was ist ein Handle anderes als ein Zeiger auf eine polymorphe Klasse, was ist CloseHandle anderes als eine virtuelle Funktion, was ist CreateFile anderes als eine Factoryfunktion?
-
audacia schrieb:
iiiiiiii schrieb:
Wers nicht glaubt sollte mal "The Design and Evolution of C++" genauer lesen.
Oder z.B. das Windows-API betrachten. Komplettes C-Interface und trotzdem zu großen Teilen OOP. Was ist ein Handle anderes als ein Zeiger auf eine polymorphe Klasse, was ist CloseHandle anderes als eine virtuelle Funktion, was ist CreateFile anderes als eine Factoryfunktion?
der ganze windows-kernel ist OO aufgebaut.
kernel objekte haben konstruktoren, destuktoren usw.
sogar eine komponente namens 'object manager' steckt im win kernel.
und fast alles ist C ohne ++

-
Konrad Rudolph schrieb:
vista schrieb:
LukasBanana schrieb:
... und Klassen gibt es ja nach meinem Wissen nur in C++ (also nicht in C), ist also OOP, und auch Vectoren, also Container gibt es nur in C++....
--> http://www3.informatik.uni-erlangen.de/Lehre/UMLEmbSys/WS2002/folien/12-oo2c.pdf

Ach herrje. Na ja, ich habe auch in QBASIC schon OO programmiert. Zum K*tzen.

Mir war irgendwie klar das einige kommen und meinen das ich glauben würde dass C++ die einzige OOP- Sprache überhaupt währe!
War vielleicht ein bischen blöd vormuliert, geb ich ja zu, deshalb hatte ich auch extra C in Klammern geschrieben um zu verdeutlichen dass ich C und C++ verglichen will!Aber jetzt noch mal meine eigentliche Frage: ist mein ProgrammCode, ganz am Anfang, OOP oder nicht, und wenn nicht wie müsste es aussehen???
Gruß LukasBanana
-
Also ich bleibe bei meiner Aussage: "Ist OOP und ich weiß nicht, warum das wichtig sein sollte."

Gruß,
Simon2.
-
Danke für deine Antwort
, aber ich denke es ist gut zu wissen was man eigentlich programmiert! 
Also ob mein Programm ein OOP ist oder nicht!
-
Ja, es ist objektorientiert.
-
iiiiiiii schrieb:
Von daher ist es (imho) nicht hilfreich den OOP-Begriff an Sprachelementen (z.B. virtuellen Funktionen) festzumachen.
Das ist Quatsch, denn auch in C realisiert man das über Funktionszeiger.
-
LukasBanana schrieb:
...ich denke es ist gut zu wissen was man eigentlich programmiert! ...
Ich denke das eben nicht.

Das hat zwar einen gewissen "S-Vergleichsfaktor", aber auch nicht mehr bei Leuten, die sich ein wenig auskennen...
Und wenn das Programm schlecht programmiert oder falsch designt ist, rettet einen das "Ist aber OOP !" nicht mehr raus.
(womit ich nicht sagen möchte, dass DEIN Programm schlecht geschrieben sei - das kann ich ann so einem Schnipsel und ohne Aufgabenbeschreibung nicht beurteilen)Gruß,
Simon2.
-
Natürlich ist das kein Argument zu sagen "Ist zwar schlecht, aber immer hin OOP!", aber das habe ich ja auch nicht gesagt!
Ich habe nur gesagt dass mann schon wissen sollte was man da schreibt!
Aber da mir meine Frage beantwortet wurde danke ich vielmals

Gruß LukasBanana
-
Na - sorry,
ich wollte Dir das auch gar nicht unterstellen, sondern lediglich ein wenig humorvoll meine These demonstrieren.
Entschuldige, wenn ich Dir auf den Fuß getreten sein sollte,

Simon2.
-
Dein Code ist bis jetzt noch nicht besonders OOP. Das einzige, was man darin erkennen kann, ist Kapselung. Außerdem spielen aber zumindest noch Vererbung und Polymorphie eine große Rolle.
Tipp am Rande:
In C++ wird gerne generische Programmierung (wie zum Beispiel in der STL) verwendet.
-
Na - sorry,
ich wollte Dir das auch gar nicht unterstellen, sondern lediglich ein wenig humorvoll meine These demonstrieren.
Entschuldige, wenn ich Dir auf den Fuß getreten sein sollte,

Naaa, werdet mal nicht sentimental! Wir haben in diesem Forum schon ganz andere Threads erlebt.

-
Konrad Rudolph schrieb:
iiiiiiii schrieb:
Von daher ist es (imho) nicht hilfreich den OOP-Begriff an Sprachelementen (z.B. virtuellen Funktionen) festzumachen.
Das ist Quatsch, denn auch in C realisiert man das über Funktionszeiger.
Ah, eine Sprache hat also auch dann ein Sprachelement wenn es zwar eigendlich nciht vorhanden ist (C hat keine virtuellen Funktionen) man es aber durch andere Mittel simulieren kann? Das trifft dann ja auf so ziemlich jede Programmeirsprache zu.
Ausserdem wage ich hier zu behaupten, daß ich auch ganz ohne virtuelle Funktionen trotzdem OOP programmieren könnte. OOP ist eine Sichtweise mit Problem umzugehen, die gewählte Sprache nur das Werkzeug diese Sichtweise umzusetzen. Ob die Sprache nun OOP unterstützt oder nicht ist dabei erstmal nebensächlich, aber es hilft natürlich enorm wenn sie es tut
