Objektorientiertes Programmieren in Java mit...

30
Objektorientiertes Programmieren in Java mit BlueJ E. Fell: Einführung in Java Quellen: Barnes/Kölling: Objektorientierte Programmierung mit Java, H.P. Gumm, Praktische Informatik I Arbeiten mit BlueJ Compilieren, Editieren, Objekte erzeugen, Methoden aufrufen, Objekte inspizieren, vorhandene Klassen benutzen, eigene Klassen und Methoden erstellen

Transcript of Objektorientiertes Programmieren in Java mit...

Objektorientiertes Programmieren in Java mit BlueJ

E. Fell: Einführung in Java Quellen: Barnes/Kölling: Objektorientierte Programmierung mit Java, H.P. Gumm, Praktische Informatik I

Arbeiten mit BlueJ

Compilieren, Editieren, Objekte erzeugen, Methoden aufrufen, Objekte inspizieren, vorhandene Klassen benutzen, eigene Klassen und Methoden erstellen

Objektorientiertes Programmieren in Java mit BlueJ

E. Fell: Einführung in Java Quellen: Barnes/Kölling: Objektorientierte Programmierung mit Java, H.P. Gumm, Praktische Informatik I

In BlueJ geht es einfach

Name ausdenken: Beispiele

(in Q:\Documents\Java)

BlueJ durch Doppelklick starten

Neues Projekt öffnen Da passen dann viele Klassen hinein

Bluej.exe

Objektorientiertes Programmieren in Java mit BlueJ

E. Fell: Einführung in Java Quellen: Barnes/Kölling: Objektorientierte Programmierung mit Java, H.P. Gumm, Praktische Informatik I

BlueJ, Erste Klasse ...

Neue Klasse

Name: Hello

Klasse „Hello.java“ ist entstanden Die rechte Maustaste öffnet ein Kontextmenü. Damit können wir dieKlasse z.B. editieren.

Objektorientiertes Programmieren in Java mit BlueJ

E. Fell: Einführung in Java Quellen: Barnes/Kölling: Objektorientierte Programmierung mit Java, H.P. Gumm, Praktische Informatik I

Editieren, Compilieren

Der Editor enthält schon Beispielcode. Meistens werden wir diesen verändern – editieren.

Wir können ihn aber auch schon gleich übersetzen - compilieren

Objektorientiertes Programmieren in Java mit BlueJ

E. Fell: Einführung in Java Quellen: Barnes/Kölling: Objektorientierte Programmierung mit Java, H.P. Gumm, Praktische Informatik I

Objekte erzeugen

Das KontextMenü bietet uns eine neue Auswahl: „new Hallo()“. Damit erzeugen wir Objekte :

Der Klasse im BlueJ-Fenster sieht man an, dass sie erfolgreich compiliert ist – sie ist jetzt nicht mehr gestreift.

Hier sind schon drei Objekte erzeugt worden

Objektorientiertes Programmieren in Java mit BlueJ

E. Fell: Einführung in Java Quellen: Barnes/Kölling: Objektorientierte Programmierung mit Java, H.P. Gumm, Praktische Informatik I

Objekte – unser Ziel Objekte sind die Helden des Objektorientierten Programmierens. In BlueJ können alle Fähigkeiten der Objekte durch Kontextmenüs direkt aufgerufen werden. Zusätzlich kann man die Innereien der Objekte inspizieren (Inspect), oder das Objekt entfernen (Remove).

Objektorientiertes Programmieren in Java mit BlueJ

E. Fell: Einführung in Java Quellen: Barnes/Kölling: Objektorientierte Programmierung mit Java, H.P. Gumm, Praktische Informatik I

Figuren, als Objekte modelliert

Für diesen Java-Kurs gilt: Namen für Objekte beginnen immer mit Kleinbuchstaben !!! Namen für Klassen beginnen mit einem Großbuchstaben !!!

Wir öffnen das vorhandene Projekt „shapes“ und erzeugen uns Objekte der Klassen

• Circle • Square • Triangle.

Wir können den Objekten Namen geben, z.B.: • kreis • quadrat

oder die Vorgabe-Namen • circle1 • circle2 • triangle1 ...

akzeptieren.

Objektorientiertes Programmieren in Java mit BlueJ

E. Fell: Einführung in Java Quellen: Barnes/Kölling: Objektorientierte Programmierung mit Java, H.P. Gumm, Praktische Informatik I

Warum sehen wir keinen Kreis ?

