Nutzt mein Programm die O.O.P. oder nicht?
-
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

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

Naja, man muss seine Fehler ja nicht wiederholen.

Gruß,
Simon2.
-
Es war ja auch von meiner Seite nicht böse gemeint!
Deshalb habe ich mich ja auch bedank!

Gruß LukasBanana!
-
Konrad Rudolph schrieb:
Ich finde daher, man sollte OOP eher darüber definieren, was sie technisch ausmacht ...
Du willst ein Konzept darüber wie definieren wie es technisch realisiert ist?
-
finix schrieb:
Konrad Rudolph schrieb:
Ich finde daher, man sollte OOP eher darüber definieren, was sie technisch ausmacht ...
Du willst ein Konzept darüber wie definieren wie es technisch realisiert ist?
Why not?
Ich wollte mich aber eigentlich nicht zu sehr an der technischen Realisierung festgeklammert, in diese Position werde ich gerade hineingedrängt. Ich wollte nur darauf hinweisen, dass längst nicht alles OO ist, nur weil es Klassen benutzt. Andererseits reicht es eben auch nicht, Polymorphie zu benutzen, um OO zu programmieren (wie vielfach behauptet wird), denn das würde ja bedeuten, dass das Benutzen von Überladung (ist auch Polymorphie) ebenfalls Objektorientierung wäre.
Dass man OO auch ohne virtuelle Funktionen programmieren kann, ist mir schon bewusst. Wie gesagt: In QB habe ich das auch schon gemacht und dort gibt es keine Funktionszeiger (und nein, mit PEEK und ABSOLUTE habe ich es nicht gemacht).
-
Konrad Rudolph schrieb:
...In QB habe ich das auch schon gemacht...
Mal ganz neben bei: QB, "QuickBasic" wenn ich nicht irre (von Windows), ist das nicht eine schon eher ausgestorbene Programmiersprache?
@Konrad Rudolph: "Verwändest du diese Programmiersprache immer noch?"Nur das wir hier von der ein und der selben Sprache sprechen: QBasic ist eine Programmiersprache von Windows die im DOS-Modus verwändet wird?
Wenn ja, nur eine Frage: "Warum verwendest du diese?"
-
Entschuldige fürs OT aber LukasBanana, man schreibt verwendet mit e und nicht mit ä. Du schreibst das so oft, dass ich mittlerweile daran erkenne, von wem der Beitrag ist, falls ich den Namen nicht gelesen habe.
Sry fürs OT.
-
LukasBanana schrieb:
Konrad Rudolph schrieb:
...In QB habe ich das auch schon gemacht...
Mal ganz neben bei: QB, "QuickBasic" wenn ich nicht irre (von Windows), ist das nicht eine schon eher ausgestorbene Programmiersprache?
@Konrad Rudolph: "Verwändest du diese Programmiersprache immer noch?"Also, um das klarzustellen: QBASIC (bzw. QuickBasic, habe ich beides schon verwendet, sind aber zwei Sachen) habe ich das letzte Mal vor fast einem Jahrzehnt programmiert, und auch damals nur unter DOS, nie unter Windows. Das geht zwar auch, aber warum sollte man das tun?

-
Konrad Rudolph schrieb:
denn das würde ja bedeuten, dass das Benutzen von Überladung (ist auch Polymorphie) ebenfalls Objektorientierung wäre.
Redefinition ist kein Polymorphismus und Überladung ist kein Polymorphismus, aber es stimmt schon, dass es nicht unbedingt objektorientierte Programmierung sein muss, wenn man eines der objektorientierten Paradigmen benutzt, zum Beispiel ist Datenkapselung natürlich auch in anderen Konzepten der Programmierung als Paradigma vertreten.
-
Konrad Rudolph schrieb:
LukasBanana schrieb:
Konrad Rudolph schrieb:
...In QB habe ich das auch schon gemacht...
Mal ganz neben bei: QB, "QuickBasic" wenn ich nicht irre (von Windows), ist das nicht eine schon eher ausgestorbene Programmiersprache?
@Konrad Rudolph: "Verwändest du diese Programmiersprache immer noch?"Also, um das klarzustellen: QBASIC (bzw. QuickBasic, habe ich beides schon verwendet, sind aber zwei Sachen) habe ich das letzte Mal vor fast einem Jahrzehnt programmiert, und auch damals nur unter DOS, nie unter Windows. Das geht zwar auch, aber warum sollte man das tun?

Ja das stimmt, ich habe es halt nun mal unter Windows laufen weil ich darauf mein aller erstes Programm geschrieben habe! Also zum anfangen eben, und in den vorhergehenden Beiträgen klang es so als würdest du immer noch darauf programmieren!

