OOP Denkweise



  • Hallo alle zusammen,

    Oft lese ich das gerade die Leute, die von Java zu C++ umsteigen, eine komplett andere und in C++ gar falsche Denkweise von der OOP haben.

    • Was unterscheidet die beiden Sprachen in dieser Hinsicht so sehr?
    • Geht es in Java bei der Vererbung zu sehr um die "Ist-ein" Regel?
    • Welche der beiden Stile der Objekt Orientierten Programmierung ist letztendlich richtig, oder gibt es da garkeine Norm?

    Liebe Grüße,
    Peter



  • 1.) In Java habe ich nur OOP. In C++ bin ich nicht auf OOP beschraenkt. Meist lassen sich Dinge einfacher loesen, wenn auf OOP verzichtet wird.
    2.) Nein. In Java, wird zuviel modeliert ... Interface, abstrakte Basisklasse, tiefe Hierarchien, hier ein Listener, dort ein Visitor, ein paar Observer, ...
    3.) Java ist kacke.



  • bbeennuuttzzeerr schrieb:

    Oft lese ich das gerade die Leute, die von Java zu C++ umsteigen, eine komplett andere und in C++ gar falsche Denkweise von der OOP haben.

    Was unterscheidet die beiden Sprachen in dieser Hinsicht so sehr?

    C++ ist eine Multiparadigmensprache und ist auch dafür ausgelegt das man nach Möglichkeit den jeweils sinnvollsten Weg geht (Man schreibt nicht freie Funktionen in eine Klasse, nur damit diese in ein OOP-Schema gezwängt werden).

    Des weiteren ist C++ wesentlich Hardwarenäher und hat keine Metadaten (diese kosten Speicherplatz und Effizienz), wodurch bestimmte Techniken nicht einfach umzusetzen sind, die in Java üblich sind (z.B. Reflektion).

    Und zu guter Letzt findet man in Java sehr häufig extrem tiefe Klassenhierarchien, was die Erweiterbarkeit und Wartbarkeit recht schwer macht. Vererbung ist unter Java die stärkste, unter C++ (nach friend) die zweitstärkste Bindung. Man sollte tendenziell eher eine lose Bindung anstreben. Das heißt nicht das Vererbung tabu ist, sie sollte aber mit Bedacht verwendet werden, und man sollte dabei möglichst auch Prinzipien wie das "Liskovsches Substitutionsprinzip" (Siehe http://de.wikipedia.org/wiki/SOLID#SOLID-Prinzipien) beachten.

    Geht es in Java bei der Vererbung zu sehr um die "Ist-ein" Regel?

    Nein, eher nicht. In Java wird die Vererbung einfach zu häufig, zu extrem angewendet. Und nicht selten wird gerade gegen das "Ist-ein"-Prinzip verstoßen, oder versucht dies auf biegen und brechen anzuwenden.

    Welche der beiden Stile der Objekt Orientierten Programmierung ist letztendlich richtig, oder gibt es da garkeine Norm?

    Wer C++ rein als OO-Sprache betrachtet macht etwas falsch. Ebenso wer versucht jegliche Klassenabhängigkeiten über Vererbung zu lösen. In vielen Fällen ist Komposition eine weit bessere Lösung.



  • knivil schrieb:

    3.) Java ist kacke.

    Mit solchen Aussagen machst du dich selbst unglaubwürdig. Ein Tisch endet nicht schon bei seinem eigenen Tellerrand.



  • asc schrieb:

    knivil schrieb:

    3.) Java ist kacke.

    Mit solchen Aussagen machst du dich selbst unglaubwürdig. Ein Tisch endet nicht schon bei seinem eigenen Tellerrand.

    Glaube? Tellerand? Unterstellung! Was bildest du dir ein, ueber meinen Tellerrand bescheid zu wissen?! Und wenn es mir um Religion ginge, haette ich soweit ausgeholt wie du. Es ist die einzige Antwort auf Richtig oder Falsch, Gut oder Boese, den Sinn ... aber das verstehst du nicht.



  • knivil, er hat schon Recht. Bei den ersten zwei Punkten hat man den Eindruck von sachlichen Argumenten, aber nach Punkt 3 denkt man "ah, doch nur ein Troll".



  • Ach schon wieder recht, richtig, falsch, boese und Sinn von allem ... dabei wird der Kontext voellig ignoriert. Wer es nicht versteht, soll 's sein lassen



  • 6163 Beiträge und so ein Verhalten ... Aber ich mag Java auch nicht 😃 (Nur weil ich es nicht mag heisst nicht das es keiner mögen muss.^^)



  • knivil schrieb:

    asc schrieb:

    knivil schrieb:

    3.) Java ist kacke.

    Mit solchen Aussagen machst du dich selbst unglaubwürdig. Ein Tisch endet nicht schon bei seinem eigenen Tellerrand.

    Glaube? Tellerand? Unterstellung! Was bildest du dir ein, ueber meinen Tellerrand bescheid zu wissen?! Und wenn es mir um Religion ginge, haette ich soweit ausgeholt wie du. Es ist die einzige Antwort auf Richtig oder Falsch, Gut oder Boese, den Sinn ... aber das verstehst du nicht.

    knivil, Alter, jetzt hat's dir ein wenig die Kette ausgehängt, hm? 🙄



  • Tja mit einem Post hat sich knivil von Hero zu Zero katapultiert. So schnell kanns hier gehen.



  • Kontext: c++.de -> C++ (auch C++0x und C++11) -> OOP -> Java richtig/falsch?



  • knivil schrieb:

    Kontext: c++.de -> C++ (auch C++0x und C++11) -> OOP -> Java richtig/falsch?

    Java is nil 🤡



  • knivil schrieb:

    Kontext: c++.de -> C++ (auch C++0x und C++11) -> OOP -> Java richtig/falsch?

    .....?

    Es geht um Leute die von Java nach C++ umsteigen. Also richtig. Und selbst wenn falsch, nur weil ein Thread im falschen Forum ist heisst das lange noch nicht dass man unhaltbaren Unsinn darin schreiben sollte.



  • bbeennuuttzzeerr schrieb:

    Hallo alle zusammen

    • Welche der beiden Stile der Objekt Orientierten Programmierung ist letztendlich richtig, oder gibt es da garkeine Norm?

    Liebe Grüße,
    Peter

    Im diesen Sinn gibst kein Norm oder Standard für Objektorientierung in Programmiersprachen. Letztendlich kann man es auch nicht mit falsch oder richtig beantworten - eher Geschmacksache. Das Objektmodell in Java ist sehr nah an der technische Ausprägung der Java Virtual Maschine gehalten. Soweit du dich in anderen JVM-Programmiersprache einarbeiten willst, siehst du, es geht auch anders.



  • @hustbaer: Mir wurde von asc vorgeworfen, unglaubwuerdig zu sein, weil er meine Antwort 'Java ist kacke' aus dem Kontext gerissen hat. Weiterhin hat er den ueberspitzten Kontrast zu den ersten Antworten nicht erkannt und mir schlussendlich Beschraenktheit und Dummheit vorgeworfen (ja, die nach dem Wortlaut eher allgemeine Aussage im Kontext gesehen bezog sich auf mich).

    Und wie soll ich darauf anders reagieren, als weiter die Frage nach richtig und falsch zu karikieren.

    richtig.

    Eben nicht.

    falsch

    Eben nicht.



  • Hi Peter,

    Java ist die bessere Sprache wenn du vorhast viel mit Datenbanken (langweilige Geschäftsanwendungen) zu proggen. Da sind die Tools drum herum einfach besser.



  • @knivil
    OK.
    Wenn du aber schon erkannt hast, dass er (absichtlich oder nicht) nicht erkannt hat dass du hier eine absichtliche Übertreibung als "Stilmittel" verwendet hast...
    wieso antwortest du dann in einer (für mich) schwer verständlichen Art und Weise, anstatt es gleich klarzustellen.

    Ich verstehe ja dass es nervt wenn man falsch verstanden wird, ganz speziell wenn man meint dass es klar genug formuliert war und/oder den Verdacht hat dass man "absichtlich" falsch verstanden wurde.

    Deine Antwort war aber wie gesagt für mich nicht klar - hat bei mir noch mehr Verwirrung gestiftet. Und da ICH dich nicht für doof halte, hat mich das gleich noch mehr verwirrt 😉



  • Ich habe manchmal Tage wie diesen. Und ja, es war nicht klar.



  • Wir alle 🙂


Anmelden zum Antworten