Wir inspizieren das Objekt kreis , indem wir aus dem Kontextmenü Inspect wählen.

Objektorientiertes Programmieren in Java mit BlueJ

E. Fell: Einführung in Java Quellen: Barnes/Kölling: Objektorientierte Programmierung mit Java, H.P. Gumm, Praktische Informatik I

isVisible = false

Es öffnet sich ein Inspektor:

Der kreis hat also • diameter 30 • xPosition 20 • yPosition 60 • color „blue“

und die Eigenschaft • isVisible false

Wir müssen also diese Eigenschaft verändern. Aber wie ?

Objektorientiertes Programmieren in Java mit BlueJ

E. Fell: Einführung in Java Quellen: Barnes/Kölling: Objektorientierte Programmierung mit Java, H.P. Gumm, Praktische Informatik I

Die Methode makeVisible()

Im KontextMenü von kreis finden wir die Methode makeVisible(). Wir klicken diese an und … der Kreis wird in einem Fenster sichtbar

Objektorientiertes Programmieren in Java mit BlueJ

E. Fell: Einführung in Java Quellen: Barnes/Kölling: Objektorientierte Programmierung mit Java, H.P. Gumm, Praktische Informatik I

Methodenerkundung

Auf die gleiche Weise machen wir auch quadrat und dreieck sichtbar.

Anschliessend probieren wir weitere Methoden, z.B.

• von square die Methode moveRight( ) • von kreis die Methode moveDown( ) • von square die Methode moveUp( ) • von square die Methode moveRight( )

Objektorientiertes Programmieren in Java mit BlueJ

E. Fell: Einführung in Java Quellen: Barnes/Kölling: Objektorientierte Programmierung mit Java, H.P. Gumm, Praktische Informatik I

Methoden mit Argumenten

Jetzt wollen wir die Größe des Kreises ändern und wählen dieMethode changeSize(int)

Es öffnet sich ein InputFenster, das uns auffordert, einen neuenDurchmesser einzugeben ….

int bedeutet, dass eine ganze Zahl verlangt ist. In dem Kästchen steht aber noch ein Kommentar //Change size ... Size must be >= 0. Wir geben 100 ein und ….

Objektorientiertes Programmieren in Java mit BlueJ

E. Fell: Einführung in Java Quellen: Barnes/Kölling: Objektorientierte Programmierung mit Java, H.P. Gumm, Praktische Informatik I

Weitere Objekte

• Wir fügen zwei weitere Kreise hinzu o bewegen einen 100 nach rechts o den anderen um 50 nach unten o machen beide sichtbar

• … wir sehen nur zwei blaue Kreise. Wo ist der dritte ? Genau, der große blaue verdeckt den kleinen blauen – oder umgekehrt … Zum Glück finden wir im KontextMenü von kreis3 die Methode changeColor(String)

Objektorientiertes Programmieren in Java mit BlueJ

E. Fell: Einführung in Java Quellen: Barnes/Kölling: Objektorientierte Programmierung mit Java, H.P. Gumm, Praktische Informatik I

String-Argumente

Wir sollen einen String, also einen Text in Anführungszeichen “ “ eingeben. Der Programmierer hat bemerkt, dass “red“, “yellow“, “blue“, etc. erlaubt sind :

Jetzt sehen wir auch kreis3 :

Objektorientiertes Programmieren in Java mit BlueJ

E. Fell: Einführung in Java Quellen: Barnes/Kölling: Objektorientierte Programmierung mit Java, H.P. Gumm, Praktische Informatik I

Nach-Inspektion

• Wir schauen noch einmal im Inspektor für kreis nach und erkennen, dass die Felder

o diameter o xPosition o yPosition o isVisible

neue Werte haben.

• Offensichtlich kommen drei Typen von Werten vor o int steht für ganzzahlige Werte, z.B. 1, 20, -300, 0, 42 o String steht für Text, z.B. “blue“, “OttoKar“, “ich habe fertig !“ o boolean steht für einen der Werte true oder false (ohne “ “).

Objektorientiertes Programmieren in Java mit BlueJ

E. Fell: Einführung in Java Quellen: Barnes/Kölling: Objektorientierte Programmierung mit Java, H.P. Gumm, Praktische Informatik I

Ein Haus für BlueJ

• Versuchen Sie, diese idyllische Szene nachzuzeichnen

• Entwerfen Sie Ihr eigenes Haus

• Malen Sie Ihr eigenes Bild o z.B. Fische im Aquarium o Smileys o eine Lokomotive o ...

