In der Folge 2 haben Sie zum ersten Mal eine eigene Klasse erstellt und Methoden für diese Klasse geschrieben. Damit haben Sie erste Java-Programme geschrieben. In den Folgen 3 und 4 werden wir weitere kleine Java-Programme schreiben, allerdings nicht so schöne Graphik-Programme wie in der Folge 2, sondern relativ einfache Konsolen-Programme. "Richtige" Graphik-Anwendungen mit Buttons, Editboxen, Listboxen, Scrollbars etc. würden Sie noch etwas überfordern, das sparen wir uns für die Folgen 5, 6 und so weiter auf. Natürlich werden das auch keine "richtigen" Graphik-Anwendungen sein; ein Spiele-Programmierer würde darüber lachen. Aber die Anforderungen im Informatik-Unterricht einer Schule sind ja auch etwas anders. Sie sollen auf das Informatik-Abitur und das Informatik-Studium vorbereitet werden oder auf einen IT-Beruf in der freien Wirtschaft. Daher werden im Informatik-Unterricht hauptsächlich grundlegende Dinge gelehrt, eine Ausbildung zum Programmierer ist im Informatik-Unterricht nicht vorgesehen. Theoretisch könnte man den Informatik-Unterricht sogar ganz ohne Computer gestalten; bei einigen Informatik-Vorlesungen an den Unis und Fachhochschulen ist das ja sogar der Fall.
Wie dem auch sei, wir fangen jetzt einfach mal an...
Schritt 1 - Neue Klasse erzeugen
Erstellen Sie ein neues BlueJ-Projekt und speichern Sie dieses als "Waage-1" in einem neuen Ordner "Folge03-Waage" ab. In diesem Ordner speichern Sie dann auch die weiteren Versionen "Waage-2" etc. dieses Projektes. Erstellen Sie dann eine neue Java-Klasse Waage in diesem Projekt.
Es ist sehr wichtig, Ordnung auf der Festplatte zu halten. Wenn Sie später mal ein komplexeres Projekt programmieren, wollen Sie Quellcode aus älteren Projekten wiederverwerten. Dazu müssen Sie aber die alten Projekte erst mal finden. Wenn Sie Ihre alten Java-Projekte alle im gleichen Ordner speichern und dann auch noch "Projekt01", "Projekt02" und so weiter benennen, dann finden Sie gar nichts wieder.

Es gibt auch immer wieder Schüler und manchmal auch Schülerinnen, die alle Klassen, die sie jemals im Informatik-Unterricht geschrieben haben, in ein- und demselben Java-Projekt speichern. Im BlueJ-Fenster sieht man dann 30 oder 40 orangefarbene Kästen die aber zu völlig verschiedenen Projekten gehören. Solche Schüler dürfen sich dann nicht wundern, wenn die Lehrperson nicht bereit ist, ihnen bei Problemen zu helfen!
Wichtiger Überlebenstipp für Schüler(innen)
Immer dann, wenn Sie vorhaben, wichtige Änderungen an den Quelltexten vorzunehmen, erstellen Sie bitte ein neues Projekt mit einer neuen Versionsnummer. Das erreichten Sie mit dem "Sichern unter..."-Befehl. Für Sie als Schüler(in) hat das folgenden Vorteil: Die Lehrperson kommt zu Ihnen, um sich das aktuelle Projekt anzusehen. Ihr Quelltext ist aber gerade in Arbeit und kann in diesem Zustand nicht kompiliert werden. Dann wird der Lehrer oder die Lehrerin Sie fragen: "Zeigen Sie doch mal die letzte lauffähige Version". Kein Problem für Sie, weil Sie ja die letzte lauffähige Version gesichert haben und jetzt an einer Kopie dieser Version arbeiten.
Und weil's so schön war, gleich noch ein wichtiger Tipp:
Noch ein wichtiger Überlebenstipp
In den meisten Schulen arbeiten Sie zu zweit an einem Computer, bei größeren Projekten auch mal zu dritt oder zu viert an zwei Rechnern. Natürlich kommt es immer wieder mal vor, dass ein Gruppenmitglied fehlt (Krankheit, schulische Veranstaltung etc.). In meinem eigenen Informatik-Unterricht beobachte ich oft eine Sonderform des Murphyschen Gesetzes: Grundsätzlich fehlt immer der Schüler, der alle wichtigen Projektdateien in seinem Profil oder auf seinem USB-Stick gespeichert hat, und die anderen Gruppenmitglieder können deswegen nicht weiterarbeiten.
Aufgabe:
Entwickeln Sie selbst eine Strategie, um solche Vorkommnisse zu vermeiden!
Schritt 2 - Quelltext eingeben
Doppelklicken Sie auf die Klasse Waage.
Es öffnet sich ein Editor-Fenster mit dem Quelltext der Klasse Waage. Die Programmierer von BlueJ haben Ihnen in gut gemeinter Absicht schon viel Arbeit abgenommen und viele Kommentare in den Quelltext eingebaut. Am besten lernen Sie Java jedoch, wenn Sie den von BlueJ erzeugten Quelltext komplett löschen (Strg-A, Entf) und dann folgenden eigenen Quelltext in das Editor-Fenster eintippen:
public class Waage
{
public Waage()
{
}
}
Dieser Quelltext besteht aus zwei Teilen, einem äußeren und einem inneren. Der äußere Teil des Quelltextes definiert die neue Klasse Waage. Der innere Teil des Quelltextes definiert den Konstruktor der Klasse Waage. Allerdings ist dieser Konstruktor noch leer, er besteht nur aus den beiden geschweiften Klammern.

