Home > Informatik > Stufe EF > Folge 3 > Folge 3.1

3.1 Sie werden gewogen

Waage - Berechnungen - Fallunterscheidungen - if-else-Bedingungen - switch-Anweisung

Lernziele

Wenn Sie diese Seite durchgearbeitet haben, sollten Sie wissen

  • Wie man sein BlueJ-Projekt regelmäßig sichert,
  • wie man sicher mit Attributen, Parametern und Datentypen umgeht,
  • wie man Attributwerte mit dem Objektinspektor von BlueJ untersucht und
  • wie man Meldungen und Attributwerte mit dem System.out.println()-Befehl in der Konsole ausgeben kann.

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 späteren Folgen auf. Natürlich werden das auch keine "richtigen" Graphik-Anwendungen sein; ein Spiele-Programmierer würde darüber nur 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", "Waage-3" 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 erstellen, wollen Sie vielleicht Methoden aus älteren Projekten wiederverwerten (warum sollte man das Rad zweimal erfinden?). Dazu müssen Sie aber die alten Projekte mit den benötigten Methoden 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.

siehe folgenden Text

Eine gute Ordnerstruktur für BlueJ-Projekte

Es gibt auch immer wieder Schüler (meist männlichen Geschlechts), 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. Ich persönlich weigere mich dann immer, solchen Schülern zu helfen, wenn sie irgendwelche Probleme mit ihren vielen Klassen und Objekten haben.

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 daher gerade nicht kompiliert werden, so dass Sie das Programm nicht vorführen können.

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, Quarantäne, 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 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 (erst Strg-A = "Alles markieren" und danach Entf = "Entfernen" drücken) und dann folgenden eigenen Quelltext in das Editor-Fenster eintippen:

public class Waage
{
   public Waage()
   {
   }
}

Wie wir bereits in der Folge 2 gesehen haben, besteht ein solcher Minimal-Quelltext aus zwei Ebenen bzw. Teilen, einem äußeren und einem inneren. Der äußere Teil des Quelltextes definiert die gesamte Klasse Waage. Der innere Teil definiert den Konstruktor der Klasse. Allerdings ist dieser Konstruktor noch leer, er besteht nur aus den beiden geschweiften Klammern.

siehe folgenden Text

Ein fast leeres Dokument

Vergleichen kann man diesen Quelltext mit einem leeren Blatt Papier, auf dem nur das Thema eines Aufsatzes vermerkt ist. Außer der Überschrift "Einleitung" steht noch nichts in der Einleitung. Und der Hauptteil des Aufsatzes, der fehlt noch gänzlich, das Blatt Papier ist zum größten Teil noch leer.

Aufgabe 3.1-1

Setzen Sie die Abbildung mit dem Quelltext in Beziehung!

Lösungen (nur für Unterrichtende) / Lösungen für Schüler(innen))

Schritt 3 - Ein erstes Attribut

Eine Java-Klasse wird durch ihre Attribute (Eigenschaften) definiert.

Attribute

Wenn Sie sich über Attribute einer Klasse bzw. eines Objekts informieren wollen, schauen Sie sich diesen Lernbaustein näher an.

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.

Namen von Attributen (und anderen Variablen und Parametern) 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.

Datentypen

Lesen Sie sich den Lernbaustein "Datentypen" durch, wenn Sie mehr über dieses Thema erfahren wollen.

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?

Lösungen der Aufgaben und Übungen (Zugangsdaten erforderlich) / Lösungen für Schüler(innen))

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 ausgelesen. 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.

Klassen
Attribute
Parameter

Lesen Sie sich diese Lernbausteine durch, wenn Sie noch mehr zu diesen Themen wissen möchten.

⇒ Ergänzen Sie die Klasse Waage um die Methode wiegen(), indem Sie folgenden Quelltext ergänzen:

   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-Fenster 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.

Das BlueJ-Projekt mit einem Objekt 'waage1' der Klasse Waage. Man sieht den Objektinspektor, der für das Attribut 'gewicht' den Wert 67.3 anzeigt. Weitere Attribute sind nicht zu sehen.

Der Objektinspektor zeigt alle public-Attribute und deren Attributwerte an

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.

Lösungen der Aufgaben und Übungen (Zugangsdaten erforderlich) / Lösungen für Schüler(innen))

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:

Das BlueJ-Projekt mit einem Objekt 'waage1' der Klasse Waage. Man sieht den Objektinspektor, der für das Attribut 'gewicht' den Wert 0.0 und für das Attribut groesse ebenfalls den Wert 0.0 anzeigt.

Der Objektinspektor zeigt die Werte aller public-Attribute an

Sie werden jetzt lernen, wie man eine Methode anzeigen() schreibt, die das Anzeigen von Attributwerten für Sie automatisch erledigt. Ganz automatisch natürlich nicht, denn Sie müssen diese Methode auch ausführen (rechte Maustaste beim Kontextmenü des roten Objekt-Kastens) oder ausführen lassen (im Quelltext des Konstruktors können Sie die anzeigen()-Methode aufrufen, dann wird sie beim Erzeugen eines neuen Objektes automatisch ausgeführt. Überhaupt werden alle Methoden, die Sie im Konstruktor aufrufen, automatisch ausgeführt, was viel Klickarbeit ersparen kann).

⇒ Ergänzen Sie Ihre Klasse Waage um die folgende Methode.

public void anzeigen()
{
   System.out.println(gewicht);
   System.out.println(groesse);       
}

Wenn Sie diese Methode nun im Kontextmenü des roten Objektkastens 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.

manipulierende Methode

Lesen Sie sich diesen Lernbaustein durch, wenn Sie nicht (mehr) wissen, was eine manipulierende Methode ist.

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 folgendermaßen 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:

  1. Einem String ("Sie wiegen " bzw. "Sie sind ")
  2. Einer reellen Zahl (Attributwert von gewicht bzw. Attributwert von groesse)
  3. 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.

System.out.println()

In diesem Lernbaustein finden Sie wichtige Hinweise zum Umgang mit diesem universellen Ausgabe-Befehl.

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.

Seitenanfang -
Weiter mit dem zweiten Teil der Folge 3...