Objektorientiertes Programmieren in Java mit BlueJ

E. Fell: Einführung in Java Quellen: Barnes/Kölling: Objektorientierte Programmierung mit Java, H.P. Gumm, Praktische Informatik I

Ein Maler als Java-Programm

• Welche Aktionen waren notwendig: o Kreise erzeugen und Namen geben – z.B. kreis, kreis2, kreis3 o Quadrate erzeugen und Namen geben – z.B. quadrat o Dreiecke erzeugen und Namen geben – z.B. dreieck, dreieck2.

• Wie kann man das durch eine Java-Klasse erledigen ? o Wir benötigen eine Klasse um Bilder zu produzieren,

z.B. eine Klasse Maler

Bisher haben wir alle Manipulationen interaktiv erledigt. Kann man das auch programmgesteuert machen ?

Objektorientiertes Programmieren in Java mit BlueJ

E. Fell: Einführung in Java Quellen: Barnes/Kölling: Objektorientierte Programmierung mit Java, H.P. Gumm, Praktische Informatik I

Neue Klasse: Maler

• Öffnen Sie in BlueJ das Projekt shapes und erzeugen Sie eine neue Klasse mit Namen Maler

• Editieren Sie diese

Objektorientiertes Programmieren in Java mit BlueJ

E. Fell: Einführung in Java Quellen: Barnes/Kölling: Objektorientierte Programmierung mit Java, H.P. Gumm, Praktische Informatik I

Die Klasse Maler

• Ausnahmsweise löschen wir alles, bis auf

o die Zeile o Und die geschweiften Klammern

Die Klammern sind die „Wände“ unserer Malerfabrik. Dazwischen kommen die Instruktionen, wie ein Maler konstruiert wird.

{

}

class Maler

Objektorientiertes Programmieren in Java mit BlueJ

E. Fell: Einführung in Java Quellen: Barnes/Kölling: Objektorientierte Programmierung mit Java, H.P. Gumm, Praktische Informatik I

Was braucht ein Maler

• Jeder Maler – d.h. jedes Objekt der Klasse Maler – muss ...

o Kreise, Quadrate und Dreiecke erzeugen und jedem einen Namen geben o ... eine Methode z.B. zeichneHaus( )haben, die

die Objekte an die richtige Stelle verschiebt sie vergrößert/verkleinert sichtbar macht ihre Farbe wechselt

Objektorientiertes Programmieren in Java mit BlueJ

E. Fell: Einführung in Java Quellen: Barnes/Kölling: Objektorientierte Programmierung mit Java, H.P. Gumm, Praktische Informatik I

Konstruktion der Objekte

• Die Erzeugung von Objekten besteht aus zwei Schritten o Ein Name für das Objekt wird registriert o Ein neues Objekt wird erzeugt und unter diesem Namen gespeichert

Registriere den Namen sonne für ein noch zu schaffendes Objekt

der Klasse Circle. Konstruiere ein neues Objekt der Klasse Circle und nenne es sonne

Vorsicht: Java unterscheidet zwischen Groß- und Kleinschreibung. ... CIRCLE ≠ Circle ≠ circle, sonne ≠ Sonne ≠ SOnne

Circle sonne;

sonne = new Circle( );

Objektorientiertes Programmieren in Java mit BlueJ

E. Fell: Einführung in Java Quellen: Barnes/Kölling: Objektorientierte Programmierung mit Java, H.P. Gumm, Praktische Informatik I

Registrierung mit Erzeugung

• Jedes Objekt wird erzeugt und getauft. Wir können das auch in einem Schritt erledigen, z.B. ein neues Objekt der Klasse Circle erzeugen und diesem den Namen sonne geben:

= ;

Circle sonne = new Circle( );

Ein neues konstruiertes Objekt der Klasse Circle.

Registriere sonne alsName für ein Objekt der Klasse Circle

Unter dem soeben registrierten Namen sonne wird das neu konstruierte Objekt der Klasse Circle abgespeichert.

Objektorientiertes Programmieren in Java mit BlueJ

E. Fell: Einführung in Java Quellen: Barnes/Kölling: Objektorientierte Programmierung mit Java, H.P. Gumm, Praktische Informatik I

Die Klasse Maler mit allen Objekten Die Klasse lässt sich schon compilieren, und man kann bereits Objekte erzeugen...

Objektorientiertes Programmieren in Java mit BlueJ