Vergleichen kann man diesen Quelltext mit einem leeren Blatt Papier, auf dem nur das Thema eines Aufsatzes vermerkt ist. Eine Einleitung ist bereits geschrieben, aber außer der Überschrift "Einleitung" steht noch nichts in der Einleitung. Der Hauptteil des Aufsatzes fehlt noch gänzlich.
Übung 3.1-1
Setzen Sie die Abbildung mit dem Quelltext in Beziehung!
Schritt 3 - Ein erstes Attribut
Eine Java-Klasse wird durch ihre Attribute (Eigenschaften) definiert. Schaut man sich eine echte Waage an, sieht man natürlich viele Eigenschaften, zum Beispiel den Typ, die Farbe, die Größe, die Anzeige (digital oder analog) und so weiter. Diese Attribute sind jetzt für die Modellierung unserer Java-Waage eher uninteressant. Was ist denn die wichtigste Eigenschaft einer Waage? Sie zeigt das Gewicht einer Person an, zum Beispiel "83,8 kg". Dazu benötigen wir ein Attribut, welches das Gewicht einer Person speichert. Nennen wir dieses Attribut doch einfach gewicht
.
Attributnamen werden in Java übrigens immer klein geschrieben.
public class Waage
{
double gewicht;
public Waage()
{
}
}
Mit dem Datentyp double
legen wir fest, dass wir reelle Zahlen in dem Attribut gewicht
speichern wollen. Wollten wir ganze Zahlen speichern, so müssten wir int
als Datentyp angeben. Aber genaue Waagen zeigen mindestens eine Nachkommastelle an, also bleibt uns gar nichts anderes übrig, als ein double
-Attribut einzusetzen.
Aufgabe 3.1-2
Angenommen, in Java gäbe es für Zahlen nur den Datentyp int. Wie könnte man dennoch eine Waage modellieren, die das Gewicht mit einer Nachkommastelle anzeigt?
Schritt 4 - Eine Methode zum Wiegen
In der Folge 2 hatten wir uns die Methoden der Klasse Circle näher angesehen. Der Quelltext der Methode changeColor()
sieht zum Beispiel so aus:
public void changeColor(String newColor)
{
color = newColor;
draw();
}
Der Wert des Attributes color
wird verändert. Dazu wird der Wert des Parameters newColor
ausgewertet. Das Attribut erhält den Wert des Parameters, einen Befehl wie
color = newColor;
bezeichnet man auch als Wertzuweisung oder einfacher als Zuweisung. Bei der Waage haben wir ein ähnliches Problem: Das Attribut gewicht
soll beim Aufrufen der Methode wiegen()
einen neuen Wert erhalten.
Ergänzen Sie die Klasse Waage um eine Methode wiegen()
.
public void wiegen(double neuesGewicht)
{
gewicht = neuesGewicht;
}
Probieren Sie aus, ob die neue Methode funktioniert. Dazu können Sie auch den Objektinspektor einsetzen.
Erzeugen Sie in dem BlueJ-Fenstert ein Objekt der Klasse Waage.
Rufen Sie mit der rechten Maustaste die Methode wiegen
auf.
Es öffnet sich ein Dialogfenster, in das Sie dann das Gewicht eintippen können, zum Beispiel 67.3 - geben Sie bitte nur die reine Zahl ein, keine Anführungszeichen oder Ähnliches. Und verwenden Sie einen Dezimal-PUNKT, kein Dezimal-KOMMA!
Führen Sie dann auf den roten Kasten des Waage-Objektes einen Doppelklick aus. Ein großes rotes Fenster öffnet sich - der Objektinspektor. Der Objektinspektor zeigt alle bisher definierten öffentlichen (public
) Attribute des Objektes an. Wenn Sie beim Aufruf von wiegen die Zahl 67.3 eingegeben haben, so müsste in dem Kasten für das Attribut gewicht
auch genau diese Zahl stehen.