Außerdem dachte ich QBasic == QuickBasic?!
-
Konrad Rudolph schrieb:
Why not?
Weil's komplett schwachsinnig ist, deswegen.
Konrad Rudolph schrieb:
Ich wollte mich aber eigentlich nicht zu sehr an der technischen Realisierung festgeklammert, in diese Position werde ich gerade hineingedrängt.
Also bitte.
Konrad Rudolph schrieb:
Ich wollte nur darauf hinweisen, dass längst nicht alles OO ist, nur weil es Klassen benutzt. ...
Stimmt. (edit: heißt natürlich nicht dass man zwangsläufig virtuelle Methoden zur OOP nutzen muss.)
-
finix schrieb:
Konrad Rudolph schrieb:
Why not?
Weil's komplett schwachsinnig ist, deswegen.
Grmpf. Weißt Du, sowas ärgert mich. Das ist nämlich Rumtrollen. Wenn das ganze fundiert sein soll, was ich glaube, dann versuch mal, weniger extreme Aussagen mit mehr Begründung zu ummanteln. In der aktuellen Form ist es nämlich ziemlich unakzeptabel und in keiner Hinsicht förderlich.
Wenn Du denkst, dass man ein technisches Konzept vollkommen losgelöst von der technischen Umsetzung sehen kann, dann sei Dir das natürlich freigestellt. Aber wir wollen hier doch Wissenschaft und nicht Religion betreiben. Dazu gehört irgendwie auch eine wissenschaftliche Argumentation.
-
nillable schrieb:
Konrad Rudolph schrieb:
denn das würde ja bedeuten, dass das Benutzen von Überladung (ist auch Polymorphie) ebenfalls Objektorientierung wäre.
Redefinition ist kein Polymorphismus und Überladung ist kein Polymorphismus, ...
Sorry, aber das scheint mir eine relativ beliebige/individuelle/subjektive Definition von Polymorphie zu sein (erkennt man schon daran, dass eigentlich niemand von "Polymorphismus" redet in der Programmierung - in Mathe ist das natürlich ein definierter und gut benutzter Ausdruck)...
Der Verfasser postuliert a priori, dass Polymorphie immer erst zur Laufzeit "zuschlagen" darf ... und kommt dann zu dem "überraschenden" Ergebnis, dass alles Andere keine Polymorphie sei.Konrad ist aber beileibe nicht der einzige, der "Polymorphie" als umfassenderes Konzept versteht. Letztlich heißt Polymorphie nur "Vielgestaltigkeit" und meint, dass sich hinter einem Bezeichner unterschiedliche Identitäten verbergen.
Und so unterscheidet man eben zwischen Laufzeitpolymorphie (z.B. via virtual functions ... gibt aber auch andere Techniken) und Compilezeitpolymorphie (z.B. overloading, templates, ...) - egal, was irgendein FH-Dozent in 2002 mal geschrieben hat.
Gruß,
Simon2.
-
Konrad Rudolph schrieb:
Grmpf. Weißt Du, sowas ärgert mich. Das ist nämlich Rumtrollen. Wenn das ganze fundiert sein soll, was ich glaube, dann versuch mal, weniger extreme Aussagen mit mehr Begründung zu ummanteln. In der aktuellen Form ist es nämlich ziemlich unakzeptabel und in keiner Hinsicht förderlich.
Ja du hast Recht, vielleicht hätte ich das erläutern sollen, da es für dich scheinbar nicht offensichtlich ist. Hier also die Neufassung:
Es ist - IMAO - komplett schwachsinnig ein Konzept über eine mögliche (und komplett transparente) Implementierung einer Umsetzung (bzw vielmehr einer Interpretation) des Konzepts definieren zu wollen.
Ein Konzept wird technisch umgesetzt, nicht umgekehrt. Selbst wenn ein solches Konzept aus der Anwendung hervorgeht (a la Design-Patterns), steht keineswegs die Realisierung an sich im Vordergrund.
-
finix schrieb:
Es ist - IMAO - komplett schwachsinnig ein Konzept über eine mögliche (und komplett transparente) Implementierung einer Umsetzung (bzw vielmehr einer Interpretation) des Konzepts definieren zu wollen.
Leider ist diese Aussage irgendwie nicht viel besser, was eine Begründung anbelangt.

Ich möchte darauf hinweisen, dass es mir hier nicht prinzipiell um die tatsächliche technische Umsetzung geht. Also, dass im Hintergrund eine vtable sitzt, die dafür sorgt, dass zur Laufzeit die korrekte Methode aufgerufen wird. Wichtig ist nur, dass OOP einen Aufrufmechanismus postuliert, welcher zur *Laufzeit* in Abhängigkeit des Typs entscheidet, welche Methode aufgerufen wird. Hier bietet sich eine vtable als Implementierung nunmal an, genauso wie sich beim Konzept einer "Funktion, welche Daten eines Eingabetyps T1 auf Daten eines Ausgabetyps T2 abbildet" eventuell anbietet, diese über eine Hashtabelle zum implementieren. => Programmiertechnische Konzepte sind stark mit einer Umsetzung verbunden, da Effizient nunmal ein wichtiges Kriterium ist und darüber entscheidet, ob ein Konzept im echten Einsatz Erfolg hat. Das ist (laut (Ritchie|Thompson), vergessen, wer es war) auch der Grund für den Erfolg der Sprache C: Das hier umgesetzte Konzept der Zeiger ist ein *gutes* Modell der zugrundeliegenden Hardware. Das Konzept war dermaßen stark an die technische Umsetzung gebunden, dass jede theoretisch machbare andere Umsetzung Quatsch wäre.
So. Fazit: Du sagst, es sei Schwachsinn, ein Konzept über ihre technische Umsetzung definieren zu wollen. Ich sage: Es ist (in der Informatik) Schwachsinn, ein Konzept ohne Hinblick auf ihre technische Umsetzung zu definieren, denn ein solches Konzept ist in der Praxis nichts wert.
Ein Konzept wird technisch umgesetzt, nicht umgekehrt.
Genau das halte ich für falsch. Ich interpretiere fast alle mir bekannten, erfolgreichen Konzepte so, dass sie als Zusammenspiel aus Theorie und Umsetzung entstanden sind.