Kapitel 4 Einfache Methoden der Klasse MAMPFI

Ähnliche Dokumente
Kapitel 5 Zustand eines Objekts

Kapitel 10 Mampfi im Labyrinth

Kapitel 11 Objektkommunikation mit Antworten

Kapitel 7 Schnittstelle als Außenansicht eines Objekts Seite 1 / 9

Kapitel 17 Monster als neue Spielfiguren

Kapitel 12 Die Monster Lernziele: In diesem Kapitel wird die Vererbung als zentrales Element objektorientierter Programmierung vorgestellt.

Kapitel 9 Das Labyrinth

Kapitel 14 Das Labyrinth optimieren

Kapitel 3 Die erste Klasse selbst erstellen: MAMPFI

1 Grundlagen der Objektorientierung

Peter Brichzin. OOM und OOP. Didaktische Hinweise zum Informatikunterricht der Jahrgangsstufe 10

Peter Brichzin. OOM und OOP. Didaktische Hinweise zum Informatikunterricht der Jahrgangsstufe 10

Kapitel 6 Punkteliste Lernziele: Deklaration, Initialisierung, Felder, Wiederholung mit fester Anzahl

2. Vererbung und Kapselung

Kapitel 2 Objekte in der Entwicklungsumgebung BlueJ

Informatik 10 Objektorientiertes Modellieren und Programmieren mit Java

Rückgabewerte von Methoden

Kapitel 18 Jetzt kommt Bewegung ins Spiel

4. Modellieren und Diagrammarten

Umsetzung einer Klassenkarte in einer Programmiersprache

Grundelemente objektorientierter Sprachen (1)

9. Vererbung und Polymorphie. Informatik Vererbung und Polymorphie 1

C# - Einführung in die Programmiersprache Methoden. Leibniz Universität IT Services

Grundelemente objektorientierter Sprachen (1)

Kapitel 15 Eine Spielsteuerung als Spielleiter

7. Objektorientierung. Informatik II für Verkehrsingenieure

Das aktuelle Objekt der Klasse AMPEL gibt an die Objekte gruen, gelb und rot der Klasse LAMPE die Botschaft, die Methode aus() aufzurufen.

Grundelemente objektorientierter Sprachen (1)

Methoden und Wrapperklassen

Ein erstes "Hello world!" Programm

Kapitel 12 Dokumentation und Zugriffsrechte

Grundlagen der Objektorientierten Programmierung - Methoden -

Begriffe 1 (Wiederholung)

Beziehungen zwischen Objekten

Grundlagen. Übungen. Klassen, Attribute, Assoziationen, Methoden. Grundlagen_Klassen_Attribute_Assoziationen_Methoden.odt. Christine Janischek

Durch die Möglichkeit, Ein- und Ausgaben auf der Konsole durchzuführen, kann man auch systematisch das Verhalten von Klassen analysieren.

Leider gibt es in einigen Fällen keine wirklich einheitlichen Fachbegriffe im Deutschen, obwohl einige als "der Standard" bezeichnet werden.

Analyse der Klasse Konto

Methoden-Expertin. Aufgabe 1. Das Neue. Lösung in JavaKara. Puzzle: Expertin D

Themen der Übung. Methoden und Wrapperklassen. Vorteile von Methoden. Methoden. Grundlagen

Vererbung. Generalisierung und Spezialisierung Vererbung und Polymorphismus

M3 M4 M7 VORNAME: Gewinnt VERTIEFUNG:

1 Karol stellt sich vor

EINI LW. Einführung in die Informatik für Naturwissenschaftler und Ingenieure Vorlesung 2 SWS WS 15/16

8 Baum in perfekter Komposition

Objektorientiertes Programmieren (Java)

124 Kompetenzorientierte Aufgaben im Informatikunterricht

Beziehungen zwischen Objekten

Einstieg in die Informatik mit Java

Eine Klasse beschreibt Objekte mit gleichen Attributen und Methoden.

Luisenburg-Gymnasium Wunsiedel

Programmiertechnik Klassenvariablen & Instantiierung

Computeranwendung und Programmierung (CuP)

3. Bedingte Anweisungen

Kapitel 1: Die ersten Schritte 1

Java Übung. Übung 2. Werner Gaulke. 19. April Universität Duisburg-Essen Kommedia, Übung EinPro SS06, Einführung in Java - Übung.

