C++ nicht objektorientiert?



  • Jein/eher nein schrieb:

    Ich wollte jetzt in keinster Weise irgendwelche Vorteile von Java herausstellen. Es stimmt, Java habe ich als erste Sprache gelernt (lernen müssen). Damals (schon etwas her) habe ich ein komplettes Mediacenter (Musik/Videos abspielen, Songtexte aus dem Internet laden etc.) mit Java programmiert; mit C++ und der WinApi hätte ich so etwas erst Jahre später geschafft.
    Aber zum Thema: Mit Java MUSS man doch jeweils ableiten (extends ?), selbst wenn man nur ein Fenster erstellen und darin zeichnen will, oder ist das alles für mich schon zu lange her?

    Die Standardbibliothek von Java ist um Jahrzehnte moderner als die WinAPI.
    Natürlich kann man in C++ auch anständige Bibliotheken basteln, die an passenden Stellen (und das paßt oft) Gebrauch von objektorientierten Spachmitteln machen.



  • Nein musst man nicht, ist für den faulen Programmiere bequemer. Siehe
    Netbeans GUI Editor standardmäßig mit Vererbung
    Idea GUI Editor standardmäßig mit Komposition



  • Zeus schrieb:

    AndreasBo schrieb:

    @volkard
    Gut getippt 😃
    Ja er ist Java Funboy

    Wahrscheinlich bestreitet er auch, dass man in Java strukturiert programmieren kann?

    Gute Idee. Ich führe sie weiter...
    http://java.sun.com/docs/books/jls/third_edition/html/lexical.html#3.9
    "The keywords const and goto are reserved, even though they are not currently used. This may allow a Java compiler to produce better error messages if these C++ keywords incorrectly appear in programs."

    In Java gibt es kein goto. Also kann man darin gar nicht unstrukturiert programmieren. Spaghetti-Code ist unmöglich.

    In C++ hingegen gibt es goto. Dort kann man nicht strukturiert programmieren. Alle C++-Programme bestehen aus Spaghetti-Code.

    Das wäre zwar das Argumentsionsniveau. AndreasBos Sohn soll das ruhig mal benutzen. Dann kriegt er auch eine 1 im Zeugnis und nicht bloß eine 2. Spleens von Lehrern sind nur Griffe, mit denen man sich gute Noten heranziehen kann.



  • AndreasBo schrieb:

    Der Informatiklehrer meines Sohnes behauptet:
    C++ wäre keine objektorientierte Programmier-
    sprache.

    Hat er recht?

    Du hast einen Sohn und fragst in einem C++Forum, ob C++ objektorientiert ist. Interessante Konstellation. Warum fragt uns dein Sohn nicht selber? Wenn man bei Google "C++" eingibt kommt man als erstes auf Wikipedia und da steht das C++ objektorientiert ist. Hmm???



  • volkard schrieb:

    Objektorientierter wäre

    double w5=(5.0).sqrt;
    

    oder

    w5 := 5.0 sqrt
    

    So richtig objektorientiert scheint mir zumindest das erste Beispiel eigentlich nicht. Auf die Gefahr hin, Gebiet zu betreten, über das man sich lange und ergebnislos streiten kann - für mein Verständnis dreht sich Objektorientierung vor allem um Datenkapselung und lose Kopplung. Eine Zahl als Objekt aufzufassen ist gut, aber sämtliche Operationen, die mit Zahlen umgehen, als Methoden einer Zahl aufzufassen, scheint mir ziemlich unpraktisch und alles andere als lose gekoppelt.

    So wie ich das sehe, wäre ein objektorientierter Ansatz, die Funktion selbst als Objekt aufzufassen und mit der Zahl zusammenspielen zu lassen - ich denke da an Funktionszeiger bzw. std::tr1::function. In Pseudocode gegossen vielleicht etwas in dieser Größenordnung:

    (5.0).apply(sqrt);
    


  • Du hast leider das Problem, dass du in dein Literal keine andere Zustand speichern kannst.



  • Eine Klasse SquareRootFunction wäre objektorientiert.



  • Das wäre ziemlich objektorientiert:

    class Number
        virtual Number sqrt()
    
    class Double : Number
        override Number sqrt()
    
    Number n = 0.3
    Double root = (Double)n.sqrt()
    


  • Die Aussage, das C++ nicht konsequent objektorientiert ist, habe ich schon vor etwa 20 Jahren im Zusammenhang mit Smalltalk gehört.



  • Die Java-Fanboys sind eh die Schärfsten. Hier mal ein paar Aussagen die ich mal im Javaforum gelesen habe, der Thread wurde leider gelöscht wie viele die mal ein paar moderne Ansätze in C++ dort klarstellen wollen.

    - In C++ MUSST du Klassen in Header und Implementierung aufteilen
    - Mit C++ kann man nicht plattformunabhängig programmieren
    - C++ ist nicht großartig performanter als Java
    - C++/Qt kommt kein Stück an Java mit seiner GUI ran
    - Java ist für größere Projekte die bessere Wahl

    Will man auch nur einen Punkt widerlegen wird man als Troll beschimpft und wenn man es dann doch belegt hat wird auch gerne mal der Thread gelöscht.



  • @Komisch

    Ich programiere seit Jahren in C++ und war sprachlos. Deshalb habe ich gefragt.

    BTW ich habe mit FORTRAN angefangen (1979) Für die, die diese Sprache
    noch kennen. Das ergab dann meist wirklich Spagetticode.

    Aber volkard hat recht, wenn er sagt, dass es am Programierer liegt.



  • Wollen wir nun über das programmierte Ergebnis des Lehrers unterhalten? 😃



  • Gib mir eine Definition von OOP und ich sage Dir, ob C++ oo ist. Über eine unklare Begrifflichkeit auf eine Programmiersprache angewendet zu diskutieren ergibt imo keinen Sinn (außer, dass der Gewinner der Diskussion, irgendwo in einer genau so schwammigen Diskussion mit dem Gefühl reingeht, er hätte erwiesenermaßen recht :P).



  • Eisflamme schrieb:

    Gib mir eine Definition von OOP und ich sage Dir, ob C++ oo ist. Über eine unklare Begrifflichkeit auf eine Programmiersprache angewendet zu diskutieren ergibt imo keinen Sinn (außer, dass der Gewinner der Diskussion, irgendwo in einer genau so schwammigen Diskussion mit dem Gefühl reingeht, er hätte erwiesenermaßen recht :P).

    🙄 Gib mir eine Definition von Programmiersprache, fertig und Computer.



  • C++ ist nicht in sich selbst objektorientiert, aber stellt die Möglichkeit bereit objektorientiert zu programmieren. Ob man davon gebrauch macht, ist eine andere Frage.

    Eine ähnliche Sichtweise zeigt auch der Wikipedia-Artikel:

    C++ ist eine von der ISO standardisierte höhere Programmiersprache. Sie wurde ab 1979 von Bjarne Stroustrup bei AT&T als Erweiterung der Programmiersprache C entwickelt. C++ wurde als Mehrzwecksprache konzipiert und unterstützt mehrere Programmierparadigmen, wie die objektorientierte, generische und prozedurale Programmierung.



  • Vielleicht ist da alles auch einfach nur ein Missverständnis,
    bei mündlicher Weitergabe kann schonmal was untergehen.
    Vielleicht meinte der Lehrer ja "C++ ist nicht rein objektorientiert" (mehrere Paradigmen werden unterstützt) und nicht "C++ ist nicht objektorientiert"

    Besonders wenn man Programmieranfänger ist, erscheinen diese Beiden Aussagen wohl so ziemlich gleich.

    Nur mal so als Idee.



  • Gib mir eine Definition von Programmiersprache, fertig und Computer.

    Futter bei die Trolle: Bei Wikipedia werden sie geholfen!



  • Ka-Mensch schrieb:

    Vielleicht ist da alles auch einfach nur ein Missverständnis,
    bei mündlicher Weitergabe kann schonmal was untergehen.
    Vielleicht meinte der Lehrer ja "C++ ist nicht rein objektorientiert" (mehrere Paradigmen werden unterstützt) und nicht "C++ ist nicht objektorientiert"
    Besonders wenn man Programmieranfänger ist, erscheinen diese Beiden Aussagen wohl so ziemlich gleich.
    Nur mal so als Idee.

    Viel viel wahrscheilicher ist, daß genau dieser Fehler sich zwischen Sun und dem Lehrer eingeschlichen hat, als daß er zwischen dem Lehrer und dem Schüler passiert ist. Programmierlehrer sind zu >99% Programmieranfänger.



  • volkard schrieb:

    Programmierlehrer sind zu >99% Programmieranfänger.

    Ich fühle mich gerade an meinen Informatikunterricht in der Oberstufe zurückerinnert. Da hatten wir einen Lehrer, der _nichts_, aber wirklich _garnichts_ drauf hatte. Wenn wir also wieder einmal Unterricht hatten, saß immer ein weiterer Lehrer, der zu eben diesen 1% gehörte, im Nebenraum, und kam immer herein, wenn es Probleme gab. Und Probleme gab es oft! Mindestens einmal, zu Spitzenzeiten auch gerne 5x p/h.
    Aber das Ganze ist jetzt auch schon 10 Jahre her, ich hoffe doch, dass sich der Kenntnisstand der Lehrer zumindest etwas gebessert hat. 🙄



  • Die können aber auch nicht wirklich dafür. Als der Informatikunterricht an Schulen in Österreich eingeführt wurde hatte meine Mutter (weil Mathematiklehrerin) einen Dreiwochenkurs verpasst bekommen um den Kindern ab Anfang des nächsten Schuljahres den Computer näherzubringen...

    War damals noch kein Problem, weil ein bißchen BASIC konnte man nach drei Wochen den Kindern zeigen und damals war die Technik noch nicht so weit. Da hat man den Kindern dann eben gezeigt wie sie einen kleinen Rahmen malen und ihr Alter abfragen und sich dann zufällig aus einer Liste von Namen ihre zukünftige Liebe ausgeben lassen können, etc.

    Aber heute reicht das eben nicht mehr. Die Kinder wissen das alles selbst schon und benötigen eindeutig mehr. Vor allem weil Informatik ja auch viel intensiver unterrichtet wird. Damals gab es das als Freigegenstand, man musste noch zu IBM gehen um überhaupt Rechner zu haben, ...

    MfG SideWinder


Anmelden zum Antworten