Archiv | Februar, 2013

Ich und „Java lernen mit BlueJ“

28 Feb

Seit einiger Zeit versuche ich mich mit Java und als Umsteiger von sequentieller Programmierung habe ich noch meine liebe Mühe mit dem OOP-Prinzip. Ich habe auch schon eine handvoll Java Bücher angefangen zu lesen, scheitere aber irgendwie immer wieder an der Herangehensweise, da nie die Erklärung der objektorientierten  Programmierung im Zentrum steht, sondern man geht auf mehreren hundert Seiten lieber gleich von 0 – 100 voll ins Detail und gibt mit Fachausdrücken nur so an.

28. Februar  2013

Nun habe ich mir aber fest vorgenommen das Buch Java lernen mit BlueJ durchzuziehen oder es dann ganz zu lassen, sollte ich scheitern. Denn dieses Buch fängt spielerisch mit dem OOP-Prinzip an und nicht mit lästigen Details die Anfänger nur verwieren.

Buchdeckel-java-lernen-mit-bluej

Allererster Schritt:
Das Buch auf Seite 541, Anhang A aufschlagen und die zwei Pakete Java SE Development Kit und BlueJ installieren. Im Internet finden sich unzählige Kurzanleitung und Videos wie man dies ohne ersten Frust hinkriegt. Hier ein Installations-Beispiel für Java und eines für BlueJ.

Kapitel 1
1.2 Instanzen erzeugen
Auf Seite 32 der 4. Auflage (2009) steht: „Klicken Sie mit der rechten Maustaste auf die Klasse Kreis und wählen Sie new Kreis().
Tja nur schade, dass diese Option bei mir nicht verfügbar ist. Ich sehe nur Bearbeiten, Übersetzen, Inspizieren, Entfernen. Also dann, recherchiere ich mal warum das so ist, dass sich kein Objekt erzeugen lässt. Es könnte natürlich an der von mir eingesetzten BlueJ Version 3.0.9 liegen, welche viel neuer ist, als die Version die für das Buch verwendet wurde. Oder setzt der Autor wieder eine Einstellung vor, die nicht explizit erwähnt wurde?

Im Internet habe ich keinen Anhaltspunkt dazu gefunden und siehe da, plötzlich funktioniert es nach einem Reboot des Notebooks so wie im Buch beschrieben. Keine Ahnung was da los war?!?!

Rechtsklick_neue_Klasse_fehlt

So, für den ersten Abend bin ich mit dem Studium bis zum Abschnitt 1.7 Zustand auf Seite 38 gekommen. Das ist nicht sonderlich weit, ich habe aber bis hierhin wirklich alles verstanden und der Blog steht ja immerhin auch schon.

– – – – – – – – – – – – – – – – – – – – – – – – – – – – – –

01. März  2013

Ha! Wusste ich es doch, dass ich am letzten Abend nicht geträumt habe…
Wer den Unterschied auf den beiden Screenshots findet, darf ihn behalten:

Klassen-Icon

Lösung:

Vielleicht fragen Sie sich, warum das Klassenicon nicht gestreift war, als Sie dieses Projekt geöffnet haben. Das liegt daran, dass die Klassen im Projekt People bereits kompiliert waren. Häufig werden BlueJ Projekte unkompiliert verteilt; gehen Sie also davon aus, dass in den meisten Fällen gestreiften Klassenicons zu sehen sind, wenn Sie erstmals ein Projekt öffnen.

Kann im BlueJ Tutorial nachgelesen werden, Abschnitt 3.6 Kompilieren, S. 14
Und nach dem Motto „lieber spät als nie“ findet sich auch im Buch auf S. 41 eine Erklärung im Abschnitt 1.10 Quelltext.

– – – – – – – – – – – – – – – – – – – – – – – – – – – – – –

Unter www.pearson-studium.de finden sich die Lösungen zu den jeweiligen Aufgaben, sobald ihr euch registriert und angemeldet habt…

Lösungen_zu_Java_lernen_mit_BlueJ

