(15.12.2012 15:16)friedrichheinze schrieb: (15.12.2012 13:26)Marley schrieb: Ich kenne hier niemanden der ,wenn man es ihm gut beigebracht (oder das Buch gut ist), es nicht verstanden hat.
Halt bis zur Klausur. OOP und speziell Java wirft so viele Fragen auf, das kann man nicht einfach mal schnell erklären. Warum sollte ich nicht alles static machen? Warum sollte ich nicht alles public machen? Warum brauche ich Inheritance wenn ich auch einfach ein Feld machen kann mit der Superklasse und darauf die Methoden aufrufen? Warum geht Inheritance nur mit einer Klasse? Wozu brauche ich Konstruktoren, kann ich nicht einfach eine init()-Methode machen? Was sollte ich dann in den Konstruktor packen und was in Methoden? Ganz abgesehen davon wenn man mal generics braucht, die sind konstruktionsbedingt in Java irre.
Java ist einfach komplizierter zu lernen als C weil es viel mehr Zeug hat. Und wenn man schnelle, motivierende Ergebnisse haben will ist es auch nix, dann sollte man weder C noch Java, sondern lieber Ruby lernen. Java ist überhaupt keine Einsteigersprache, sondern eine für grosse Industrieprojekte die zur Hälfte nach Indien outgesourcet werden. Warum der Kram an Schulen gelehrt wird ist ziemlich unverständlich, aber an schulischem Informatikunterricht ist ja vieles ziemlich unverständlich...
Die Klausuren fallen nicht schlecht aus...
Warum nicht alles static machen? Z.B wenn man ein grafisches Spiel machen will, ist ein Spieler ein Objekt, dass könnte man mit Spieler.gehe() animieren bzw. dessen position verändern.
Warum nicht alles public? Nehmen wir an du programmierst eine mathesuit .... willst du dann das andere Methoden oder gar andere programme die Daten manipulieren körnnen? Nein sicherlich nicht....
Die Vererbung ist eine recht coole Sache und die damit zusammenhänge Polymorphie, es hilft den Code weiterzuverwenden und man kann einen Code auf Referenzen aufbauen, somit kann man den code in vielen Projekten einsetzen.
Vererbung ist eine Spezialisierung! Hast du eine Klasse Rechner und eine Klasse Netzwerkrechner ,die von Rechner erbt, hat sie vielleicht ganz spezielle Methoden und übernimmt die Methoden der Superklasse und natürlich die Felder. Das erspart eine ganze Menge Code, und ist nützlich. Ich wende es z.B bei meinem Turing Maschinen Simulator an.
Die Konstruktoren sind zum initialisieren eines Objekts beim Aufruf. Z.b bei einer Patientenqueue . Wenn du ein neues Patientenobjekt machst kannst du dann z.b mit den Konstruktor es direkt mit einen Namen , einer Steuernummer und so weiter initialisieren und schon Methoden aufrufen. GANZ EINFACH.
Genercis sind kein großes Ding.
Und wenn man Java benutzt kriegt man sofort Ergebnisse. Wir hatten z.B ein kleines Spiel programmiert , dass hatte nur ein paar Schulstunden gedauert. Damals noch mit Greenfoot. Mit Krabben und Fischen... Manche gingen dann weiter und haben sogar ein wirklich gutes Star Wars spiel programmiert mit ein paar Tausend Zeilen Code. Naja das wäre mir zu dumm gewesen.
Java ist extrem Einsteigerfreundlich