Hi,
@Sacaldur : Ich hege keinesfalls Anspruch auf Vollständigkeit, es waren lediglich die Dinge, die mir zuerst eingefallen waren.
die Trennung der Vererbung mittels extends und implements ist notwendig, da in Java keine Mehrfachvererbung verwendet wird, aber dafür Schnittstellen definiert werden können, mit deren Hilfe indirekt Mehrfachvererbung möglich ist (extends für Klassen, implements für Schnittstellen)
dies wird so auch in C# gehandhabt
ich halte dies nicht für eine schlechte Lösung, allerdings habe ich auch noch nicht mit Mehrfachvererbung gearbeitet
So wie unser GdI Prof das erklärt hat, wird damit hauptsächlich die Verhinderung von Designfehlern betrieben (Stichwort z.B. Diamond-Pattern). Das mag sinnvoll sein, wenn man sich aber ein klein wenig Gedanken zu dem Thema macht, kommt man gar nicht in die verzwickte Lage, sich solche Monstren herprogrammiert zu haben.
In sofern kommt mir diese gekünstelte Aufteilung (Die Sprache drückt mir quasi ein "glaub mir, du willst das nicht so machen" auf. Aber vll möchte ich selber entscheiden, ob ich nicht vll doch gerade ein Diamond Pattern brauche -- auch wenn das irgendwo bullshit ist
.) halt lediglich behelfsmäßig vor. Aber das aus den Augen eines c++ Programmierers.
Letztendlich ist Vererbung in beiden Sprachen möglich, wenn man weis wie. Die Wahl hängt dann von persönlichen Präferenzen ab, oder aber von anderen Faktoren.
ArrayLists: ...
Ja exkat. für die ArrayList und andere generische Container müssen grundlegende Funktionen bereitgestellt werden (afaik hauptsächlich sowas wie compare() und clone(), aber nagelt mich da nicht fest), was bei den nativen Datentypen halt nicht der Fall ist. Hier sehe ich die Augenwischerei mit int und Integer sehr ausgeprägt. Die zwanghafte Trennung empfinde ich als störend (wenn sie auch in c++ ebenso, wenn auch schwächer vorhanden ist. es geht z.B. nicht, eine Klasse von float erben zu lassen).
@Xardias:
Ja das sehe ich ähnlich und deine Ausführungen zu Bibliotheken unterstützen meine Therese durchaus, dass Java für anfänger leichter zu erlernen ist. Allerdings empfinde ich z.B. die SDL oder SFML Bibliotheken (die ich beide ganz gut kenne) als hinreichend leicht einzubinden. Das größte Problem als ich damit begonnen hatte, war in meiner IDE zu finden, wo die für die includes und libs zu suchen hat. Dann eine Makrodefinition und los gehts mit sf::RenderWindow App = new sf::RenderWindow(...);
An die "großen" Wie DX und OpenGL habe ich mich aber noch nicht herangewagt und kann da auch nichts zu sagen.
Generell bin ich aber der Überzeugung, dass wenn ich eine Lib benutzen möchte, ich mir gefälligst auch die Doku dazu durchzulesen habe. Ich benutze Fremdsoftware und sollte der im Zweifelsfall erstmal nicht trauen. (Anfänger im C&P-Wahn tun sich hiermit aber verständlicherweise schwer, ging mir damals auch nicht anders)
So Far...
Laguna