E. Fell: Einführung in Java Quellen: Barnes/Kölling: Objektorientierte Programmierung mit Java, H.P. Gumm, Praktische Informatik I

Maler klecksel Im Kontextmenü der Klasse Maler finden wir die Methode new und erzeugen klecksel Dann inspizieren wir das Objekt klecksel

Objektorientiertes Programmieren in Java mit BlueJ

E. Fell: Einführung in Java Quellen: Barnes/Kölling: Objektorientierte Programmierung mit Java, H.P. Gumm, Praktische Informatik I

Inspektion von klecksel Der Inspektor findet bei klecksel die Felder

• sonne • wand • fenster • dach

Dies sind keine Zahlen, sondern Objekte der Klassen

• Circle • Square • Triangle.

Ein Doppelklick folgt dem Link zu dem betreffenden Objekt, einem Square:

Objektorientiertes Programmieren in Java mit BlueJ

E. Fell: Einführung in Java Quellen: Barnes/Kölling: Objektorientierte Programmierung mit Java, H.P. Gumm, Praktische Informatik I

Jetzt soll der Maler malen Wir müssen dem Maler eine Methode zur Verfügung stellen, ein Haus zu malen.

• Eine Java-Methode hat stets einen Kopf bestehend aus

o einen Ergebnistyp – hier void o einen Namen – z.B. maleHaus o eine Parameterliste - hier leer, also ()

• ... und einen Rumpf, in dem steht, was sie tun soll, z.B.

o sonne.makeVisible(); o sonne.changeColor(“yellow“); o sonne.moveHorizontal(100); o dach.changeSize(200); o dach.makeVisible(); o ... etc. ...

Objektorientiertes Programmieren in Java mit BlueJ

E. Fell: Einführung in Java Quellen: Barnes/Kölling: Objektorientierte Programmierung mit Java, H.P. Gumm, Praktische Informatik I

Java-Methoden – der Kopf

• Der Kopf einer Java-Methode:

• Köpfe anderer Methoden void maleAquarium( ) Eine mögliche Methode für Maler void makeVisible( ) Eine Methode von von Circle, Square, .. void changeColor(String farbe) Eine Methode mit String Parameter void moveHorizontal(int distance) Eine Methode mit int Parameter

void maleHaus( )

Typ des Berechnungs-ergebnisses. Wir wollen keinen Wert berechnen, daher void

Selbstgewählter Name. Konvention:Kleingeschrieben

Liste der Parameter Darf nicht fehlen, auch wenn kein Parameter benötigt.

Objektorientiertes Programmieren in Java mit BlueJ

E. Fell: Einführung in Java Quellen: Barnes/Kölling: Objektorientierte Programmierung mit Java, H.P. Gumm, Praktische Informatik I

Java Methoden – der Rumpf Der Rumpf einer Java-Methode heißt auch Block. Er besteht aus 1. einer öffnenden Klammer : { 2. einer Folge von Anweisungen, z.B.: o Variablendeklarationen o Zuweisungen o Schleifen o Aufrufen von void-Methoden, z.B.:

sonne.makeVisible(); dach.changeSize(100,150); sonne.moveHorizontal(100); ...

3. einer schließenden Klammer: }

Objektorientiertes Programmieren in Java mit BlueJ

E. Fell: Einführung in Java Quellen: Barnes/Kölling: Objektorientierte Programmierung mit Java, H.P. Gumm, Praktische Informatik I

Erste Malversuche von klecksel

Wir erzeugen ein Objekt der Klasse Maler und nennen es klecksel.

Im Kontextmenü von klecksel finden wir die Methode void maleHaus( ) Und siehe da ...

Objektorientiertes Programmieren in Java mit BlueJ

E. Fell: Einführung in Java Quellen: Barnes/Kölling: Objektorientierte Programmierung mit Java, H.P. Gumm, Praktische Informatik I

Na ja, für den Anfang geht’s doch, oder .... ?

Hausaufgabe

Erstellen Sie die Klasse Maler o Ein Maler soll drei Methoden können o maleHaus() o maleAquarium() o eine weiter Methode Ihrer Wahl

o Speichern Sie Ihr Projekt mit Quelltext in einem Verzeichnis

o Wählen Sie dazu aus dem Projektmenü „Export ...“

o Speichern Sie es als jar-Datei (komprimiertes Archiv) mit Quelltext (source code)

o Wählen Sie als Dateinamen Ihren Nachnamen mit angehängtem „Maler“

o Senden Sie die Datei an [email protected]