Dazu müsst ihr auf das goldene Icon drücken und dann geht weiter unten dieser Bereich auf:

Lösungen_II_zu_Java_lernen_mit_BlueJ

Obwohl mir klar ist, dass ich kein Buch „Für Dummies“ vor mir habe, erstaunt es mich doch sehr, wieviel vorausgesetzt wird resp. der Autor hat ein grosses Vertrauen in die Leserschaft, dass sie ihm mit den Vorbereitungen und Zwischenschritten immer und überall folgen kann. Eine gewisse Grundintelligenz und Selbstständigkeit sollte man schon mitbringen hat er sich wohl gedacht.

– – – – – – – – – – – – – – – – – – – – – – – – – – – – – –

Gerade bin ich über den ersten Fehler im Buch gestolpert, 1.13 Objekte als Parameter: Um einen Studenten einzutragen muss man student1 und nicht wie im Buch abgebildet student_1 eingeben.

– – – – – – – – – – – – – – – – – – – – – – – – – – – – – –

09. März 2013

Die Kapitel 1 + 2 sind wohl die allerwichtigsten, da man die Grundlagen vermittelt bekommt. Die Grundlagen sollten sitzen, ohne diese macht das Fortfahren keinen Sinn, da man ansonsten die Zusammenhänge nicht versteht. Also lieber genug Zeit investieren. Das Buch vermittelt Java in einem angenehmen Tempo und Art, bei welcher man sehr gut mitkommt und man den Stoff sehr gut vermittelt bekommt.

Die Übung 2.72 auf Seite 83 verwirrt mich aber gerade im Moment: Die Klasse String defniert eine sondierende Operation length….. Meint der Autor die Klasse Student oder die Methode String oder redet er vom Konstruktor, denn dort soll ja die Eingabe überprüft werden.

– – – – – – – – – – – – – – – – – – – – – – – – – – – – – –

11. März 2013

Ich bin wirklich super zufrieden mit dem Buch bis jetzt und mache täglich Fortschritte. Ganz erhaben über Fehler ist es jedoch nicht, was halt den Leser unnötig verwirrt. Liegt es am Autor oder am Übersetzer?

Aufgabe 2.74, Seite 85:
Seewolf“.substring(3,4) gibt „w“ zurück und nicht wie in der Lösung „f“.
Um „f“ zu erhalten müsste der Ausdruck wie folgt heissen: Seewolf“.substring(6,7)

– – – – – – – – – – – – – – – – – – – – – – – – – – – – – –

14. März 2013

Der Einstieg in das Kapitel 3 ist sehr interessant. Die Herangehensweise anhand von Abstraktion und Modularisierung wird sehr gut am Beispiel der Entwicklung eines Autos. Welcher Ingenieur für was zuständig ist und wie er seinen Bereich betrachtet und von anderen betrachtet wird. Die Software-Entwicklung bedient sich ebenfalls dieser beiden Modellen.

– – – – – – – – – – – – – – – – – – – – – – – – – – – – – –

Wo jedoch der Autor auf Seite 98 drei Objekte in dieser Abbildung sieht ist mir nicht ganz klar. War Alkohol im Spiel?! ;-)

Objektdiagramm und Klassendiagramm für eine Uhreneinzeige

Objektdiagramm und Klassendiagramm für eine Uhreneinzeige

Einfach mal weiterlesen, vielleicht stosse ich ja später noch auf eine plausible Erklärung….

– – – – – – – – – – – – – – – – – – – – – – – – – – – – – –

17. März  2013

Ich erwische mich immer wieder dabei, eine komplizierte Antwort geben zu wollen, als es in Wirklichkeit gefragt ist. Ich denke, so einfach kann die Lösung doch nicht sein ;-)

Beispiel? Übung 3.4:
Schreiben Sie eine Definition für ein Datenfeld tutor, das eine Referenz auf ein Objekt des Typs Lehrender halten kann.

Lösung:
private Lehrender tutor;