Objekte. Theorieteil. Inhaltsverzeichnis. Begriffe. Programmieren mit Java Modul 5. 1 Modulübersicht 3

Erste Java-Programme (Java Wiederholung & Vererbung)

Einführung in die Programmierung 1

Übungsblatt 1. Java Vorkurs (WS 2017)

Übung zur Vorlesung Wissenschaftliches Rechnen Sommersemester 2012 Auffrischung zur Programmierung in C++, 2. Teil

Einstieg in die Informatik mit Java

Dr. Lars Hildebrand Fakultät für Informatik Technische Universität Dortmund

1 Aufgaben 1.1 Umgebungsvariable setzen: CLASSPATH

Unterprogramme. AnPr. Wiederholungen im Code werden vermieden. Programme werden leichter lesbar. Die Entwicklung und der Test werden vereinfacht.

Tag 5. Repetitorium Informatik (Java) Dozent: Marius Kamp Lehrstuhl für Informatik 2 (Programmiersysteme)

JAVA - Methoden - Rekursion

Java: Syntax-Grundlagen III

Javakurs für Anfänger

Erste Java-Programme (Arrays und Schleifen)

Organisatorisches. Folien (u.a.) gibt's auf der Lva-Homepage zum Download

Konstruktor. Grundlagen der Programmierung. Stephan Kleuker 90

Javakurs für Anfänger

Java Übung. Übung Mai Universität Duisburg-Essen Kommedia, Übung EinPro SS06, Einführung in Java - Übung. Werner Gaulke.

OCP Java SE 8. Lambda

C++ - Objektorientierte Programmierung Konstruktoren und Destruktoren

Kapitel 1: Die ersten Schritte Thema: Programmieren Seite: 1

Folge 1 - Arbeitsblatt 1

Funktionen nur wenn dann

1 Modellierung einer Uhr

OCP Java SE 8. Lambda

5 Das Projekt Apfelwein

C++ - Objektorientierte Programmierung Konstante und statische Elemente

Einstieg in die Informatik mit Java

Java Methoden. Informatik 1 für Nebenfachstudierende Grundmodul. Kai-Steffen Hielscher Folienversion: 1. Februar 2017

Praktische Informatik 1

Arrays. Theorieteil. Inhaltsverzeichnis. Begriffe. Programmieren mit Java Modul 3. 1 Modulübersicht 3

Felder. Inhaltsverzeichnis. M. Jakob. 28. April Begriffsbildung. Verwendung von Feldern. Gymnasium Pegnitz

C++ - Objektorientierte Programmierung Polymorphie

Klassen und Objekte. Klassen sind Vorlagen für Objekte. Objekte haben. Attribute. Konstruktoren. Methoden. Merkblatt

Ein einfaches Adventure-Game für die Stufe EF, entwickelt von U. Helmich, inspiriert durch viele bekannte Spiele.

Felder. M. Jakob. 28. April Gymnasium Pegnitz

1 Aufgaben 1.1 Objektorientiert: ("extended-hamster") Sammel-Hamster

Einstieg in die Informatik mit Java

Martin Unold INFORMATIK. Geoinformatik und Vermessung

Einstieg in die Informatik mit Java

3. Klassen Statische Komponenten einer Klasse. Klassenvariablen

Wintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf Seite 1 von 12

3. Die Programmiersprache Java

Transkript:

