Am Mittwoch 23 Januar 2002 19:36 schrieben Sie:
<drittsemesternitpick> Naja, schade daß ich mir das Beispiel aus der letzten Vorlesung nicht aufgeschrieben habe... 3 mal casten in einer Zeile, das muß man selbst in C erstmal hinbekommen. Und warum? Weil eine Integer-Zahl nicht von Object abgeleitet ist. Java ist also eine Hybrid-Sprache, auch wenn sie im Gegensatz zu C++ schon "objektorientierter" ist. </drittsemesternitpick>
Kannst du das Problem bitte näher erläutern?
Ich habe bestimmt schon ein paar tausend(millionen?) Zeilen Java programmiert und hatte noch nie die Notwendigkeit mehr als 1 mal in einer Zeile zu casten.
Außerdem ist Java bekanntlich eher ein C++-light als ein C++++, also warum ist es dann objektorientierter als C++? Dann ist C++ auch eine Hybrid-Sprache, und welche von den praxisrelevanten ist das eigentlich nicht?
Ein Bekannter von mir programmiert sonst nur Perl, will jetzt Java lernen, und ihm haben schon mindestens 3 Leute + 2 Bücher versucht, OOP zu erklären - er kapiert es einfach nicht.
Falsche Leute, falsche Bücher oder keine Motivation? Aber bei den Programmiersprachen ist es so wie mit den Fremdsprachen: Die erste erlernt man in vielen Jahren, die zweite in wenigen Jahren, die dritte in ein paar Monaten... Er sollte also, auch wenn er OOP nicht versteht, nicht aufgeben, sondern z.B. mal eine andere OOP-Sprache probieren... nicht ständig was neues, aber wenn es mit Java nix wird hat es keinen Sinn ihm daran das OOP-Prinzip zu erklären.
OOP/OOA/OOD ist ganz allgemein und hat mit der Syntax nun wirklich nichts zu tun. Syntax ist und bleibt Geschmacksache. Dem einen ist sie zu kurz und dem anderen zu langatmig. Gewisse Grundgedanken sind in allen objektorientieren Sprache vorhanden, nur das die eine Sprache ein paar OOP-Features mehr und die andere ein paar weniger hat. Hat alles Vor- und Nachteile, mit beidem kann man meistens Leben.
Wenn er es nicht kapiert hat man es ihm nicht gut genug erklärt, er will es nicht verstehen oder sein Abstraktionsvermögen ist zu gering.
Im allgemeinen sollte man mit der funktionalen Programmierung vertraut sein, dann klappts auch mit OOP. Denn wer nicht weiß was (globale/lokale) Variablen / Funktionen sind, versteht ganz sicher auch nicht was (statische / private / public / ..) Methoden / Variablen sind. Kapselung und Vererbung benötigen immer nur ein wenig abstraktes Denkvermögen, davon sollte jeder Programmierer sowieso genug haben, auch für Headerfiles, Units, Module, Kompenten, Interface & Co.
Fazit:
Heutzutage also zuerst etwas C oder Pascal lernen. Wer später GUI's programmieren will liegt mit C besser, da er das Wissen dann für Java, C++ und C# verwenden kann. Wer später GUI's zusammenklicken will entsprechend mit Pascal, da er das dann für Delphi & Co. verwenden kann, aber für C++ gibts das bestimmt auch.
Gruß, Stephan