– – – – – – – – – – – – – – – – – – – – – – – – – – – – – –

Wie versteht ihr die Aufgabenstellung bei 3.10 auf Seite 101?

Schreiben Sie einen Ausdruck mit zwei booleschen Variablen a und b,  der true liefert, wenn entweder a und b beide gleich sind oder beide false sind.

Teil 1
Ausdruck mit zwei booleschen Variablen a und b,  der true liefert, wenn entweder a und b beide gleich sind…
Teilösung:
a==b

Teil 2
oder beide false sind.
Wie ist das gemeint? Auf was bezieht sich beide in der Fragestellung? Auf beide Variablen a und b oder beide Gültigkeitsprüfungen? Ich verstehe es so, dass in jedemfall true ausgegeben werden soll, wenn a=b oder a<>b ist.
Teillösung aus meinem Verständnis: !(a==b)

Gesamtlösung aus meiner Sicht: a==b || !(a==b)

Die Lösung im Buch für die Aufgabe 3.10 lautet schlicht: a==b

Ist wohl wegen dem ungeschriebenen Gesetz: Zwei Programmierer = drei Meinungen ;-)

– – – – – – – – – – – – – – – – – – – – – – – – – – – – – –

Aufgabe 3.11 ist mir leider auch unklar: Schreiben Sie einen Ausdruck mit zwei booleschen Variablen a und b, der true liefert, wenn nur genau eine von beiden true ist, und der false liefert, wenn a und b beide false oder beide true sind (dies bezeichnet man auch als exklusives Oder).

Schade fehlt eine Erklärung oder ein fertiges, ausführbares Beispiel dazu. BlueJ meint zur vorgeschlagenen Lösung im Buch (a || b) && (a != b): Error not a statement respektive operator || cannot be applied to int,int

Ich nehme es locker, da ich denke, dass dies schon sehr gesuchte Aufgaben sind. Sollte ich Java jemals in den Griff bekommen, kann ich mir immernoch den Kopf darüber zerbrechen.

– – – – – – – – – – – – – – – – – – – – – – – – – – – – – –

18. März  2013

Wer den Abschnitt 3.6 Klassendiagramme und Objektdiagramme auf Seite 95 – 98 nur oberflächig wie ich liest, der kommt bald darauf zurück oder bleibt beim Lernen stecken. Nun habe ich endlich geschnallt, wo der Autor die drei Objekte sieht, die ich weiter oben im Blog schon mal gesucht habe. Es wird nämlich ein Objekt der Klasse Uhrenanzeige und zwei Objekte der Klasse Nummernanzeige erzeugt. Alles klar?! Dies ist übrigens genau der Punkt, wo ich bis jetzt mit anderen Bücher schon gescheitert bin. Ob ich es diesmal schaffen werde, wird sich  noch zeigen ;-)

– – – – – – – – – – – – – – – – – – – – – – – – – – – – – –

20. März  2013

Dreht ein paar Loops von Seite 95  bis 109, lautet meine Empfehlung. Hier wird erklärt, wie man Objekte andere Objekte erzeugen und miteinander agieren. Das muss einfach sitzen.

– – – – – – – – – – – – – – – – – – – – – – – – – – – – – –

Wo die erwähnte Methode eoc in Aufgabe 3.23 zu finden ist, bleibt wohl für immer ein Rätsel… Im Klassenobjekt Uhrenanzeige sehe ich nur gibUhrzeit, setzeUhrzeit und taktsignalGeben. Gemeint ist wohl gibUhrzeit. welche „00:00“ liefert.

– – – – – – – – – – – – – – – – – – – – – – – – – – – – – –

Übung 3.25 ist überhaupt nicht beschrieben im Buch. Schon wieder eine Aufgabe die unklar ist…. :((
na.setzeWert(int wert); funktioniert nicht.

– – – – – – – – – – – – – – – – – – – – – – – – – – – – –

!!! Have fun !!!

– – – – – – – – – – – – – – – – – – – – – – – – – – – – –