Programmierung mit BlueJ -...

of 38/38
Informatik 1 mit BlueJ Ein Kurs für die Stufe 10 / 11 von Ulrich Helmich Teil 1 Folgen 1 bis 3 3. Auflage Mai 2010
  • date post

    01-Apr-2018
  • Category

    Documents

  • view

    221
  • download

    6

Embed Size (px)

Transcript of Programmierung mit BlueJ -...

  • Informatik 1 mit BlueJ

    Ein Kurs fr die Stufe 10 / 11

    von Ulrich Helmich

    Teil 1Folgen 1 bis 3

    3. Auflage Mai 2010

  • Folge 1 -BlueJ! 31.1 Installation und Einrichtung von BlueJ! 3

    1.2 Kennenlernen von BlueJ! 5

    1.3 Mit BlueJ ein Bild malen! 13

    1.3 Klassen und Objekte ! 21

    Folge 2 - Wir programmieren! 242.1 Wir programmieren ein Bild! 24

    2.2 UML-Diagramme (neu!)! 36

    Folge 3 - Sie werden gewogen!! 393.1 Entwurf der eigenen Klasse "Waage"! 39

    3.2 Eingabe ber die Konsole (neu!)! 52

    3.3 Fallunterscheidungen! 55

    3.4 Die if-Anweisung! 61

    3.5 Die if-else-Anweisung! 66

    3.6 Geschachtelte if-else-Anweisungen! 69

    3.7 bungen zum Projekt Waage ! 73

    3.8 Weitere bungen zur if-else-Anweisung! 76

    3.9 Die switch-Anweisung! 77

    Ulrich Helmich: Informatik 1 mit BlueJ - Ein Kurs fr die Stufe 10 / 11 - Teil 1 (3. Auflage)

    Seite 2 von 79

  • Folge 1 -BlueJ

    Workshop

    1.1 Installation und Einrichtung von BlueJSchritt 1 - Windows-AnwenderFalls noch nicht auf Ihrem Rechner vorhanden (Systemadministrator fragen), laden Sie sich von der Webseite www.sun.com das aktuelle Java-Entwicklungs-Kit (JDK) fr Windows herunter. Die Java-Runtime-Umgebung (JRE) reicht fr unsere Zwecke nicht aus, damit knnen Sie lediglich Java-An-wendungen und -Applets zum Laufen bringen, aber keine Java-Anwendungen oder -Applets entwi-ckeln.

    Schritt 1 - MacOS X - AnwenderIhr Betriebssystem enthlt bereits alles Ntige, um Java-Anwendungen zu schreiben, sogar eine pro-fessionelle Entwicklungsumgebung ist auf der System-DVD vorhanden und kann bei Bedarf instal-liert werden. Da Sie aber mit BlueJ arbeiten werden, ist dieser Schritt nicht notwendig.

    Schritt 2Laden Sie sich BlueJ von der Webseite www.blueJ.org herunter. Fr MacOS X und Windows gibt es "richtige" Programme (BlueJ.app bzw. BlueJ.exe), fr alle anderen Plattformen eine entsprechende Java-Anwendung. Ich selbst arbeite mit der BlueJ Version 2.5.1 fr MacOS X, mit der ich sehr gute Erfahrungen gemacht habe.

    Ihr Betriebssystem entpackt die ZIP-Datei wahrscheinlich zunchst auf Ihren Desktop in einen Ordner, der in geffneter Form unter MacOS X so aussieht:

    1-1 Der BlueJ-Ordner unter MacOS 10.5

    Ulrich Helmich: Informatik 1 mit BlueJ - Ein Kurs fr die Stufe 10 / 11 - Teil 1 (3. Auflage)

    Seite 3 von 79

  • Schritt 3Kopieren Sie den Ordner dann auf ein Laufwerk, fr das Sie Schreibzugriff besitzen. Auf Apple-Rechnern unter MacOS X kann es sein, dass Ihr Ordner zunchst einen reinen Lesezugriff anzeigt, in diesem Fall mssen Sie sich selbst erst einen Schreibzugriff verschaffen. Bei Windows-Systemen knnen hnliche Probleme auftreten, vor allem, wenn Sie nicht als Administrator angemeldet sind, was ja die Regel ist.

    Schritt 4Starten Sie die BlueJ-Anwendung durch einen Doppelklick. Unter Windows mssen Sie beim ersten Starten von BlueJ angeben, wo sich auf Ihrer Festplatte das JDK befindet (java developement kit, siehe Schritt 1). In der Regel liegt es direkt auf der Startpartition C: oder in dem Ordner C:/Programme. Unter MacOS X sind diese Angaben nicht notwendig.

    Schritt 5War vorher BlueJ noch nie auf Ihrem Rechner installiert, erscheint jetzt ein leeres Fenster mit eng-lisch beschrifteten Buttons und Men-Eintrgen. Wie man BlueJ auf Deutsch umstellen kann, erfah-ren Sie in dem Kasten unten auf dieser Seite. Das Umstellen auf die deutsche Sprache funktioniert aber nur dann, wenn Sie Schreibzugriff auf den BlueJ-Ordner haben. In vielen Schul-Anlagen liegt der BlueJ-Ordner auf Laufwerk C: im Ordner "Programme", und der Administrator hat den Schreib-zugriff unterbunden. Bei den heutigen Preisen fr USB-Sticks kann ich Ihnen nur raten, sich einen solchen zu kaufen, 2 oder 4 GB reichen vllig aus, um sowohl BlueJ wie auch Ihre Programme und sonstigen Dateien zu installieren.

    BlueJ auf Deutsch umstellen / Schreibzugriff erforderlich!1. Beenden Sie das Programm BlueJ.

    2. Suchen Sie auf Ihrer Festplatte den BlueJ-Ordner und ffnen Sie ihn durch einen Doppel-klick.

    3. Bei Windows 2000 oder XP:ffnen Sie durch einen Doppelklick den Unterordner "lib"

    Bei MacOS X:Klicken Sie mit der rechten Maustaste auf das Symbol "BlueJ.app" und whlen Sie dann den Befehl Paketinhalt zeigen. Im Ordner "Contents" finden Sie einen Unterordner "Resources", der wiederum einen Unterordner "Java" enthlt. ffnen Sie diesen Unterord-ner.

    4. Jetzt mssen Sie die Datei "bluej.defs" mit einem Texteditor ffnen.

    5. Suchen Sie den Abschnitt mit den Sprachdefinitionen. Schreiben Sie dann ein Doppel-kreuz # vor den Eintrag bluej.language = englisch und entfernen Sie das Doppel-kreuz vor dem Eintrag bluej.language = german.

    6. Speichern Sie die vernderte Datei und starten Sie BlueJ erneut. Jetzt mssten alle Be-schriftungen in deutscher Sprache erscheinen.

    Ulrich Helmich: Informatik 1 mit BlueJ - Ein Kurs fr die Stufe 10 / 11 - Teil 1 (3. Auflage)

    Seite 4 von 79

  • Workshop

    1.2 Kennenlernen von BlueJSchritt 1Ihr frisch installierter BlueJ-Ordner enthlt einen Unterordner namens "examples". Dieser Unter-ordner enthlt Beispiel-Programme, und mit einem dieser Beispielprogramme wollen wir uns jetzt nher beschftigen.

    Whlen Sie den Men-Befehl Projekt ffnen aus dem BlueJ-Men Projekt. Er erscheint eine Lis-te von acht Projekten. Whlen Sie hier das Projekt "shapes" und klicken Sie dann auf ffnen. Falls Sie mit der deutschen Version der Beispiele arbeiten, so heit das entsprechende Projekt "Figuren".

    Die deutsche Version der Beispieldateien war bis 2008 frei verfgbar; im Augenblick (2010) kommt man "auf normalen Wegen" nicht mehr an die deutsche Version heran. Daher werde ich mich auch in diesem Skript immer wieder auf die englische Version beziehen. Unabhngig von der Sprache der Beispielprojekte knnen Sie aber die Sprache von BlueJ selbst auf Deutsch umstellen; wie das geht, wurde ja am Ende des letzten Workshops erklrt.

    1-2 Das Beispiel-Projekt "shapes"

    So wie in der Abbildung 1-2 msste Ihr Projekt am Ende von Schritt 6 jetzt aussehen.

    Ulrich Helmich: Informatik 1 mit BlueJ - Ein Kurs fr die Stufe 10 / 11 - Teil 1 (3. Auflage)

    Seite 5 von 79

  • Schritt 2Was machen wir jetzt mit dem Projekt? Zunchst spielen wir mal ein bisschen herum. Fhren Sie einen Doppelklick auf den Kasten mit der Bezeichnung "Triangle" aus.

    1-3 Hilfe, ein Java-Que"tex!!!

    Du meine Gte, was ist das denn? Offensichtlich ein Java-Quelltext. Aber damit wollen wir uns doch in den ersten Workshops noch gar nicht beschftigen. Also schnell das Fenster wieder schlie-en!

    Ulrich Helmich: Informatik 1 mit BlueJ - Ein Kurs fr die Stufe 10 / 11 - Teil 1 (3. Auflage)

    Seite 6 von 79

  • Schritt 3Jetzt klicken wir mal mit der rechten Maustaste auf einen der vier orangefarbenen Ksten. Mal se-hen, was nun passiert.

    1-4 Nach einem Rechts-Klick auf "Circle"

    Ein Quelltext-Fenster erscheint zum Glck nicht, aber dafr ein so genanntes Kontextmen mit fnf Befehlen, von denen aber einer deaktiviert ist. Der fr uns wichtigste Befehl ist bersetzen (falls Sie mit englischen Einstellungen arbeiten: Compile) Wir fhren diesen Befehl nun aus und sehen nach, ob sich etwas im BlueJ-Fenster getan hat.

    KontextmenEin Men, das normalerweise nicht sichtbar ist. Erst dann, wenn der Benutzer mit der rechten Maustaste auf ein bestimmtes Element klickt, ffnet sich ein Kontextmen und bietet eine Reihe von Befehlen an, die sich direkt auf das angeklickte Element beziehen (Abfrage von In-formationen, Verndern von Werten).

    bersetzenAutomatische Umwandlung eines lesbaren Quelltextes in eine Reihe von Anweisungen, die nur der Computer versteht.

    Ulrich Helmich: Informatik 1 mit BlueJ - Ein Kurs fr die Stufe 10 / 11 - Teil 1 (3. Auflage)

    Seite 7 von 79

  • 1-5 Nach Ausfhren des Befehls "bersetzen" bzw. "Compile"

    Die beiden unteren Kstchen - "Canvas" und "Circle" - sind nicht mehr schraffiert, whrend die bei-den oberen Kstchen so geblieben sind, wie sie vorher waren. Der bersetzungs-Befehl hat tatsch-lich etwas bewirkt. Was dabei genau passiert ist, werden Sie im nchsten Schritt erfahren.

    Schritt 4Klicken Sie jetzt mit der rechten Maustaste auf den Kasten "Circle" bzw. "Kreis":

    1-6 Rechtsklick auf "Circle", nachdem der Befehl "bersetzen" ausgefhrt wurde

    Sehen Sie den Unterschied zu vorher? Nach dem bersetzen stehen pltzlich neue Befehle zur Verfgung, vor allem new Circle() ist hier interessant. Was passiert, wenn man mit der Maus diesen Befehl auswhlt?

    Ulrich Helmich: Informatik 1 mit BlueJ - Ein Kurs fr die Stufe 10 / 11 - Teil 1 (3. Auflage)

    Seite 8 von 79

  • Schritt 5Fhren Sie den Befehl new Circle() aus! Es erscheint sofort eine Dialogbox:

    1-7 Die Wirkung des Befehls "new Circle"

    Der Titel der Dialogbox bte schon genug Stoff fr einen ganzen Theorieteil: Objekt erzeugen. Die bersetzung des englischen Kommentars oben in der Dialogbox lautet: "Erzeuge einen neuen Kreis an der Standard-Position mit der Standard-Farbe". Den vorgegebenen Namen "circle1" ndern wir erst einmal nicht, sondern bernehmen ihn mit einem Klick auf den OK-Button.

    Ulrich Helmich: Informatik 1 mit BlueJ - Ein Kurs fr die Stufe 10 / 11 - Teil 1 (3. Auflage)

    Seite 9 von 79

  • Um zu sehen, was durch das Ausfhren des Befehls new Circle() passiert ist, schauen wir uns jetzt das BlueJ-Fenster an:

    1-8 Das BlueJ-Fenster nach dem Ausfhren des Befehls "new Circle()".

    Wir haben ein Objekt circle1 erzeugt. Auf gleiche Weise kann man weitere Objekte erzeugen:

    1-9 Zwei Circle-Objekte wurden bereits erzeugt, ein drittes wird gerade erzeugt

    Ulrich Helmich: Informatik 1 mit BlueJ - Ein Kurs fr die Stufe 10 / 11 - Teil 1 (3. Auflage)

    Seite 10 von 79

  • In der Abbildung 1-9 sieht man die beiden Circle-Objekte circle1 und sonne. Das dritte Circle-Objekt mond wird gerade erzeugt; es muss nur noch auf den OK-Button geklickt werden. Objekte werden brigens in diesem Skript knftig in rot geschrieben. Auch fr Klassen und Methoden wurde eine eigene Typographie (Schreibweise) gewhlt, um die bersicht zu erhhen.

    Schritt 6Sie sollen nun ein Square-Objekt erzeugen. Welche Schritte sind dazu notwendig? berlegen Sie einmal selbst!

    Schritt 6.1: Sie mssen mit der rechten Maustaste auf den Kasten Square klicken und den Befehl bersetzen ausfhren. Dadurch verschwindet die Schraffur des Kastens. Aber - was ist denn das? Das BlueJ-Fenster hat sich nach dem Ausfhren des bersetzen-Befehls wieder verndert:

    1-10 Wo sind die Objekte?

    Die ganzen mhselig angelegten Circle-Objekte sind verschwunden! Offensichtlich werden die Ob-jekte nicht gespeichert.

    Schritt 6.2: Sie mssen den new Square()-Befehl aufrufen, damit ein Square-Objekt erzeugt und als roter Kasten im unteren Bereich des BlueJ-Fensters angezeigt wird.

    Ulrich Helmich: Informatik 1 mit BlueJ - Ein Kurs fr die Stufe 10 / 11 - Teil 1 (3. Auflage)

    Seite 11 von 79

  • Die Erfahrungen mit Objekten und Klassen, die wir bisher gemacht haben, sollten wir uns jetzt mal merken:

    ObjekteObjekte werden in Java zur Laufzeit aus Klassen erzeugt, sie existieren nur von einem bersetzungs-Vorgang bis zum nchsten. Objekte werden - im Gegensatz zu Klassen - nicht abgespeichert.

    KlassenKlassen sind in Java Vorlagen zur Erzeugung von Objekten. Klassen beschreiben das Ver-halten von Objekten, wie Objekte Informationen austauschen und vieles mehr. Die Definiti-on einer Klasse wird in einer Textdatei gespeichert, die auch als Quelltext bezeichnet wird.

    Und jetzt kommen wir auch schon zu Ihrer ersten Aufgabe:

    bung 1.1Erzeugen Sie zwei Objekte sonne und mond aus der Klasse Circle, ein Square-Objekt haus und ein Triangle-Objekt dach.

    Damit haben Sie Ihren ersten Workshop zum Umgang mit BlueJ hoffentlich erfolgreich abgeschlos-sen. Im nchsten Workshop wollen wir mit den eben erlernten Techniken ein kleines Bild malen.

    Ulrich Helmich: Informatik 1 mit BlueJ - Ein Kurs fr die Stufe 10 / 11 - Teil 1 (3. Auflage)

    Seite 12 von 79

  • Workshop

    1.3 Mit BlueJ ein Bild malenBei diesem Workshop gehe ich davon aus, dass Sie wissen, wie man Objekte aus den Klassen Cir-cle, Square und Triangle erzeugt.

    Schritt 1Erzeugen Sie ein Objekt sonne der Klasse Circle sowie ein Objekt kasten der Klasse Square. Ihr BlueJ-Fenster msste dann ungefhr so aussehen wie in Abbildung 1-11.

    1-11 Erzeugen von Objekten einer Klasse

    1-12 Die Methoden eines Objektes

    Ulrich Helmich: Informatik 1 mit BlueJ - Ein Kurs fr die Stufe 10 / 11 - Teil 1 (3. Auflage)

    Seite 13 von 79

  • Schritt 2Klicken Sie mit der rechten Maustaste auf den roten Kasten des Objektes sonne. Es erscheint ein sehr langes Kontextmen mit vielen Eintrgen (siehe Abbildung 1-12). Die beiden untersten Eintrge sind Befehle, wie Sie sie bereits kennen gelernt haben: Inspect und Remove. Rufen wir den Befehl Inspect auf, so knnen wir das Objekt sonne in Ruhe untersuchen. Und wenn wir den Befehl Remove aufrufen, wird das Objekt sonne wieder entfernt.

    Die anderen Eintrge wie zum Beispiel

    void makeVisible()

    sind besondere Befehle, die man als Methoden bezeichnet.

    MethodenBefehle oder Anweisungen, mit denen man das Verhalten von Objekten beeinflussen oder den Status von Objekten abfragen kann.

    Mit Methoden wie changeColor() oder moveUp() kann man Objekte direkt beeinflussen. Ruft man zum Beispiel die Methode moveRight() auf, so bewegt sich das Objekt auf dem Bildschirm um 20 Pixel nach rechts, und durch den Aufruf der Methode changeSize() kann man den Durch-messer eines Kreises oder die Kantenlnge eines Quadrats verndern. Methoden zum Abfragen des Objekt-Status haben wir noch nicht kennen gelernt.

    Schritt 3Bevor wir Objekte bewegen knnen, mssen sie erst einmal sichtbar gemacht werden. Auch dazu existiert eine bestimmte Methode, nmlich makeVisible().

    Klicken Sie mit der rechten Maustaste auf das Objekt sonne der Klasse Circle und rufen Sie die Methode makeVisible() auf.

    1-13 Ein sichtbar gemachtes Objekt der Klasse Circle

    Ulrich Helmich: Informatik 1 mit BlueJ - Ein Kurs fr die Stufe 10 / 11 - Teil 1 (3. Auflage)

    Seite 14 von 79

  • Das Ergebnis dieses Methoden-Aufrufs sehen Sie in Abbildung 1-13. Es erscheint ein neues Fenster mit weiem Hintergrund. In diesem Fenster wird ein blauer Kreis angezeigt. Sie haben durch den Aufruf der Methode den Zustand des Objektes sonne verndert: Vorher war das Objekt nicht sichtbar, jetzt ist es in dem Fenster zu sehen. Methoden wie makeVisible(), die den Zustand eines Objektes verndern, heien verndernde oder manipulierende Methoden.

    Manipulierende MethodenMethoden, die einen oder mehrere Attributwerte eines Objektes und damit den Zustand eines Objektes verndern knnen.

    Wenn wir mit Lineal und Zirkel einen "echten" Kreis auf ein Blatt Papier zeichnen wollen, benti-gen wir genau drei Angaben: Den X-Wert und den Y-Wert des Mittelpunktes sowie den Radius des Kreises. Damit knnen wir den "Zustand" eines solchen Kreises genau definieren. Auch ein Kreis-Objekt unseres BlueJ-Projektes wird durch solche Eigenschaften oder Attribute definiert.

    Attribute und AttributwerteAttribute definieren bestimmte Eigenschaften eines Objektes wie beispielsweise seine Farbe. Attributwerte sind die konkreten Werte, die Attribute haben knnen. Das Attribut color kann z.B. den Attributwert yellow haben.Alle Objekte ein- und derselben Klasse haben die gleichen Attribute, knnen aber vllig un-terschiedliche Attributwerte haben.

    Ulrich Helmich: Informatik 1 mit BlueJ - Ein Kurs fr die Stufe 10 / 11 - Teil 1 (3. Auflage)

    Seite 15 von 79

  • Schritt 4Wir wollen nun untersuchen, durch welche Attribute die Circle-Objekte bestimmt werden. Dazu legen wir ein Circle-Objekt an und klicken dann mit der rechten Maustaste auf den roten Kasten, der das Objekt reprsentiert. Aus dem Kontextmen whlen wir den Befehl Inspect. Dies ist keine Methode, sondern ein bergeordneter Befehl, mit dessen Hilfe man vorhandene Objekte nher un-tersuchen - inspizieren - kann.

    1-14 Beim Inspizieren eines Objektes werden seine Attribute sichtbar

    Wir erkennen fnf Attribute, die den Zustand des Circle-Objektes circle1 genau definieren:

    Attribut Datentyp Bedeutung Attributwert

    diameter int Durchmesser 30

    xPosition int Koordinaten desKreis-Mittelpunktes

    20

    yPosition int

    Koordinaten desKreis-Mittelpunktes

    60

    color String Farbe "blue"

    isVisible boolean gibt an, ob das Objekt sichtbar ist

    false

    1-15 Die fnf Attribute eines Circle-Objektes. Zum Thema Datentypen siehe weiter untern.

    Die Tabelle macht auerdem den Unterschied zwischen Attribut und Attributwert klar. Jedes Circle-Objekt hat ein Attribut namens diameter. Zwei verschiedene Circle-Objekte knnen aber unterschiedliche Durchmesser haben. Ein groer Kreis hat vielleicht einen Durchmesser von 100 Pi-xeln, ein kleiner Kreis einen von 20 Pixeln. Die beiden Circle-Objekte haben unterschiedliche At-tributwerte. Versuchen wir nach diesen berlegungen noch mal eine vernnftige Definition des Begriffs Status bzw. Zustand:

    Ulrich Helmich: Informatik 1 mit BlueJ - Ein Kurs fr die Stufe 10 / 11 - Teil 1 (3. Auflage)

    Seite 16 von 79

  • Status bzw. ZustandGesamtheit der Attributwerte eines Objektes.

    Objekte der gleichen Klasse, bei denen smtliche Attributwerte bereinstimmen, haben den gleichen Status.

    Schritt 5Wie jedermann wei, ist unsere Sonne gro und gelb und nicht klein und blau. Sie sollen jetzt aus dem "blauen Zwerg" eine normale gelbe Sonne machen. Dazu mssen Sie weitere verndernde Methoden aufrufen.

    1-16 komfortable Eingabe eines Parameters in eine BlueJ-Methode

    Wenn Sie die Methode changeColor() aufrufen, erscheint ein Dialogfenster mit dem Titel "BlueJ: Method Call" bzw. "BlueJ: Methodenaufruf" (Abb. 1-16). Im oberen Teil des Fensters werden Sie ausfhrlich ber die Bedeutung der Methode aufgeklrt. In das Textfeld im unteren Teil des Dialogfensters mssen Sie die neue Farbe des Kreises eintippen. Wichtig ist, dass Sie die Farbe in Anfhrungszeichen setzen. Also nicht einfach yellow eingeben, sondern "yellow".

    Babylonische SprachverwirrungDie Namen der Methoden und Werte hngen davon ab, ob Sie die deutschen oder die engli-schen Beispielprojekte verwenden. Die Namen der Buttons und der System-Befehle hngen davon ab, ob Sie Ihr BlueJ auf Deutsch oder auf Englisch eingestellt haben. Unabhngig davon knnen Sie Objekte, die Sie selbst anlegen, benennen, wie Sie wollen.

    Ulrich Helmich: Informatik 1 mit BlueJ - Ein Kurs fr die Stufe 10 / 11 - Teil 1 (3. Auflage)

    Seite 17 von 79

  • ZwischenberlegungKnnen Sie den Unterschied zwischen den beiden Methoden makeVisible() und changeColor() mit wenigen Worten zusammenfassen?

    Die Methode makeVisible() kann einfach so aufgerufen werden. Es sind keine weiteren Angaben not-wendig. Der Aufruf der Methode macht den vorher unsichtbaren Kreis sichtbar.

    Die Methode changeColor() kann nicht einfach so aufgerufen werden. Wenn Sie die Farbe eines Kreises ndern wollen, so mssen sie genau angeben, welche Farbe der Kreis haben soll. Die Metho-de bentigt eine zustzliche Information. In der Informatik bezeichnet man solche zustzlichen In-formationen fr Methoden als Parameter.

    ParameterInformationen, die einer Methode beim Aufruf bergeben werden mssen, damit sie korrekt arbeiten kann.

    Die Methode changeColor() bentigt genau einen Parameter, nmlich die neue Farbe. Es gibt aber auch Methoden, die zwei, drei oder mehr Parameter bentigen. Wenn Sie zum Beispiel ein Objekt der Klasse Dreieck anlegen und dann die Gre ndern wollen, so mssen Sie die neue Hhe und die neue Breite des Dreiecks eingeben, also zwei Parameter.

    bung 1.2 Erzeugen Sie zwei Objekte der Klasse Triangle und verndern Sie die Farbe, die Position und die Gre der beiden Dreiecke.

    Ulrich Helmich: Informatik 1 mit BlueJ - Ein Kurs fr die Stufe 10 / 11 - Teil 1 (3. Auflage)

    Seite 18 von 79

  • Schritt 6Sie knnen sich bestimmt schon denken, wie die Gre der Sonne verndert werden kann. Sie mssen die Methode changeSize() aufrufen. Auch diese Methode bentigt einen Parameter, nm-lich die neue Gre, die der Kreis haben soll. Im Gegensatz zu changeColor() drfen Sie jetzt kei-ne Zeichenkette in das Textfeld des Dialogfensters eintippen, sondern es wird ein anderer Daten-typ erwartet, nmlich ein Zahlenwert. Tippen Sie jetzt die Zahl 100 ein - ohne Anfhrungszeichen wohlgemerkt.

    DatentypenKonkrete Angaben ber den Wertebereich einer Variable, eines Parameters oder eines At-tributs werden in vielen Programmiersprachen mit Hilfe von Datentypen verwirklicht.

    Datentypen in JavaBisher haben wir folgende Datentypen kennengelernt:

    int - ganze Zahlen

    String - Zeichenketten

    Daneben gibt es noch folgende wichtigen Datentypen in Java:

    float, double - reelle Zahlen

    char - einzelnes Zeichen

    boolean - Wahrheitswert, true oder false

    void - "leerer" Datentyp, wird verwendet, wenn angegeben werden soll, dass keiner der ande-ren Datentypen bentigt wird.

    Bei jedem Attribut und jedem Parameter einer Methode muss genau angegeben werden, zu welchem Datentyp sie gehren.

    Haben Sie es bemerkt? Es gibt in Java unterschiedliche Typen von Parametern. Bei changeColor() mssen Sie einen Text in Anfhrungszeichen eintippen - einen so genannten String (deutsch: Zei-chenkette). Bei changeSize() dagegen mssen Sie eine ganze Zahl eingeben. Bei jedem Parameter muss man genau beachten, zu welchem Datentyp (siehe Kasten) er gehrt.

    Jetzt hat der Kreis nicht nur eine andere Farbe, sondern ist auch grer geworden. Durch den Auf-ruf der manipulierenden Methode changeColor() haben Sie das Attribut color des Objektes kreis1 verndert. Vorher hatte das Attribut color den Attributwert "blue", jetzt hat es den Attri-butwert "yellow". Durch den Aufruf der Methode changeSize() wurde entsprechend der Attribut-wert des Attributes diameter gendert.

    Manipulierende Methoden (Neudefinition)Methoden, die einen oder mehrere Attributwerte eines Objektes und damit den Status des Objektes verndern.

    Ulrich Helmich: Informatik 1 mit BlueJ - Ein Kurs fr die Stufe 10 / 11 - Teil 1 (3. Auflage)

    Seite 19 von 79

  • bungKontrollieren Sie bitte, ob Sie in Ihrem BlueJ-Projekt folgende Objekte erzeugt haben: Einen Kreis namens sonne, einen zweiten Kreis namens mond, ein Quadrat namens haus und ein Dreieck namens dach.Rufen Sie dann fr jedes der Objekte die Methode makeVisible() auf. Ihr "Gemlde" sollte dann ungefhr so aussehen wie in Abbildung 1-17, falls Sie den Kreis sonne bereits wie oben besprochen verndert haben. Wenn nicht, sehen Sie nur einen blauen Kreis, der in Wirklich-keit aber aus zwei Kreisen sonne und mond besteht, die jedoch die gleichen Koordinaten haben und daher bereinander liegen.

    Versuchen Sie dann durch geschickten Aufruf geeigneter Methoden ein Bild zu malen, wie es in der Abbildung 1-18 dargestellt ist.

    1-17 So sieht ihr "Bild" zunchst aus. 1-18 Dieses Bild so"en Sie zeichnen

    Tipp fr das nchste Kapitel:

    Schreiben Sie sich genau auf, welche Methoden Sie in welcher Reihenfolge mit welchen Parametern aufgerufen haben. Das sollte Ihnen die nchste bung in der nchsten Folge stark erleichtern.

    Ulrich Helmich: Informatik 1 mit BlueJ - Ein Kurs fr die Stufe 10 / 11 - Teil 1 (3. Auflage)

    Seite 20 von 79

  • Theorieteil

    1.3 Klassen und Objekte

    Was sind eigentlich Klassen und Objekte? Es gibt in der Informatik-Didaktik mehrere verschiedene Anstze, die-sen Unterschied zu erklren. Ich werde hier drei dieser Anstze vorste"en.

    Ansatz 1: Die Auto-AnalogieIn der Garage Ihres Nachbarn steht ein weier Passat. Die Farbe brckelt schon etwas ab, weil er 12 Jahre alt ist. Vorne rechts in der Windschutzscheibe ist ein kleiner Riss, und die Antenne ist an zwei Stellen verbogen. Das Auto, das Sie jeden Tag sehen, ist ein ganz bestimmter Passat, den man anhand dieser Eigenschaften oder Attribute eindeutig von anderen Fahrzeugen des gleichen Typs unter-scheiden kann.

    Etwas vllig anderes ist es, wenn Sie von einem Bekannten gefragt werden: "Wie findest Du eigent-lich den neuen Passat von VW?" Damit ist kein individuelles Fahrzeug mehr gemeint, sondern die ganze Baureihe.

    Was hat das jetzt alles mit Klassen und Objekten zu tun? Nun, die Baureihe Passat entspricht einer Klasse. Der Passat in der Garage ist aber ein Objekt.

    Eine Klasse ist etwas Abstraktes, man kann "die Baureihe Passat" nicht anfassen oder sehen. Wenn man dagegen einen bestimmten Passat sieht, so sieht man immer ein konkretes Objekt. Den "Passat des Nachbarn" kann man anfassen, man kann ihn fahren und so weiter.

    Eine Java-Klasse kann man dagegen durchaus sehen - hier hinkt der Vergleich also etwas. Wenn wir auf den Kasten der Klasse Circle klicken, ffnet sich ein Fenster, in dem der Java-Quelltext der Klasse zu sehen ist.

    Von einer Klasse kann es viele Objekte geben: Von der Baureihe Passat fahren viele Tausend Exemp-lare in Deutschland herum. Jedes Passat-Objekt unterscheidet sich von anderen Passat-Objekten. Der eine Passat ist wei, der andere blau. Ein Passat hat 90 PS, der andere 110. Einer hat einen Sylt-Au&leber, der andere einen Heck-Spoiler. Jedes Passat-Objekt hat also bestimmte Attribute (Ei-genschaften), anhand derer es man erkennen kann. Selbst wenn zwei Passate absolut gleich aussehen (gleiche Farbe, gleiche PS-Zahl, gleiche Beule vorne links, weil sie den gleichen Fugnger erwischt haben), so haben sie trotzdem auch ein paar unterschiedliche Attribute: Die Fahrgestellnummer und die Kennzeichen sind beispielsweise verschieden. Selbst wenn es einer Bande von Autoschiebern gelingt, die Fahrgestellnummer und die Kennzeichen zu flschen, so dass sie bei beiden Fahrzeugen bereinstimmen, befinden sich die beiden Autos doch an unterschiedlichen Koordinaten.

    Dies alles gilt auch fr Java-Klassen. Von der Klasse Circle kann man beliebig viele Objekte anlegen. Allerdings ist es in Java durchaus mglich, zwei absolut gleiche Objekte einer Klasse zu erzeugen, die in allen Attributen bereinstimmen. In einem Punkt wrden sich diese beiden Objekte allerdings doch unterscheiden, nmlich in ihrem Namen. Man kann in einem Java-Programm nicht zwei Ob-jekte anlegen, die den gleichen Namen haben.

    Die Attribute von Objekten sind vernderbar: Man kann die krumme Antenne eines Passats wieder geradebiegen oder die schadhafte Windschutzscheibe reparieren lassen. Und die Position eines Passat-Objektes ndert sich sowieso stndig, wenn das Auto gefahren wird. Hier ist die Analogie

    Ulrich Helmich: Informatik 1 mit BlueJ - Ein Kurs fr die Stufe 10 / 11 - Teil 1 (3. Auflage)

    Seite 21 von 79

  • vollstndig. Auch Java-Objekte kann man verndern, indem man die Attributwerte ndert. Zu die-sem Zweck gibt es die manipulierenden Methoden.

    Ansatz 2: Die Stempel-Analogie

    1-19 Ein Stempel (von unten)

    Betrachten Sie den Stempel eines Gehaltsbros einer Firma (Abb. 1-19). Der Angestellte in diesem Bro haut diesen Stempel immer auf Karteikarten, und dann trgt er die vier Angaben (ich habe die-ses Beispiel stark vereinfacht) auf die Karteikarte ein. Das knnte z.B. so aussehen wie in Abbildung 1-20.

    1-20 Zwei Stempelabdrcke, mit Daten ausgef"t

    Zunchst macht der Angestellte die Karteikarte von Gabi Bhler fertig. Als nchstes bearbeitet er die Karte von Klaus Baum. Diese Karteikarte unterscheidet sich von der ersten, obwohl sie mit dem gleichen Stempel hergestellt wurde. Es ist nicht schwer zu erraten, was hier die Klasse und was ein Objekt sein soll. Der Stempel ist die Klasse, whrend die ausgefllten Stempelabdrcke auf den Karteikarten die Objekte sind. Bisher liegen zwei Objekte vor, die sich in ihren Attributwerten un-terscheiden: Name, Vorname, Alter und Gehalt sind unterschiedlich. Wenn der Angestellte im Bro aber fleiig ist, wird er im Laufe des Tages noch viel mehr solcher Objekte produzieren. Und zwar mit seinem Werkzeug zur Herstellung von Objekten, dem Stempel. hnlich wie der Stempel ist auch eine Klasse eine Vorlage zur Herstellung von Objekten.

    Dies ist eigentlich eine sehr schne Analogie. Den Stempel muss man erst herstellen, damit man Abdrcke machen kann. hnlich muss man eine Java-Klasse zuerst programmieren, man muss den Quelltext aufschreiben und speichern und kompilieren. Erst dann kann man Objekte der Klasse an-legen.

    Ulrich Helmich: Informatik 1 mit BlueJ - Ein Kurs fr die Stufe 10 / 11 - Teil 1 (3. Auflage)

    Seite 22 von 79

  • Ansatz 3: Die Word-AnalogieSie haben sicherlich schon einmal mit Word-Formatvorlagen gearbeitet. Wenn man zum Beispiel einen Geschftsbrief schreiben will, so doppelklickt man einfach auf die gewnschte Formatvorlage. Word erzeugt dann ein neues Dokument, das genauso aufgebaut ist, wie in der Formatvorlage festge-legt wurde. Die Formatvorlage ist also eine Vorschrift zur Konstruktion von Dokumenten. Wenn Sie das Word-Dokument speichern wollen, mssen sie ihm einen eindeutigen Namen geben. Danach knnen Sie ein zweites Dokument von der gleichen Vorlage erzeugen (Abb. 1-21), ein drittes und so weiter.

    1-21 Formatvorlagen bei Word

    Der Zusammenhang mit Klassen und Objekten sollte Ihnen jetzt klar sein: Die Formatvorlage ent-spricht einer Klasse, und das konkrete Dokument ist ein Objekt. Auch hier gilt wieder: Klassen sind Vorlagen zur Erstellung von Objekten, und die verschiedenen Objekte einer Klasse unter-scheiden sich voneinander durch unterschiedliche Attributwerte.

    KlassenVorlagen zur Erstellung von Objekten. Bei der Konstruktion einer Klasse werden die Attri-bute und die Methoden definiert, die allen Objekten dieser Klasse eigen sind. Die konkreten Attributwerte knnen sich jedoch von Objekt zu Objekt unterscheiden.

    Ulrich Helmich: Informatik 1 mit BlueJ - Ein Kurs fr die Stufe 10 / 11 - Teil 1 (3. Auflage)

    Seite 23 von 79

  • Folge 2 - Wir programmieren

    Workshop

    2.1 Wir programmieren ein Bild In den bungen der Folge 1 haben Sie die Methoden der Klassen Circle, Square und Triangle mit Hilfe der rechten Maustas-te aus einem Kontextmen ausgewhlt. Wenn Sie die Farbe des Kreis-Objektes sonne verndern wollten, mussten Sie erst die Methode changeColor() mit der Maus anwhlen und dann in das Dialog-fenster den Wert des Parameters eingeben: "yellow". hnlich mussten Sie bei der nderung der Gre, der nderung der Position und so weiter verfahren. In dieser Folge werden Sie eine vllig andere Verfah-rensweise kennen lernen, mit der Sie das Gleiche sehr viel eleganter erreichen kn-nen. Sie werden programmieren!

    Programmieren heit, dass Sie die einzelnen Methoden eines Objektes wie sonne nicht mit der rechten Maustaste aus einem Kontextmen auswhlen, sondern dass Sie die Methodenaufrufe sowie die bentigten Parameter in eine Textdatei hineinschreiben, zum Beispiel so:

    sonne.makeVisible();

    sonne.changeSize(100);

    sonne.changeColor("yellow");

    Eine solche Textdatei wird als Quelltext bezeichnet. Der Quelltext wird dann kompiliert, das heit in ausfhrbaren Maschinencode bersetzt. Wie von Zauberhand erscheint dann pltzlich in einem neuen Programmfenster das Bild von dem Haus mit der Sonne und dem Mond.

    Noch eine Vorbemerkung zur Sprachwahl:Ich habe diesen Teil des Skripts vor lngerer Zeit geschrieben, als ich noch die deutschen Beispiel-Quelltexte zur Verfgung hatte. Daher finden Sie auf den folgenden Seiten entsprechend deutsche Befehle, statt Circle also Kreis und statt makeVisible() also sichtbarMachen(). Ich hoffe, Sie werden durch diesen Wechsel nicht verwirrt.

    2-1 Erzeugen einer neuen Klasse

    Ulrich Helmich: Informatik 1 mit BlueJ - Ein Kurs fr die Stufe 10 / 11 - Teil 1 (3. Auflage)

    Seite 24 von 79

  • Schritt 1 - Neue Klasse erzeugenffnen Sie das Projekt "Figuren" bzw. "shapes" und klicken Sie den Button zur Erzeugung einer neuen Klasse an. Sie werden aufgefordert, der Klasse einen Namen zu geben und einen Typ zuzuweisen. Wh-len Sie als Name "Zeichnung" und als Typ "Klasse" bzw. "Class", so wie in Abbildung 2-1 gezeigt. Kli-cken Sie dann auf den OK-Button. Danach mss-ten Sie ein Bild sehen, wie es in der Abbildung 2-2 dargestellt ist. Man sieht die vier Klassen des Pro-jektes "Figuren" und die neue Klasse Zeichnung. Die Schraffierung der Klasse Zeichnung deutet darauf hin, dass Sie den Quelltext dieser Klasse noch nicht kompiliert haben.

    Schritt 2 - Minimal-Quelltext eingebenDoppelklicken Sie auf die Klasse Zeichnung. Es ffnet sich ein Fenster mit dem Quelltext der Klasse. Die Programmierer von BlueJ haben Ihnen in gut gemeinter Absicht schon viel Arbeit abge-nommen. Am besten lernen Sie Java jedoch, wenn Sie den von BlueJ erzeugten Quelltext komplett lschen und dann folgenden eigenen Quelltext in das Editor-Fenster eintippen. BlueJ ist nur eine von vielen Entwicklungsumgebungen fr Java; andere Programme sind nicht so nett, dass sie Ihnen den halben Quelltext erzeugen. Daher mssen Sie in der Lage sein, den kompletten Quelltext einer Java-Klasse aufzuschreiben.

    public class Zeichnung

    {

    public Zeichnung()

    {

    }

    }

    Wenn Sie ein Programm wie Photoshop starten und den Befehl Datei/Neu whlen, so ffnet sich eine neue leere Zeichnung. Bei einer Textverarbeitung erzeugen Sie mit Datei/Neu ein neues leeres Textdokument. hnlich ist dieser Java-Minimal-Quelltext zu verstehen, der - wenn man ihn nher betrachtet - aus zwei Ebenen besteht:

    public class Zeichnung{

    }

    public Zeichnung(){

    }

    Die Klasse Zeichnung

    Der Konstruktor

    Die uere Ebene steht fr die gesamte Klasse Zeichnung, und die innere Ebene definiert den Konstruktor der Klasse.

    2-2 Die neue Klasse wurde erzeugt.

    Ulrich Helmich: Informatik 1 mit BlueJ - Ein Kurs fr die Stufe 10 / 11 - Teil 1 (3. Auflage)

    Seite 25 von 79

  • Exkurs: Was ist ein Konstruktor?Zunchst einmal die Definition:

    KonstruktorSpezielle Methode einer Klasse, die aufgerufen werden muss, wenn ein Objekt dieser Klasse erzeugt werden soll.

    Nun die Erluterung:

    Betrachten wir die Klasse Kreis. Wenn Sie im BlueJ-Fenster mit der rechten Maustaste auf diese Klasse klicken und dann den Befehl new Kreis() auswhlen, mssen Sie zunchst einen Namen fr das zu erzeugende Kreis-Objekt eingeben, beispielsweise "sonne". Wenn Sie dann mit dem OK-But-ton besttigen, wird automatisch, ohne dass Sie es bemerken, der Konstruktor der Klasse Kreis aufgerufen. Dieser Konstruktor sorgt dann dafr, dass ein Objekt der Klasse Kreis mit der Be-zeichnung "sonne" erzeugt wird. Auerdem sorgt der Konstruktor - wieder merken Sie nichts davon - dafr, dass das Objekt eine bestimmte Ausgangsfarbe, Ausgangsgre und Ausgangsposition hat.

    Schritt 3 - MethodenNeben dem Konstruktor haben Klassen normalerweise viele andere Methoden. Wir wollen die Klas-se Zeichnung jetzt um eine solche "richtige" Methode ergnzen; zunchst mit einer leeren Metho-de, die wir spter mit Inhalt fllen:

    public class Zeichnung

    {

    }

    public Zeichnung()

    {

    }

    Die Klasse Zeichnung

    Der Konstruktor

    public void sichtbarMachen()

    {

    }

    Eine normale Methode

    Kompilieren Sie den Quelltext, erzeugen Sie ein Objekt bild der Klasse, und klicken Sie dann mit der rechten Maustaste auf bild. Tatschlich taucht jetzt die neue Methode sichtbarMachen() im Kontextmen des Objektes bild auf. Allerdings passiert nichts, wenn Sie auf die Methode klicken. Das ist aber auch kein Wunder, schlielich haben Sie noch keine Befehle in die Methode hineinge-schrieben.

    Ulrich Helmich: Informatik 1 mit BlueJ - Ein Kurs fr die Stufe 10 / 11 - Teil 1 (3. Auflage)

    Seite 26 von 79

  • Schritt 4 - Einen Kreis erzeugen und sichtbar machenErgnzen Sie den Quelltext wie folgt um drei Zeilen (hier blau gedruckt):

    public class Zeichnung

    {

    private Kreis sonne;

    public Zeichnung()

    {

    sonne = new Kreis();

    }

    public void sichtbarMachen()

    {

    sonne.sichtbarMachen();

    }

    }

    Wir wollen uns die drei neuen Zeilen einzeln betrachten.

    4.1 - Das Attribut sonneDie Zeile

    private Kreis sonne;

    sorgt dafr, dass die Klasse Zeichnung ein Attribut mit dem Namen sonne bekommt. Man spricht hier auch von der Deklaration des Attributs.

    private

    public

    Datentyp Bezeichner ;

    2-3 Syntaxdiagramm fr die Deklaration eines Attributs

    Die Syntax (grammatische Regeln) fr die Deklaration eines Attributs ist in Abbildung 2-4 darge-stellt. Zuerst kommt das Schlsselwort private (oder public), dann muss der Datentyp des Attributs angegeben werden, und schlielich kommt der Name des Attributes, der so genannte Be-zeichner. Die Deklaration wird wie jeder Java-Befehl mit einem Semikolon abgeschlossen. Der Da-tentyp kann zum Beispiel String, int, float oder boolean sein oder der Name einer Klasse. Fr

    Ulrich Helmich: Informatik 1 mit BlueJ - Ein Kurs fr die Stufe 10 / 11 - Teil 1 (3. Auflage)

    Seite 27 von 79

  • den Bezeichner eines Attributs gelten einfache lexikalische Regeln: Das erste Zeichen sollte ein Kleinbuchstabe sein, ansonsten darf der Name Klein- und Grobuchstaben sowie Ziffern enthalten, aber keine Leerzeichen, Umlaute, Satzzeichen oder andere Zeichen. Der Bezeichner 2. Quartal wre also in dreifacher Hinsicht falsch. Er fngt mit einer Ziffer an, enthlt einen Punkt, und enthlt ein Leerzeichen. Dagegen wre der Bezeichner zweitesQuartal lexikalisch korrekt, ebenso wie der Bezeichner quartal2.

    bung 2.1

    berprfen Sie bitte folgende Attribut-Deklarationen auf lexikalische und syntak-tische Fehler sowie auf sinnvolle Namensgebung und sinnvolle Gro/Klein-Schrei-bung.

    Lexikalischer Fehler = ein Wort wurde falsch geschrieben (Fehler in der Rechtschreibung).

    Syntaktischer Fehler = die Regeln zur Bildung eines Ausdrucks wurden verletzt (Fehler in der Grammatik).

    Sinnvo"e Namensgebung = der Name des Attributs sollte mglichst viel ber Sinn und Zweck des Attributs aussagen, eindeutig und auch recht kurz sein.

    Sinnvo"e Gro/Klein-Schreibung = ein Attribut sollte immer mit einem Kleinbuchstaben begin-nen. Besteht ein Attribut aus mehreren Worten, sollte jedes weitere Wort mit einem Gro-buchstaben beginnen.

    1. public int sichtbarMakken;

    2. private boolean ist Wahr?

    3. Radius: int;

    4. privat flaot;

    5. void keinWert;

    6. public float Radius;

    7. public float radius;

    8. private int 2Zahlen;

    9. private int dasIstDieZweiteZahlDieDerBenutzerEingegebenHat;

    10. private float cdiuotrsd';

    Ulrich Helmich: Informatik 1 mit BlueJ - Ein Kurs fr die Stufe 10 / 11 - Teil 1 (3. Auflage)

    Seite 28 von 79

  • Exkurs: HAT-BeziehungenHtten Sie geschrieben

    private int sonne;

    so htte das Attribut sonne den Datentyp int, es wre also lediglich zum Speichern einer ganzen Zahl geeignet. Ein Objekt wie zum Beispiel einen bunten Kreis mit Koordinaten, Gre, Farbe etc. knnte man in dem einfachen int-Attribut dann nicht speichern. Das wre so, als wollten Sie einen Gartenstuhl in einer kleinen Nachttischschublade verstauen.

    Htten Sie dagegen geschrieben

    private String sonne;

    so knnte das Attribut sonne eine lange Zeichenkette wie "Morgen geht die Sonne auf" speichern. Einen bunten Kreis knnte man aber immer noch nicht in dem Attribut unterbringen. Bildlich ge-sprochen, wre die Schublade immer noch zu klein.

    Wenn Sie jedoch schreiben:

    private Kreis sonne;

    speichert das Attribut sonne tatschlich ein Objekt der Klasse Kreis. Jetzt haben sie quasi die pas-sende Schublade gefunden.

    Fassen wir einmal zusammen, was wir jetzt gemacht haben. Wir haben eine Klasse Zeichnung de-klariert, also eine Klasse, von der wir spter Objekte herstellen wollen. Diese Klasse Zeichnung enthlt bestimmte Attribute - wie das bei Klassen ja auch normal ist. Eines dieser Attribute, nmlich sonne, ist nun seinerseits ein Objekt einer anderen Klasse, nmlich Kreis. Diesen Sachverhalt kann man auch folgendermaen ausdrcken: Die Klasse Zeichnung HAT ein Objekt der Klasse Kreis.

    2-4 Eine HAT-Beziehung zwischen Kreis und Zeichnung

    Die Pfeile in der Abbildung 2-4 reprsentiert solche HAT-Beziehungen. Die Pfeile weisen stets von der bergeordneten Klasse zu der untergeordneten Klasse, nicht umgekehrt. blicherweise wird die Pfeilspitze eines solchen HAT-Pfeils schwarz bzw. geschlossen dargestellt.

    HAT-Beziehung A ===> BKlasse A besitzt (hat) Attribute (mindestens 1), die Objekte der Klasse B sind.

    Ulrich Helmich: Informatik 1 mit BlueJ - Ein Kurs fr die Stufe 10 / 11 - Teil 1 (3. Auflage)

    Seite 29 von 79

  • Eine bergeordnete Klasse wie Zeichnung kann ein einziges Objekt einer anderen Klasse besitzen, oder auch mehrere verschiedene Objekte der gleichen Klasse. So knnte unsere Klasse Zeichnung auch zwei, drei oder beliebig viele Objekte der Klasse Kreis besitzen. Allerdings mssten diese Ob-jekte dann unterschiedliche Namen haben, sie knnen nicht alle sonne heien, sondern mssen dann als sonne, mond, pizza, rad und so weiter bezeichnet werden.

    Eine Klasse kann auch Objekte verschiedener anderer Klassen besitzen. Die Klasse Zeichnung knnte neben den zwei, drei oder vier Kreis-Objekten auch noch ein, zwei, drei oder mehrere Quadrat- oder Dreieck-Objekte haben.

    4.2 - Das Objekt sonne initialisierenMit der Deklaration des Objektes sonne ist es noch nicht getan. Die Deklaration eines Objektes ist sozusagen die Vorbereitung; es wird Speicherplatz reserviert, damit berhaupt erst ein Objekt an-gelegt werden kann. Das Objekt selbst existiert aber noch nicht, wenn wir es nur deklariert haben. Es ist ein weiterer Schritt erforderlich, nmlich die Initialisierung des Objektes.

    Die Initialisierung von Objekten erfolgt meistens im Konstruktor derjenigen Klasse, welche das Objekt bentigt. Da die Klasse Zeichnung ein Objekt sonne der Klasse Kreis bentigt, wird das Objekt sonne im Konstruktor von Zeichnung initialisiert.

    Ergnzen Sie daher den Quelltext des Konstruktors bitte folgendermaen:

    public Zeichnung()

    {

    sonne = new Kreis();

    }

    Bezeichner = new Konstruktor ;

    2-5 Syntaxdiagramm fr die Initialisierung eines Objektes

    Erst kommt der Bezeichner des neuen Objektes, hier also sonne. Dann kommt das Zuweisungs-symbol = und anschlieend der Befehl new. Der letzte Teil der Initialisierung besteht in dem Aufruf des Konstruktors des neuen Objektes.

    Erinnern Sie sich noch, wie Sie "per Hand" ein Objekt der Klasse Kreis erzeugt haben? Richtig: Sie haben mit der rechten Maustaste auf die Klasse Kreis geklickt und dann den Befehl new Kreis() ausgewhlt. Anschlieend wurden Sie gefragt, wie das neue Objekt heien soll. Hier haben Sie "sonne" eingetippt. Genau das gleiche haben wir jetzt in den Konstruktor der Klasse Zeichnung hineinprogrammiert.

    Ulrich Helmich: Informatik 1 mit BlueJ - Ein Kurs fr die Stufe 10 / 11 - Teil 1 (3. Auflage)

    Seite 30 von 79

  • 4.3 - Das Objekt sonne sichtbar machenDie dritte Stelle, die Sie ergnzen mssen, ist die Methode sichtbarMachen(). Die Klasse Zeich-nung hat jetzt ein Objekt sonne. Keine Angst, Sie mssen jetzt keine komplizierten Java-Befehle zum Zeichnen von Kreisen lernen, sondern knnen einfach die bereits vorhandenen Methoden der Klasse Kreis aufrufen:

    public void sichtbarMachen()

    {

    sonne.sichtbarMachen();

    }

    Dieses Vorgehen nennt man auch Delegation. Die Methode sichtbarMachen() der Klasse Zeichnung muss selbst kaum etwas leisten, sie ruft lediglich die Methode sichtbarMachen() des Objektes sonne auf und delegiert damit die Hauptarbeit an das Objekt sonne. Wie das Sichtbar-machen des Objektes genau funktioniert, interessiert weder die Klasse Zeichnung noch den Pro-grammierer, solange die Methode einwandfrei funktioniert.

    2-6 Die neue Klasse Zeichnung funktioniert

    Ulrich Helmich: Informatik 1 mit BlueJ - Ein Kurs fr die Stufe 10 / 11 - Teil 1 (3. Auflage)

    Seite 31 von 79

  • Der Quelltext der Klasse Zeichnung msste nach diesen Schritten folgendermaen aussehen:

    public class Zeichnung

    {

    private Kreis sonne;

    public Zeichnung()

    {

    sonne = new Kreis();

    }

    public void sichtbarMachen()

    {

    sonne.sichtbarMachen();

    }

    }

    Falls Sie mit den englischen Beispieldateien arbeiten, sollten Sie auch Ihre eigene Klasse sowie die Methoden dieser Klasse in englisch programmieren, sonst sieht das Ganze recht komisch aus. Hier ein mglicher Quelltext:

    public class Drawing

    {

    private Circle sun;

    public Drawing()

    {

    sun = new Circle();

    }

    public void makeVisible()

    {

    sun.makeVisible();

    }

    }

    Schritt 5 - Die Zeichnung wird sichtbarErzeugen Sie jetzt - nachdem Sie also den Quelltext wie oben angegeben ergnzt haben - ein Objekt bild der Klasse Zeichnung. Klicken Sie das Objekt mit der rechten Maustaste an und rufen Sie dann die Methode sichtbarMachen() auf. Wenn Sie alles richtig gemacht haben, msste jetzt ein Fenster mit einem kleinen blauen Kreis erscheinen, so wie in Abbildung 2-6 dargestellt.

    Jetzt knnte man kritisch einwenden, dass eine Sonne normalerweise gro und gelb und nicht wie in der Zeichnung klein und blau ist. Da htte dieser Kritiker vollkommen Recht. Aber bevor wir daran gehen, und die Sonne entsprechend manipulieren, wollen wir uns berlegen, wie man die Zeichnung mit weiteren Graphik-Objekten ausstatten kann.

    Ulrich Helmich: Informatik 1 mit BlueJ - Ein Kurs fr die Stufe 10 / 11 - Teil 1 (3. Auflage)

    Seite 32 von 79

  • Schritt 6 - Zwei ObjekteDas ist - ehrlich gesagt - noch nicht allzu beeindruckend, was wir bisher geschafft haben. Wir wollen jetzt den Quelltext der Klasse Zeichnung um ein weiteres Objekt ergnzen, und zwar um ein gro-es grnes Quadrat. Wie bereits festgestellt wurde, kann eine bergeordnete Klasse ja zwei, drei oder auch mehrere verschiedene Objekte der gleichen untergeordneten Klasse enthalten. Auerdem kann eine Klasse Objekte verschiedener untergeordneter Klassen besitzen. Von dieser Eigenschaft machen wir jetzt Gebrauch.

    6.1 - Zweites Objekt deklarierenWir bentigen fr das groe grne Quadrat ein zweites Objekt innerhalb der Klasse Zeichnung - natrlich diesmal ein Objekt der Klasse Quadrat. Also mssen wir zunchst ein Objekt der Klasse Quadrat deklarieren. Nennen wir das Quadrat-Objekt doch einfach mal haus.

    public class Zeichnung

    {

    private Kreis sonne;

    private Quadrat haus;

    ...

    6.2 - Das zweite Objekt initialisierenMit der Deklaration ist es noch nicht getan; das zweite Objekt muss auch initialisiert werden. Da-zu erweitern wir den Konstruktor von Zeichnung um eine zweite Zeile:

    public Zeichnung()

    {

    sonne = new Kreis();

    haus = new Quadrat();

    }

    6.3 - Das zweite Objekt anzeigenWir mssen schlielich die Methode sichtbarMachen() der Klasse Zeichnung so ergnzen, dass auch das Objekt haus angezeigt wird wird.

    public void sichtbarMachen()

    {

    sonne.sichtbarMachen();

    haus.sichtbarMachen();

    }

    Ulrich Helmich: Informatik 1 mit BlueJ - Ein Kurs fr die Stufe 10 / 11 - Teil 1 (3. Auflage)

    Seite 33 von 79

  • 6.4 - ZusammenfassungSchauen wir und das alles noch mal im Zusammenhang an. Die neuen Zeilen des Quelltextes sind blau geschrieben, die alten schwarz.

    public class Zeichnung

    {

    private Kreis sonne;

    private Quadrat haus;

    public Zeichnung()

    {

    sonne = new Kreis();

    haus = new Quadrat();

    }

    public void sichtbarMachen()

    {

    sonne.sichtbarMachen();

    haus.sichtbarMachen();

    }

    }

    Dies ist der Quelltext, der - fast - zum richtigen Ergebnis fhrt. Allerdings ist das Quadrat weder gro noch grn, aber zumindest ist es schon mal vorhanden. Es wird in seiner Standardansicht dar-gestellt.

    Ulrich Helmich: Informatik 1 mit BlueJ - Ein Kurs fr die Stufe 10 / 11 - Teil 1 (3. Auflage)

    Seite 34 von 79

  • Schritt 7 - Verndern eines ObjektesDas Haus soll jetzt grn und gro werden. Dazu erinnern wir uns wieder daran, wie wir das in Folge 1 dieses Kurses per Hand gemacht haben: Rechtsklick auf die entsprechenden Objekte und Aufruf der richtigen Methoden. Genau so mssen wir es auch jetzt machen, nur diesmal mssen wir die Methodenaufrufe programmieren:

    public void sichtbarMachen()

    {

    sonne.sichtbarMachen();

    haus.sichtbarMachen();

    haus.groesseAendern(100);

    haus.vertikalBewegen(100);

    haus.farbeAendern("gruen");

    }

    Wenn Sie den Quelltext der Klasse Zeichnung jetzt kompilieren und dann mit der rechten Maus-taste ein Objekt der Klasse Zeichnung erzeugen, so fhrt ein Aufruf der Methode sichtbarMa-chen() zu dem gewnschten Ergebnis. Das Quadrat ist gro und grn und befindet sich auch schon weiter unten.

    bung 2.2 (3 Punkte)

    Ergnzen Sie den Quelltext der Klasse Zeichnung so, dass ein hnliches Bild wie in Folge 1 entsteht, nmlich ein Haus mit einem Dach, dahinter eine Sonne und ein Mond:

    Ulrich Helmich: Informatik 1 mit BlueJ - Ein Kurs fr die Stufe 10 / 11 - Teil 1 (3. Auflage)

    Seite 35 von 79

  • Fr Klausurleute und Abiturienten

    2.2 UML-Diagramme (neu!)Im Zentralabitur in NRW wird von den Schlern verlangt, dass Sie mit UML-Diagrammen umgehen knnen. Sie mssen in der Lage sein, ein einfaches UML-Diagramm zu zeichnen, und Sie mssen in der Lage sein, ein etwas komplexeres UML-Diagramm zu verstehen und zu beschreiben. Wir haben hier noch nicht ber dieses Thema geredet, aber ich wette, dass Sie die zweite Anforderung bereits erfllen. Betrachten Sie doch einmal das folgende UML-Diagramm:

    Zeichnung

    - sonne: Kreis- haus: Quadrat

    C Zeichnung()+ sichtbarMachen(): void

    Quadrat

    - size: int- color: String

    C Quadrat()+ sichtbarMachen(): void+ nachLinks(int):void+ nachRechts(int):void+ farbeAendern(String):void

    Kreis

    - radius: int- color: String

    C Kreis()+ sichtbarMachen(): void+ nachLinks(int):void+ nachRechts(int):void+ farbeAendern(String):void

    2-7 Ein UML-Diagramm der Klassen Kreis, Quadrat und Zeichnung

    Das UML-Diagramm stellt die drei bisher verwendeten Klassen Kreis, Quadrat und Zeichnung dar und verdeutlicht die Beziehungen zwischen den drei Klassen. Jede Klasse wird durch ein Recht-eck darsgestellt, das in drei Bereiche eingeteilt ist. Im oberen Abschnitt steht der Name der Klasse, also beispielsweise Quadrat. Im zweiten Abschnitt stehen die Attribute der Klasse, und im dritten Abschnitt die Methoden.

    Bei greren Klassen schreibt man nicht alle Attribute und Methoden auf, sondern nennt nur die wichtigsten. Mit einem Plus- oder Minus-Symbol vor dem Attribut oder der Methode kennzeichnet man ffentliche (public) oder private Attribute / Methoden.

    Ulrich Helmich: Informatik 1 mit BlueJ - Ein Kurs fr die Stufe 10 / 11 - Teil 1 (3. Auflage)

    Seite 36 von 79

  • AttributeHinter dem Attributnamen gibt man den Datentyp des Attributs an. Diese Schreibweise unterschei-det sich deutlich von der Syntax in einem Java-Programm. Vergleichen wir einmal:

    Java-Programm: ( private int x;

    UML-Diagramm: - x : int

    Das ist auf den ersten Blick verwirrend. Aber man muss sich klar machen, dass UML ja keine Pro-grammiersprache ist, sondern eine Modellierungssprache (unified modelling language = UML). Mit UML macht man den Au)au von Klassen sowie die Beziehungen zwischen Klassen deutlich. Ein Fachmann kann aus einem UML-Diagramm wie in der Abbildung 2-7 sofort ein entsprechendes Ja-va-Programm herstellen. Er kann daraus aber auch ein gleichwertiges Pascal- oder C++- oder PHP-Programm machen. UML ist programmiersprachen-unabhngig! Daher die von Java abweichende Syntax.

    MethodenBetrachten wir einmal die Methoden der Klasse Quadrat, die im UML-Diagramm bercksichtigt werden:

    C Quadrat()+ sichtbarMachen(): void+ nachLinks(int):void+ nachRechts(int):void+ farbeAendern(String):void

    Vor dem Methodennamen steht ein Plus- oder ein Minuszeichen. Der Konstruktor wird durch den Buchstaben C gekennzeichnet. Auf den Methodennamen folgt die Parameterliste - sofern berhaupt Parameter vorhanden sind. Andernfalls kennzeichnet man das Fehlen von Parametern durch eine leere Parameterliste ( ). Die Namen der Parameter sind fr das UML-Diagramm uerst unwichtig, daher gibt man sie nicht an, sondern nur die Datentypen der Parameter. Diese sind wiederum recht wichtig. Wenn ich eine Methode wie farbeAendern() aufrufen mchte, so muss ich nur wissen, dass ich jetzt einen String als Parameter bergeben muss, zum Beispiel "yellow". Wie der Program-mierer diesen Parameter bezeichnet hat, als er die Klasse Quadrat geschrieben hat, ist fr mich dabei vllig gleichgltig. Meinetwegen kann er ihn "anna" genannt haben; ich merke davon ja nichts, sondern schreibe in meinen Quelltext einfach

    haus.farbeAendern("yellow");

    falls ich mit den deutschen Beispielen arbeite, andernfalls

    house.changeColor("yellow");

    Nach der Parameterliste kommt schlielich noch der Rckgabetyp der Methode. Bei manipulieren-den Methoden handelt es sich dabei immer um void. Sondierende Methoden, die wir noch gar nicht kennengelernt haben, liefern dann "richtige" Werte zurck, beispielsweise die X-Koordinate, an der sich das Quadrat gerade au'lt oder die Gre des Quadrats.

    Ulrich Helmich: Informatik 1 mit BlueJ - Ein Kurs fr die Stufe 10 / 11 - Teil 1 (3. Auflage)

    Seite 37 von 79

  • BeziehungenHAT-Beziehungen werden im UML-Diagramm durch einfache Pfeile dargestellt. Und zwar geht der Pfeil von der bergeordneten Klasse aus und verweist auf die untergeordnete Klasse. Hat eine Klas-se wie Zeichnung drei oder vier Objekte einer Klasse wie Kreis, so kann man diese Zahl an den Pfeil schreiben, um dies zu verdeutlichen.

    FreiheitenDie Sprache UML ist sehr komplex, man kann fast alles mgliche mit ihr darstellen. Im Abitur wird nur eine extrem kleine Teilmenge von UML von den Schler(innen) verlangt. Wie bereits gesagt, mssen Sie in der Lage sein, einfache UML-Diagramme zu zeichnen sowie etwas komplexere UML-Diagramme zu verstehen und zu beschreiben. Beim Zeichnen von UML-Diagrammen gibt es recht viele Freiheiten. So mssen Sie nicht alle Attribute und Methoden auflisten, sondern bei greren Klassen reicht es, wenn Sie nur die wichtigsten angeben, wobei es natrlich wieder Interpretations-sache ist, welche Methoden gerade wichtig sind. Dies kann durchaus vom Kontext abhngen, in dem das UML-Diagramm gerade benutzt wird. Es knnen je nach Zusammenhang also durchaus unter-schiedliche Attribute oder Methoden relevant sein. Manchmal sieht man UML-Diagramme, bei de-nen die Plus- oder Minussymbole vor den Attributen und Methoden fehlen. Auch das ist in Ord-nung. Oft sieht man Diagramme, bei denen der Datentyp der Attribute nicht angegeben ist. Auch das ist eventuell in Ordnung. Auch die Rckgabetypen von Methoden oder die Parameterlisten wer-den hufig nicht im Diagramm angegeben. Hier gibt es - so weit ich bisher recherchiert habe - auch keine einheitliche Richtlinie. Wichtig ist vor allem, dass das UML-Diagramm bersichtlich bleibt.

    Ulrich Helmich: Informatik 1 mit BlueJ - Ein Kurs fr die Stufe 10 / 11 - Teil 1 (3. Auflage)

    Seite 38 von 79