Kapitel 4 Einfache Methoden der Klasse MAMPFI Seite 1 / 9 Kapitel 4 Einfache Methoden der Klasse MAMPFI Lernziel: Eine Klasse in Java erstellen: Methoden 4.1 Vervollständigen des Klassendiagramms Nachdem du im letzten Kapitel in dem Bauplan für mampfi seine Eigenschaften (Attribute festgelegt hast, sollst du ihm jetzt Fähigkeiten beibringen. Dies bedeutet du musst in der Klasse MAMPFI Methoden ergänzen. Hinweis: Methoden der Klasse KREISFORM hast du ausführlich in Kapitel 2 kennen gelernt und genutzt. Sie haben dir geholfen, beispielsweise die Werte der Attribute zu ändern. Aufgabe 4.1 Welche Methoden sind für das Objekt mampfi wichtig? Welche Möglichkeiten gibt es über Methoden die Blickrichtung zu ändern? Überlege dir verschiedene Möglichkeiten! Wichtige Fähigkeiten für Mampfi sind seine Blickrichtung zu wechseln und auch seine Verwundbarkeit zu verändern. (Er muss ja später auf das Schlucken der Zauberpille reagieren.) Im Klassendiagramm in Abbildung 1 sind dazu entsprechende Methoden ergänzt. Hinweis: Wie schon in Kapitel 3 wird alles, was die Position betrifft zurückgestellt und erst später behandelt, wenn es ein Spielfeld gibt. Aufgabe 4.2 Welchen prinzipiellen Unterschied gibt es zwischen den vier Methoden die die Blickrichtung ändern und der Methode verwundbarsetzen? Vergleiche auch mit den Methoden der Klasse KREISFORM aus Kapitel 2! Die Methode NachNordenBlicken benötigt keine Zusatzinformationen um ausgeführt zu werden. Im Gegensatz dazu ist bei der Methode VerwundbarSetzen die Information auf was gesetzt werden soll erforderlich. Soll das Attribut verwundbar true oder false werden? Die Methode benötigt einen Eingabewert. Entsprechend dem Abbildung 1: Klassendiagramm der Klasse MAMPFI durch Methoden ergänzt. Datentyp vom Attribut verwundbar muss auch der Datentyp des Eingabewertes der Methode VerwundbarSetzen vom Typ boolean sein. 1 1 Mit Eingabewerten bei Methodenaufrufen hast du schon in Kapitel 2 gearbeitet. So benötigte dort beispielsweise die Methode RadiusSetzen der Klasse KREISFORM einen Eingabewert vom Datentyp int. Der Eingabewert enthält die Information, welchen Wert der Radius annehmen soll.

Kapitel 4 Einfache Methoden der Klasse MAMPFI Seite 2 / 9 Somit benötigt man zur Planung der Methoden (wie auch bei der Planung von Attributen) zwei Schritte: 1) Welche Methoden sind (für die Aufgabenstellung) wichtig? Welche dieser Methoden benötigt beim Aufruf Eingabewerte? Das Ergebnis dieses Planungsschrittes ist das Klassendiagramm (Abbildung 1). 2) Welchen Datentypen haben die Eingabewerte? Das Ergebnis dieses Planungsschrittes ist das erweiterte Klassendiagramm (Abbildung 2) Hinweise: - Beachte, dass dieses schrittweise Vorgehen bei der Planung erst ohne Datentypen, dann mit identisch zu dem Vorgehen bei Attributen ist. - Unterscheide die Begriffe Eingabewert und (Eingangs-)parameter. Für die allgemeine Formulierung einer Methode wird ein Platzhalter (Eingangs-)parameter genannt verwendet. Im Beispiel der Methode VerwundbarSetzen ist dies int positionx int positiony boolean verwundbar char blickrichtung KREISFORM symbol MAMPFI MAMPFI() NachNordenBlicken() NachOstenBlicken() NachSuedenBlicken() NachWestenBlicken() VerwundbarSetzen(boolean verwundbarneu) Abbildung 2: Erweitertes Klassendiagramm der Klasse MAMPFI Im Vergleich zur Abbildung 1 wurde bei den Eingangsparametern der Methoden die Datentypen ergänzt. verwundbarneu: VerwundbarSetzen(verwundbarNeu) Wird die Methode dann aufgerufen, wird der Parameter (Platzhalter) durch einen konkreten Wert ersetzt, z.b. VerwundbarSetzen(true) Aufgabe 4.3 Erkläre deinem Nachbar den Unterschied der Begriffe Eingabewert und Eingangsparameter am Beispiel der Methode StartWinkelSetzen der Klasse KREISFORM. Falls nötig kannst du das Klassendiagramm in Kapitel 2 Abbildung 5 finden. Nach den Überlegungen welche Methoden nötig sind und ob sie Eingabewerte benötigen wird im nächsten Kapitel besprochen, wie man sie in Java umsetzen kann. Dazu muss man jedoch festlegen, was das Objekt tun soll, wenn die Methode aufgerufen wird. Aufgabe 4.4 Was soll mampfi tun, wenn seine Methode NachOstenBlicken aufgerufen wird? Beschreibe zunächst in Worten, welche Aktionen auszuführen sind. Versuche dann diese Beschreibung in Form von Zuweisungen und Methodenaufrufen zu formulieren.