Schritt 5 - eine zweite Methode
Wir wollen jetzt aus unserer normalen Waage eine Superwaage machen. Sie soll nämlich nicht nur Ihr Gewicht wiegen können, sondern auch Ihre Körpergröße erfassen, um dann Ihr Idealgewicht zu berechnen. Und schon kommt die erste "richtige" Übung in dieser Folge.
Übung 3.1-3
Ergänzen Sie die Klasse Waage um ein neues Attribut und eine neue Methode, so dass sie zusätzlich die Körpergröße einer Person erfasst und speichert.
Schritt 6 - Anzeigen der Werte
Auf die Dauer ist es lästig, wenn man immer den Objektinspektor aufrufen muss, um sich bestimmte Attributwerte anzuschauen. Andererseits ist der Objektinspektor auch recht nützlich, man kann sich die Werte mehrerer Attribute gleichzeitig ansehen:

Sie werden jetzt lernen, wie man eine Methode anzeigen()
schreibt, die das Anzeigen von Attributwerten für Sie erledigt.
public void anzeigen()
{
System.out.println(gewicht);
System.out.println(groesse);
}
Tippen Sie die Methode anzeigen()
in den Quelltext der Klasse Waage ein.
Wenn Sie diese Methode nun mit der rechten Maustaste aufrufen, öffnet sich ein so genanntes Terminalfenster, das dann die Attributwerte von gewicht
und groesse
anzeigt:
0.0
0.0
Beide Attribute haben hier noch den Anfangswert 0.0, weil sie bisher durch keine manipulierende Methode verändert worden sind.
Schritt 7 - Eine Verbesserung der anzeigen-Methode
Die beiden Zahlen in der Konsole sind völlig nichtssagend. Woher soll der Benutzer des Programms denn wissen, dass die erste Zahl für das Gewicht steht, die zweite aber für die Größe. Wäre es nicht besser, die Ausgabe in der Konsole sähe so aus:
Sie wiegen 67.4 kg!
Sie sind 182.6 cm groß!
Wie erreicht man eine solche informative Ausgabe?
Verändern Sie die Methode anzeigen
folgendermaßen:
public void anzeigen()
{
System.out.println
("Sie wiegen "+ gewicht + " kg!");
System.out.println
("Sie sind "+ groesse + " cm groß!");
}
Die Argumente der System.out.println()
-Methode bestehen hier aus jeweils drei Komponenten:
- Einem String ("Sie wiegen " bzw. "Sie sind ")
- Einer reellen Zahl (Attributwert von
gewicht
bzw. Attributwert vongroesse
) - Einem weiteren String (" kg!" bzw. " cm groß!")
Diese drei Argumente sind durch den +-Operator verbunden. Der +-Operator bewirkt hier keine Addition, sondern eine sogenannte Konkatenation, das so viel wie "Zusammensetzung" bedeutet.
Arbeitsblatt zu dieser Folge
Sie sollten jetzt in der Lage sein, das erste Arbeitsblatt (3.1 Entwurf der Klasse Waage) zu dieser Folge zu bearbeiten. Die Arbeitsblätter können Sie sich hier herunterladen.