C++ nicht objektorientiert?
-
-
AndreasBo schrieb:
Gut getippt
Ja er ist Java Funboy
Wahrscheinlich bestreitet er auch, dass man in Java strukturiert programmieren kann?
-
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?
-
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 FunboyWahrscheinlich 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 WahlWill 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.
-
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!