Legen Firmen mehr Wert auf Java, als auf C++? Generelle Fragen zu diesem Thema.



  • Gregor hat doch schon ausgeführt, warum Mehrfachvererbung in Java ein ganz besonderes Problem wäre.
    Und wenn du dich ständig über die fehlende Mehrfachvererbung aufregen musst, dann solltest du mal deine Designs ein bisschen überdenken. Ich sag ja nichts, wenn mal einer ab und zu vielleicht doch ganz gerne Mehrfachvererbung gehabt hätte.
    Aber so wie sich das anhört, bist du ziemlich oft darauf angewiesen und das kommt mir nicht sehr geschickt vor.



  • net schrieb:

    Optimizer schrieb:

    Im allgemeinen kann man sehr gut ohne Mehrfachvererbung auskommen.

    im allgemeinen kann man auch ganz ohne oop auskommen 😉
    also mal folgendes:
    ich habe eine klasse mit "tollen funktionen" um andere klassen zu erweitern.
    also klasse-1 erbt von der und hat auch die tollen funktionen
    klasse-2 ebenso, alles ok bisher.
    nun habe ich noch klasse-3, die aber schon von klasse-4 erbt.
    klasse-3 soll auch die "tollen funktionen" bekommen.
    wie mach' ich das in java?

    Definitiv falsches Verständnis von Vererbung.
    Vererbung ist nicht da, um tolle Funktionen auf eine andere Klasse zu übertragen.



  • SnorreDev schrieb:

    Ich musste mich in Java schon ein paar mal aufregen, wegen diesem fehlenden Feature und wieder ein Workaround basteln.

    auch du hast java offensichtlich noch nicht verstanden. aber versucht nur weiterhin die Konzepte anderer Sprachen krampfhaft in neue Sprachen zu uebernehmen. irgendwann habt es auch ihr geschnallt



  • Optimizer schrieb:

    Gregor hat doch schon ausgeführt, warum Mehrfachvererbung in Java ein ganz besonderes Problem wäre.
    Und wenn du dich ständig über die fehlende Mehrfachvererbung aufregen musst, dann solltest du mal deine Designs ein bisschen überdenken. Ich sag ja nichts, wenn mal einer ab und zu vielleicht doch ganz gerne Mehrfachvererbung gehabt hätte.
    Aber so wie sich das anhört, bist du ziemlich oft darauf angewiesen und das kommt mir nicht sehr geschickt vor.

    Ich bin nicht darauf angewiesen, nur programmiere ich die meiste Zeit c++. Und wenn ich mal ein kleines Testprog oder Tool in Java bastle, merke ich, dass mir dieses Feature abgeht. >95% wird ja Mehrfachvererbung nicht benoetigt, aber in diesen seltenen Faellen finde ich es eben doch Designtechnisch etwas ungeschickt, ohne auszukommen zu muessen.



  • Optimizer schrieb:

    Definitiv falsches Verständnis von Vererbung.
    Vererbung ist nicht da, um tolle Funktionen auf eine andere Klasse zu übertragen.

    macht nichts. mit c++ würde es aber gehen. auch ohne "diamond of death"
    btw: soll jetzt kein flamewar werden, ich will nicht java verteufeln



  • net schrieb:

    Optimizer schrieb:

    Definitiv falsches Verständnis von Vererbung.
    Vererbung ist nicht da, um tolle Funktionen auf eine andere Klasse zu übertragen.

    macht nichts. mit c++ würde es aber gehen.

    Deshalb hast du dann Vererbung immer noch falsch angewendet.



  • Optimizer schrieb:

    net schrieb:

    Optimizer schrieb:

    Definitiv falsches Verständnis von Vererbung.
    Vererbung ist nicht da, um tolle Funktionen auf eine andere Klasse zu übertragen.

    macht nichts. mit c++ würde es aber gehen.

    Deshalb hast du dann Vererbung immer noch falsch angewendet.

    Wieso soll Vererbung nicht dazu da sein, Funktionen zu vererben?
    Wenn Vererbung also solche diese Funktionalitaet nicht bieten wuerde, haetten wir doch nur abstrakte interfaces und die selben Funktionen XMal per cut/paste uebernommen.
    Irgendwie hab ich jetzt nicht verstanden was du meinst, oder meinst du das wirklich so wie ichs verstanden habe?



  • Optimizer schrieb:

    Deshalb hast du dann Vererbung immer noch falsch angewendet.

    und damit ich das nicht wieder tu' sag mir bitte, wie man sowas normalerweise in java macht.



  • Kindergarten



  • net schrieb:

    Optimizer schrieb:

    Deshalb hast du dann Vererbung immer noch falsch angewendet.

    und damit ich das nicht wieder tu' sag mir bitte, wie man sowas normalerweise in java macht.

    Genauso wie in jeder anderen Sprache. Vererbung benutzt man nicht, weil man in der anderen Klasse jetzt auch solche Funktionen haben will.
    Sondern um eine Typhierarchie zu schaffen, bei der Vererbung einer "ist eine Art von" oder "ist ein Spezialfall von" bedeutet.

    Und nicht "Klasse A kann was, Klasse B kann was und ich will, dass Klasse C das auch beides kann".



  • Irgendwie hab ich jetzt nicht verstanden was du meinst, oder meinst du das wirklich so wie ichs verstanden habe?

    Nein, so meine ich es natürlich nicht. net's Motivation für Vererbung halte ich einfach für falsch. Das ist der Punkt.



  • Optimizer schrieb:

    Genauso wie in jeder anderen Sprache.

    das habe ich dann auch getan bzw. tun müssen 😡

    Optimizer schrieb:

    Vererbung benutzt man nicht, weil man in der anderen Klasse jetzt auch solche Funktionen haben will.
    Sondern um eine Typhierarchie zu schaffen, bei der Vererbung einer "ist eine Art von" oder "ist ein Spezialfall von" bedeutet.

    dann sollte mal endlich einer java++ erfinden. da lassen sich dann nur noch eigenschaften vererben. methoden nicht, damit nicht noch so'n dahergelaufener wicht wie ich das falsch anwendet



  • Eigenschaften (wie z.B. Compareable) vererbt man bevorzugt mit Interfaces. Es gibt auch sinnigerweise ein Interface, was Compareable heißt, btw.
    Wie, wo und wann man Vererbung anwendet ist im Prinzip in jeder Objektorientierten Sprache ähnlich, ebenso wie die Tatsache, dass man Mehrfachvererbung gerne vermeidet. Ich verstehe dein Problem nicht.
    Ich empfehle dir übrigens, dich mit der Klassenbibliothek von Java vertraut zu machen, da wird sehr stark von Vererbung Gebrauch gemacht, da lässt sich sicher was draus lernen.



  • Hi Leute,

    redet doch bitte nicht aneinander vorbei.

    Das Merhfachvererbung böse/gefährlich ist ließt man nur in Java/.NET- Büchern. Purer Schwachsinn. Bloß weil man es in Java und .NET nicht haben kann ist es gleich böse. Ich halte
    diese Verbreitung von falscher Wahrheit für übele Propaganda.

    Ich muss Optimizer recht geben, dass viele Java und .NET- Programmierer (vor allen Anfänger) Klassen eigentlich nur im Sinne von Namespaces verwenden. Viele behaubten dann objektorientiert vorzugehen, da sie ja Klassen benutzen. Sprüche wie "Das kapsel ich mal eben" machen mir bei den Leuten echt Angst. Schließlich muss ich die resultierende Klasse mit ein paar Eigenschaften und Funktionen dann benutzen. Ich bin da mal ein paar Klassen von solchen Leuten durchgegangen. Hab vor jeder Methode und Variable 'static' vorgeschrieben. Das Programm läuft immer noch genauso gut 🙂
    Das hat wirklich nichts mit OOP zu tun.
    Dann kommen die Schlaumeier an, so wie einer hier im Thread, und sagt:"Oh, die Funktion Waschen() hattet ich schon mal geschreiben. Das war in der Klasse Auto. Ich leite mal meine Klasse "Klo" von Auto ab und hab die Funktion dann ja schon implementiert. Tja, oop machts möglich".
    Dann könnte ich innerlich schreien...



  • AndreasW schrieb:

    Hi Leute,

    redet doch bitte nicht aneinander vorbei.

    Das Merhfachvererbung böse/gefährlich ist ließt man nur in Java/.NET- Büchern. Purer Schwachsinn. Bloß weil man es in Java und .NET nicht haben kann ist es gleich böse. Ich halte
    diese Verbreitung von falscher Wahrheit für übele Propaganda.

    Ich muss Optimizer recht geben, dass viele Java und .NET- Programmierer (vor allen Anfänger) Klassen eigentlich nur im Sinne von Namespaces verwenden. Viele behaubten dann objektorientiert vorzugehen, da sie ja Klassen benutzen. Sprüche wie "Das kapsel ich mal eben" machen mir bei den Leuten echt Angst. Schließlich muss ich die resultierende Klasse mit ein paar Eigenschaften und Funktionen dann benutzen. Ich bin da mal ein paar Klassen von solchen Leuten durchgegangen. Hab vor jeder Methode und Variable 'static' vorgeschrieben. Das Programm läuft immer noch genauso gut 🙂
    Das hat wirklich nichts mit OOP zu tun.
    Dann kommen die Schlaumeier an, so wie einer hier im Thread, und sagt:"Oh, die Funktion Waschen() hattet ich schon mal geschreiben. Das war in der Klasse Auto. Ich leite mal meine Klasse "Klo" von Auto ab und hab die Funktion dann ja schon implementiert. Tja, oop machts möglich".
    Dann könnte ich innerlich schreien...

    du schreibst genausoviel muell wie alle anderen auch. Das mit der propaganda ist nur noch laecherlich. du traust bestimmt in 30 jahren auch noch pointer nach. und wenn man objekte erstellt, dann ist das sehr wohl objektorientiert - auch wenn ich NULL vererbung benutze. denoch noch mal ueber das wort OBJETKorientiert nach


  • Mod

    AndreasW schrieb:

    Dann kommen die Schlaumeier an, so wie einer hier im Thread, und sagt:"Oh, die Funktion Waschen() hattet ich schon mal geschreiben. Das war in der Klasse Auto. Ich leite mal meine Klasse "Klo" von Auto ab und hab die Funktion dann ja schon implementiert. Tja, oop machts möglich".

    Schlechtes Beispiel. Als ob es das nicht geben würde... 🙂

    http://www.users-web.de/funpics/Auto_Verkehr_2/Seifenkisten_Klo.htm



  • löl, genau sowas kommt raus, wenn man Vererbung falsch anwendet. 😃



  • Optimizer schrieb:

    löl, genau sowas kommt raus, wenn man Vererbung falsch anwendet. 😃

    ja, aber dabei erben klassen voneinender, die wirklich nichts gemeinsam haben. bestenfalls kommt ein "motorisiertes klo mit 4 rädern" dabei raus. aber darum geht's mir nicht bzw. hatte ich nie vor. ich habe gleich zugriff auf das programm - dann stelle ich mal eine frage anhand eines konkreten beispiels...



  • hallo. wieder da....

    also:
    ich habe eine kleine gui-anwendung (awt). die fensterchen bestehen aus
    von 'Frame' abgeleiteten klassen. diese fenster haben keine titelzeile
    sind aber trotzdem mit der maus verschiebbar - dazu mussten methoden
    wie 'mouseClicked' usw. überschrieben werden.
    nun brauche ich noch eine von 'Dialog' abgeleitete klasse, die die gleiche
    funktionalität haben soll, also keine titelzeile, aber verschiebbar.
    nun wäre es doch sinnvoll, die verschiebe-operationen in eine eigene klasse
    auszulagern, und beide 'Frame' und 'Dialog' -abkömmlinge von dieser erben zu lassen. das geht aber nicht weil java nur einfachvererbung erlaubt. in c++ könnte man das prima mit mehrfachvererbung lösen.

    ich habe es dann so gemacht:
    1. eine eigene verschiebe-operations-klasse (implementiert MouseListener, MouseMotionListener) erstellt, ähnlich wie die java-adapterklassen.
    2. in den beiden 'Frame'- und 'Dialog'-abkömmlingen werden instanzen davon erzeugt und mit den 'addXXXListener()'-methoden angemeldet.

    das funzt zwar, sieht aber komisch aus. es geht nur, weil java.awt.Component die Listeners verwalten kann d.h. ist also zufall, dass es hierbei recht einfach geht.

    meine frage nun:
    wie macht sowas ein 'richtiger' java-programmierer?
    und bitte nicht wieder antworten 'du hast ja keine ahnung von vererbung o.ä.'
    wenn ihr es besser wisst, dann erzählt es bitte....


  • Mod

    Ich würde es vermutlich genauso machen.


Anmelden zum Antworten