Kapitel 4 Einfache Methoden der Klasse MAMPFI Seite 3 / 9 4.2 Einfache Methoden in Java Wird die Methode NachOstenBlicken aufgerufen, dann muss mampfi einerseits den Wert seines Attributs blickrichtung auf 'O' setzen, andererseits muss er dafür sorgen, dass auch der Wert des Startwinkels seiner symbols angepasst wird, so dass auch die Darstellung nach rechts blickt. Der Quelltext in Java zur Umsetzung dieser Aufträge ist im rechten Teil der Abbildung 3 zu sehen: void Methodenname() { //Beschreibung der //Anweisungsfolge } void NachOstenBlicken() { blickrichtung = 'O'; symbol.startwinkelsetzen(30); } Abbildung 3: Aufbau einer Methode ohne Rück- und Eingabewerte in Java: Allgemein und am Beispiel der Methode NachOstenBlicken Den konkreten Anweisungen der Methode NachOstenBlicken ist in Abbildung 3 auch ihr allgemeiner Aufbau gegenübergestellt. Hinweise: Hier werden Methoden betrachtet, die keine Eingabewerte, d.h. keine zusätzlichen Informationen zum Ausführen benötigen. Weiterhin können Methoden auch Informationen ausgeben. So haben alle Handys eine Methode der Art LetzteGewählteRufnummerGeben, die dem Aufrufer die letzte gewählte Rufnummer zurück gibt. als Rückgabewert eben di könnte eine der allgemeine Aufbau einer Methode ohne Rückgabewert und ohne Eingabewerte Methoden mit Rückgabewerten wurden bisher noch nicht angesprochen, sie werden an späterer Stelle behandelt. In der folgenden Tabelle werden die einzelnen Bestandteile einer Methode erläutert: Bestandteil einer Methode ohne Ein- und Erläuterung Ausgabewert void Kennzeichnet, dass die Methode keinen Rückgabewert hat NachOstenBlicken Bezeichner der Methode () Ein Klammerpaar nach einem Bezeichner ist ein eindeutiges Kennzeichen für eine Methode. Hat eine Methode keine Eingabewerte, dann steht innerhalb des Klammerpaares nichts. {... } Die geschweiften Klammern legen den Beginn und das Ende der Anweisungsfolge fest. blickrichtung = 'O'; symbol.startwinkelsetzen(30); Eine Folge von Anweisungen, die festlegt, was in dieser Methode getan wird. In diesem Fall wird in der ersten Zeile dem Attribut blickrichtung der Wert 'O' zugewiesen. In der zweiten Zeile wird in Punktnotation die Methode StartWinkelSetzen des Objekts symbol mit dem Eingabewert 30 aufgerufen. Abbildung 4: Bestandteile einer Methode am Beispiel der Methode NachOstenBlicken

Kapitel 4 Einfache Methoden der Klasse MAMPFI Seite 4 / 9 Hinweise: - Man nennt die erste Zeile einer Methode Methodenkopf und die durch geschweifte Klammern eingerahmte Anweisungsfolge Methodenrumpf. - Der Konstruktor ist eine besondere Methode. Im Gegensatz zu den hier beschriebenen beginnt sein Methodenkopf nicht mit dem Wort void. - Die Methoden werden im Java Quelltext direkt nach dem Konstruktor geschrieben. Dies gilt sowohl für die Klassendiagramme als auch für den Quelltext. Aufgabe 4.5 Setze die Methoden NachOstenBlicken, NachSuedenBlicken, NachWestenBlicken und NachNordenBlicken in deinem BlueJ Projekt um. 4.3 Funktionieren die Methoden wirklich? - Testen ist wichtig Nach jeder Programmänderung muss man überprüfen, ob das Ziel erreicht wurde. Ein wichtiges Hilfsmittel dazu ist der Objektinspektor. Ein typisches Vorgehen findest du in der folgenden Tabelle: Schritt beim Testvorgang Compilieren der veränderten Klasse und Erzeugen eines Objekts Ergebnis am Beispiel der Methode NachOstenBlicken

Kapitel 4 Einfache Methoden der Klasse MAMPFI Seite 5 / 9 Schritt beim Testvorgang Aufruf des Objektinspektors Ergebnis am Beispiel der Methode NachOstenBlicken [Falls vorhanden, sollte die zugehörige Zeichenfläche auch betrachtet werden] ' ' Beachte: Der Objektinspektor in BlueJ ist äquivalent zum Objektdiagramm auf Modellierungsebene. Aus Platzgründen wird diese Variante ab Kapitel 5 gewählt mampfi: MAMPFI positionx = 0 positiony = 0 verwundbar = true blickrichtung ='N' symbol: KREISFORM radius = 50 startwinkel = 120 bogenwinkel = 300 bogenart = 2 farbe = "gelb"

Kapitel 4 Einfache Methoden der Klasse MAMPFI Seite 6 / 9 Schritt beim Testvorgang Aufruf der zu testenden Methode Ergebnis am Beispiel der Methode NachOstenBlicken ' ' Beobachtung im Objektinspektor, ob die gewünschten Attributwertänderungen durchgeführt wurden [Falls vorhanden, sollte die zugehörige Zeichenfläche auch betrachtet werden] 30

Kapitel 4 Einfache Methoden der Klasse MAMPFI Seite 7 / 9 Schritt beim Testvorgang Alternative Darstellung im Objektmodell Ergebnis am Beispiel der Methode NachOstenBlicken mampfi: MAMPFI positionx = 0 positiony = 0 verwundbar = true blickrichtung = 'O' symbol: KREISFORM radius = 50 startwinkel = 30 bogenwinkel = 300 bogenart = 2 farbe = "gelb" Aufgabe 4.6 Prüfe auch die Methoden NachSuedenBlicken, NachWestenBlicken und NachNordenBlicken auf diese Art und Weise. 4.4 Darstellung von Objektkommunikation durch Sequenzdiagramme In der Tabelle am Ende von Kapitel 4.3 sind zwei Objektdiagramme enthalten. Es wird dadurch deutlich, dass beim Methodenaufruf NachOstenBlicken zwei eigenständige Objekte beteiligt sind. Aufgabe 4.7 Wie erfährt, das Objekt der Klasse KREISFORM von der Arbeit die es zu erledigen hat? Betrachtet man den Ablauf bei einem Aufruf der Methode NachOstenBlicken Schritt für Schritt, dann ergeben sich folgende Bestandteile: - Du als externer Aufrufer rufst per Mausklick die Methode NachOstenBlicken des Objekts mampfi auf. - Mampfi selbst benötigt die Hilfe des Objekts symbol für eine korrekte Darstellung auf der Zeichenfläche. Da Mampfi in seinem Referenzattribut eine Referenz auf das Objekt symbol gespeichert hat, kann er ihm Nachrichten schicken. So ruft mampfi innerhalb der Methode NachOstenBlicken die Methode StartWinkelSetzen des Objekts symbol mit dem Eingabewert 30 auf. Im Prinzip findet hier im Vergleich zum letzten Kapitel nichts Neues statt. Die Objekte kommunizieren über Methodenaufrufe miteinander. Da die Objektkommunikation zentral für das Funktionieren von Programmen ist, gibt es eine eigene Modellierungstechnik diese zu veranschaulichen: Sequenzdiagramme (Abbildung 5). symbol: KREISFORM: Abbildung 5: Sequenzdiagramm für den Aufruf der Methode NachOstenBlicken

Kapitel 4 Einfache Methoden der Klasse MAMPFI Seite 8 / 9 Objekte sind als Rechtecke dargestellt, Methodenaufrufe durch waagrechte Pfeile. Erhält ein Objekt einen Methodenaufruf wird es aktiv. Dies ist erkennbar dadurch, dass die Lebenenslinie (senkrecht gestrichelte Linie) in einen Balken übergeht. Ist ein Objekt aktiv, kann es seinerseits Botschaften mit Methodenaufrufen versenden, sollte es Hilfe von anderen Objekten benötigen. Hinweis: Voraussetzung für eine funktionierende Objektkommunikation ist immer, dass das Sendeobjekt das Empfängerobjekt über eine Referenz kennt. Aufgabe 4.8 Führe die Objektkommunikation in Abbildung 5 wieder als Rollenspiel durch. Beachte, dass im Unterschied zu Aufgabe 3.7 nun pro Runde 3 Objekte beteiligt sind und dass die Methodenaufrufe im Sequenzdiagramm nicht in Punktnotation notiert sind (Den Adressaten des Methodenaufrufs sieht man im Sequenzdiagramm einfach durch den Bezug zu den Objekten) 4.5 Methoden mit Parametern in Java Bei der Erstellung des Klassendiagramms (Abbildungen 1 und 2) wurde festgelegt, dass die Methode verwundbarsetzen einen Eingabewert benötigt. Die Umsetzung dieser Methode in Java unterscheidet sich strukturell nicht im Vergleich zu Methoden ohne Eingabewerten (Kapitel 4.3) Einzig muss im Klammerpaar nach dem Methodennamen Datentyp und Bezeichner der Eingangsparameter angegeben werden (genauso wie es bereits im erweiterten Klassendiagramm notiert ist. Einen Überblick über den Java-Quelltext einer Methode mit Eingabeparametern im Allgemeinen und die Methode VerwundbarSetzen im Speziellen gibt Abbildung 6: void Methodenname(Parameterliste) { //Beschreibung der //Anweisungsfolge } Abbildung 6: Aufbau einer Methode mit Eingangsparametern in Java - Allgemein und am Beispiel der Methode VerwundbarSetzen Hinweis: Mehrere Eingangsparameter sind bei Methoden auch möglich (Parameterliste). Alle werden innerhalb des Klammerpaars, jeweils durch ein Komma getrennt, notiert, z. B. AdresseSetzen(String strasseneu, int PLZNeu, String ortneu) 4.6 Exkurs: Methoden arbeiten wie Maschinen Eine Methode kann man sich wie eine Maschine vorstellen, die irgendetwas arbeitet (in unserem Fall dem Attribut verwundbar den Wert verwundbarneu zuweisen). Benötigt die Maschine für ihre Arbeit Informationen von außen, so hat die Maschine für jede benötigte Informationseinheit einen Trichter für verwundbarneu Methodenname Eingangsparameter VerwundbarSetzen verwundbar = verwundbarneu; Anweisungsfolge Abbildung 7: Die Maschine verwundbarsetzen mit dem Eingangsparameter verwundbarneu

Kapitel 4 Einfache Methoden der Klasse MAMPFI Seite 9 / 9 eine Eingabe. Jeder Trichter hat einen Namen. Er symbolisiert einen Eingangsparameter (in unserem Fall verwundbarneu). Wird die Methode nun aufgerufen, muss man einen konkreten Eingabewert eingeben. Bildlich gesprochen wird der Eingabewert in den Trichter geworfen. Dieser Wert ersetzt nun im Methodenrumpf an allen Stellen den zugehörigen Eingangsparameter. Die Methode kann ihre Arbeit ausführen (Abbildung 8). false false verwundbarneu VerwundbarSetzen verwundbar = verwundbarneu; false VerwundbarSetzen verwundbar = false ; mampfi: MAMPFI positionx = 0 positiony = 0 verwundbar = "true" blickrichtung ='N' mampfi: MAMPFI positionx = 0 positiony = 0 verwundbar = "false" blickrichtung ='N' Abbildung 8: links: Der Wert false wird in die Methode VerwundbarSetzen eingegeben; rechts: Die Zuweisung innerhalb der Methode VerwundbarSetzen wurde ausgeführt. Das Attribut verwundbar hat jetzt den Wert false. Aufgabe 4.9 Realisiere die Methode VerwundbarSetzen in deinem Projekt und teste sie. Aufgabe 4.10 Realisiere die Methoden VerwundbarMachen und UnverwundbarMachen. Die beiden Methoden sollen zusammen eine Alternative zur Methode VerwundbarSetzen sein und ohne Eingangsparameter arbeiten. 4.7 Zusammenfassung Aufgabe 4.11 Wiederum wurden in diesem Kapitel viele neue Fachbegriffe vorgestellt. Da im weiteren Unterrichtsverlauf immer wieder darauf zurückgegriffen wird, ist ein sicherer Umgang damit wichtig. Erstelle eine Zusammenfassung in dein Heft, bei der folgende Punkte enthalten sein sollten: Methode, Methodenkopf, Methodenrumpf, Eingabewert, Eingangsparameter, Sequenzdiagramm