ELP Klassen- und Objektmodellierung Übertragung nach Java

Werbung
Unterrichtspraktische Prüfung gem. §7 der Verordnung über
die 2. Staatsprüfung für die Lehrämter (2. LehrerPO)
Studienreferendar:
Falko Ripsas
2. SPS Friedrichshain/Kreuzberg (S) Berlin
Robert-Koch-Schule (Gymnasium)
Dieffenbachstraße 60
10967 Berlin
Entwurf einer Unterrichtsstunde im Fach Informatik
(11. Klasse - Basiskurs)
Thema
Der Zusammenhang zwischen der objektorientierten Modellierung (OOM)
und der objektorientierten Programmierung (OOP) in Java.
Prüfungskommission:
Vorsitz:
Herr Befort
Herder-OG
Berlin (Charlottenburg)
Hauptseminarleitung:
Herr Wahner
2. SPS Friedrichshain/Kreuzberg (S)
Berlin
Fachseminarleitung
Informatik:
Herr Witten
Walther-Rathenau-OG
Berlin (Wilmersdorf)
Fachseminarleitung
Biologie:
Herr Freese
Goethe-OG
Berlin (Steglitz)
Schulleitung:
Herr Völkel
Robert-Koch-Schule
Berlin (Kreuzberg)
Lehrervertretung:
Frau Ogorek
Robert-Koch-Schule
Berlin (Kreuzberg)
Berlin, den 24.03.2006
24.03.2006
Falko Ripsas
Robert-Koch-OG
Klasse: 11. Kl. Basiskurs
8:50 - 9:35 Uhr
_________________________________________________________________________________
Entwurf einer Unterrichtsstunde im Fach Informatik
Thema
Der Zusammenhang zwischen der objektorientierten Modellierung (OOM) und der
objektorientierten Programmierung (OOP) in Java.
1. Lernziele
Grobziel:
Die Schüler können auf Grundlage einer objektorientierten Analyse (OOA) und Modellbildung
(OOM) ein objektorientiertes Java-Programm analysieren und die Strukturen zur Implementierung
von Klassen, Objekten, Attributen und Operationen bei der objektorientierten Programmierung
(OOP) mit Java identifizieren, beschreiben und erklären.
Feinziele:
Die Schüler....
FLZ 1: ... können unter Verwendung die Fachbegriffe Klasse und Objekt sowie der mit ihnen
verbundenen Konzepte ein alltagsweltliches Themengebiet einer objektorientierten
Analyse (OOA) unterziehen,
indem sie einen Filmausschnitt aus einem Fußballspiel analysieren, Objekte identifizieren
und Klassen ableiten.
FLZ 2: ... können unter Verwendung der Fachbegriffe Klassenname, Attribut und Operation sowie
der mit ihnen verbundenen Konzepte auf Grundlage einer objektorientierten Analyse
(OOA) objektorientierte Modelle (OOM) von Klassen erstellen,
indem sie auf ihrem Arbeitsbogen Klassenmodelle durch Angabe von Klassennamen,
Attributen und Methoden spezifizieren.
FLZ 3: ... können ihre Ergebnisse der OOA und OOM präsentieren,
indem exemplarische Klassendefinitionen vor der Lerngruppe präsentiert werden, die
Lerngruppe der Präsentation folgt und die Vortragenden ggf. auf Fragen antworten oder
ein inhaltliches bzw. formales Feedback erhalten.
FLZ 4: ... können Quelltexte einer ihnen bekannten Programmiersprache analysieren und
aufgrund ihre Kenntnisse der OOA und OOM Elemente und Strukturen der
objektorientierten Programmierung (OOP) identifizieren und erklären,
indem sie aus dem Quelltext einer Java-Klasse ein objektorientiertes Klassenmodell
ableiten sowie mit Hilfe eines Programmquelltextes und der dazugehörigen Ausgabe die
Funktion der einzelnen Programmelemente identifizieren, analysieren und erklären.
(HA / optional)
FLZ 5: ... können mit Hilfe des Quelltext einer Klassendefinition ein Modell der repräsentierten
Klasse ableiten und die implementierte Klasse zur Erstellung eines eigenen
objektorientierten Programms benutzen,
indem sie den Quelltext einer Java-Klasse analysieren, ein Modell der implementierten
Klasse erstellen und ein kurzes Programm unter Zugriff auf die vorgegebene Klasse
implementieren.
2. Kompetenzbereiche
Erkenntnisgewinnung:
• Analyse und Modellbildung.
Kommunikation:
• Kommunikation in unterschiedlichen Sozialformen.
• Präsentation von Ergebnissen.
Fachwissen:
• OOA, OOM, OOP.
3. Verlaufsplanung
Phase/Zeit
Phasen des Lernprozesses
Sozialform
Einführung
1-2 Min.
(bis 8:52 Uhr)
Das Thema und der geplante Ablauf der Stunde
werden bekannt gegeben.
LV
Den Schülern wird ein Videoclip vorgespielt und
der Zusammenhang zwischen dem Video und
dem Stundenthema hergestellt.
Erarbeitung (1)
6-7 Min.
(bis 9:58 Uhr)
FLZ 1
FLZ 2
Sicherung (1)
7 Min.
(bis 9:05 Uhr)
Material
Orientierung im
Lernprozess.
Tafel
Einbettung des Materials
in den Schwerpunkt der
Unterrichtsstunde.
Die Schüler erhalten den Auftrag, im Videoclip
Objekte und Klassen zu identifizieren sowie
zwei Klassen mit Attributen und Methoden
genauer zu definieren. Der AB wird verteilt.
LV
Die Schüler haben die Gelegenheit, den
Videoclip als Endlosschleife zu betrachten.
PA
Die Schüler identifizieren Objekte und leiten
Klassen ab. Sie benennen für zwei Klassen den
Klassennamen, Attribute und Operationen auf
ihrem AB.
Die Schüler nennen Objekte und abgeleitete
Klassen.
Zwei Klassenmodelle werden von den Schülern
an der Tafel präsentiert.
Angestrebter
Lernzuwachs
Beamer
Videoclip
(Ausschnitt eines
Fußballspiels)
Übung der Analyse durch
Beobachtung von Details.
AB
„Objektorientierte
Analyse (OOA) und
Modellierung
(OOM)“
Übung der OOA / OOM.
Pr
gelUg
Übung der Ergebnispräsentation.
Beobachtung und ggf.
Korrektur.
FLZ 3
Erarbeitung (2)
18 Min.
(bis 9:23 Uhr)
(FLZ 4)
Sicherung (2)
12 Min.
(bis 9:35 Uhr)
FLZ 4
Die Schüler erhalten einen AB, der neben den
Quelltexten einer Java-Klasse, eines JavaProgramms und der Programmausgabe, eine
die Analyse anleitende Aufgabenstellung
enthält.
LV
PA
Analyse und
Modellbildung.
Die Schüler analysieren die Implementation
einer Java-Klasse. Sie weisen ggf.
Unterschiede zwischen ihrem eigenen und dem
in Java implementierten Klassenmodell hin.
Die relevanten syntaktischen Elemente werden
von den Schülern mit Hilfe des Quelltextes
eines Beispielprogramms und der
dazugehörigen Ausgabe identifiziert und erklärt.
AB
„Objektorientierte
Modellierung
(OOM) und
Programmierung
(OOP)“
Analyse von Quelltexten
und Programmausgaben.
Ableitung von Strukturen
objektorientierter
Programmierung.
Quelltext und Klassendefinition werden
verglichen. An der Tafel wird festgehalten,
welche Elemente des Quelltexts den Elementen
des Klassenmodells entsprechen.
Ggf. werden Unterschiede zwischen dem
Quelltext und der ursprünglichen
Klassendefinition identifiziert.
gelUg
Die Schüler überführen eine bislang unbekannte
Java-Klasse in ein objektorientiertes Modell.
Sie Verwenden die Klasse bei der
Implemetierung eines Übungsprogramms.
LV
EA
Übung von
Präsentationstechniken.
Analyse und
Modellbildung.
(HA / optional)
Anwendung /
Vertiefung
FLZ 5
Analyse und
Modellbildung.
Objektorientierte
Programmierung.
Abkürzungen:
AB: Arbeitsbogen; EA: Einzelarbeit; gelUg: gelenktes Unterrichtsgespräch; HA Hausaufgabe; LV: Lehrervortrag;
OHF: Overhead-Folie; PA: Partnerarbeit; Pr: Präsentation.
AB
„Übung:
OOM und OOP“
4. Geplantes Tafelbild
OO-Analyse OO-Modellierung OO-Programmierung
_________________________________________________________________________________
OO-Analyse
OO-Modellierung
Objekte
Klassen
[...]
[...]
[...]
[...]
[...]
[...]
[...]
[...]
[...]
Modelle
Spieler
Ball
name
trikotfarbe
rückennummer
muster
luftdruck
material
laeuft()
dribbelt()
schiesst()
rollt()
fliegt()
OO-Analyse OO-Modellierung OO-Programmierung
_________________________________________________________________________________
OO-Modellierung
Objekte
OO-Programmierung
Modell
Spieler
Quelltext
Klassenname
class Spieler
[...]
Klassenname
Spieler spieler1 =
new Spieler("Ballack",13);
Spieler spieler2 =
new Spieler("Lehmann",9);
...
spieler1.jubelt();
name
nummer
anzahlTore
schiesstDenBall()
jubelt()
fordertDenBallVon()
spieltDenBallZu()
Attribute
Variablen
Operationen
Methoden
String name;
int nummer;
int anzahlTore;
[...]
schiesstDenBall(){...}
jubelt(){...}
fordertDenBallVon(){...}
spieltDenBallZu(){...}
5. Sachanalyse
Das objektorientierte Paradigma geht von einer Welt aus, die aus Objekten besteht. Nach diesem
Paradigma besitzen die Objekte Zustände bestimmter Eigenschaften, führen Operationen (bzw.
Methoden) aus und können Nachrichten (messages) verschicken und empfangen. Objekte erledigen
Aufgaben in eigener Verantwortung. Eigenschaften und Operationen können auch an Objekte vererbt
werden und von diesen ggf. überschrieben werden.
Die objektorientierte Analyse (OOA) ist die erste Phase der objektorientierten Erstellung eines
Softwaresystems. In der Analyse werden die Anforderungen erfasst und beschrieben, die ein ggf. zu
entwickelndes Softwaresystem erfüllen soll. In dieser Phase werden alle relevanten Fakten,
Eigenschaften, Abhängigkeiten und ihre Zusammenhänge gesucht, dargestellt und überprüft.
Die objektorientierte Modellbildung (OOM) ist eine formale fachliche Beschreibung mit
objektorientierten Konzepten (auch: objektorientiertes Design (OOD)). Flexible Möglichkeiten der
Darstellung bietet u.a. die Unified Modeling Language (UML). Ein Bezug zur konkreten
Implementierung auf einem bestimmten System oder mit einer bestimmten Programmiersprache ist in
dieser Phase nicht intendiert. Die Unified Modeling Language (UML) ist eine von der Object
Management Group (OMG) entwickelte und standardisierte Sprache für die Modellierung von
Software und anderen Systemen. Die UML definiert grafische Notationen für diese Begriffe und für
Modelle von statischen Strukturen und dynamischen Abläufen. In der UML ist eine Klasse (engl. class)
ein Modellelement, das eine Menge von Ausprägungen mit gleichen Merkmalen und gleicher
Semantik beschreibt. Klassen werden in Klassendiagrammen dargestellt. Eine Klasse teilt sich in
Bereiche für den Klassennamen, Attribute und Methoden (siehe Abbildungen). Ein Attribut kann in der
UML eine Multiplizität haben, die durch eine untere und eine obere Grenze spezifiziert wird. Der
Standardwert für die Multiplizität ist 1 für die untere wie für die obere Grenze. Bei der Spezifikation
eines Attributs kann man von diesen Standardwerten abweichen. Die Spezifikation einer Operation
(Methode) in UML besteht aus dem Namen der Operation sowie ggf. aus einer Liste von Parametern,
Details zur Sichtbarkeit und zum Typ der Operation. Objektorientierte Modelle umfassen nicht nur
Klassen sondern auch die Organisation zusammengehöriger Klassen in Paketen und Beziehungen
und Abhängigkeiten zwischen den Klassen.
Abb. 1: einfache Darstellung
Abb. 2: komplexe Darstellung
Vorteile der objektorientierten Programmierung liegen in der besseren Modularisierung des Codes,
dadurch bedingt in einer höheren Wartbarkeit und Wiederverwendbarkeit der Einzelmodule. Eine
Klasse ist in der OOP eine Beschreibung der gemeinsamen Struktur und des gemeinsamen
Verhaltens von Objekten. Das Zusammenspiel mehrerer Klassen ermöglicht die Modellierung eines
abgegrenzten Systems. Die Struktur einer Klasse bilden die Attribute (Eigenschaften) und das
Verhalten einer Klasse die Methoden (Operation, Funktion, Prozedur). Klassen können von anderen
Klassen abgeleitet werden (Vererbung). Dabei erbt die Klasse die Attribute und Methoden der
vererbenden Klasse (Basisklasse). Die abgeleitete Klasse (Subklasse) kann Methoden der
Basisklasse überschreiben. Überschriebene Methoden werden auf der abgeleiteten Klasse ausgeführt
(Polymorphie). Ein Objekt ist eine Instanz einer Klasse. Die Klasse beschreibt die Struktur aller
Objekte, die dieser Klasse angehören. Ein Attribut (v. lat: attribuere = zuteilen, zuordnen) wird in der
OOP als Zuordnung eines Merkmals zu einem konkreten Objekt verstanden. Ein Attribut definiert und
beschreibt einen Aspekt eines konkreten Objekts. Zu einem Attribut gehört weiter ein ihm
zugeordneter Wert. Beispiel: Attribut "Farbe", Attributwertebereich "Rot, Blau, Grün, Gelb". Als
Methoden bezeichnet man die für eine Klasse definierten Algorithmen/Operationen. Es gibt spezielle
Methoden zur Erzeugung bzw. Zerstörung von Objekten (Konstruktoren bzw. Destruktoren).
Bei der objektorientierten Programmierung mit Java ist eine Klasse eine Sammlung von Variablen
und Methoden, die das Modell einer Klasse implementieren. Die Definition einer Klasse wird in Java
mit dem Schlüsselwort class und dem Namen der Klasse eingeleitet. Darauf folgen, eingefasst in
geschweifte Klammern, die Methoden und Datenelemente, die zu der Klasse gehören. Die
Reihenfolge von Varialen- und Methodenvereinbarungen ist beliebig. Üblicherweise werden aber
zuerst die Variablen, dann der Konstruktor und abschließend die Methoden definiert. In einer
Quelltextdatei (*.java) befindet sich mindestens eine Klassendefinition. Im folgenden Beispiel wird die
Klasse Point definiert. Sie enthält drei Variablen, die die Koordinaten und die Farbe eines Punktes
speichern, einen parametrisierten Konstruktor zur Erzeugung von Punkt-Objekten sowie eine Methode
zur Verschiebung des Punktes:
public class Point {
public int x, y;
public String color;
public Point (int myX, int myY){
this.x=myX;
this.y=myY;
color=”schwarz”;
}
public void moveTo(int newX, int newY) {
x = newX;
y = newY;
}
}
Nach der Erzeugung eines Objekts kann über den Namen des Objektverweises auf die Datenfelder
und Methoden des Objektes zugegriffen werden. Man spricht von objektorientierter Programmierung,
da das Objekt in diesem Paradigma das zentrale Struktur darstellt, auf der Operationen durchgeführt
werden.
Point myPoint = new Point(1,2);
//Erzeugung eines Objektes mit
//einem Verweis mit Namen myPoint.
myPoint.color = „grün“;
//Dem Datenfeld color wird der Wert
//“grün“ zugewiesen.
myPoint.moveTo(5,7);
//Das Objekt erhält die Koordinaten (5,7).
Für die Rechtschreibung in Quelltexten und Modellen gelten in den meisten Programmiersprachen
von der deutschen Rechtschreibung abweichende Regeln bezüglich der Umlaute, der Getrennt- und
Zusammenschreibung sowie der Groß- und Kleinschreibung. Da große Teile der Computertechnologie
im englischsprachigen Raum entwickelt werden, waren früher in vielen Bereichen Umlaute und das ß
nicht vorgesehen. Die Umlaute und das ß werden von den Compilern der Programmiersprachen i. d.
R. nicht unterstützt und werden deshalb sowohl in den Quelltexten als auch in den dazugehörigen
Modellen durch die Schreibweisen ae, oe, ue und ss ersetzt. Per Konvention werden in Java und den
meisten anderen objektorientierten Programmiersprachen zur schnellen Unterscheidung Variablen
und Methoden klein geschrieben. Klassennamen werden dagegen generell groß geschrieben. Da
Variablen, Methoden und Klassenbezeichnungen keine Leerzeichen enthalten dürfen, die Namen
aber Informationen über ihre Semantik tragen sollten, hat sich die Schreibweise der leading capitals
weitgehend durchgesetzt. Hierbei werden kurze Sätze oder Satzfragmente als ein Wort hintereinander
geschrieben, wobei jedes Wort mit einem Großbuchstaben beginnt. Ein Beispiel für den Gebrauch der
Konventionen für Umlaute, Zusammenschreibung und Kleinschreibung wäre z.B. der folgende
Variablenname zur Speicherung einer Farbinformation: farbeDerMaeuse.
Quellen:
[Balzert] [Wikipedia] [DUDEN Informatik] [Flanagan] [Middendorf]
6. Bedingungen
6.1. Allgemeine Voraussetzungen
Unterricht und Organisation
Seit Beginn des Schuljahres 2005/2006 halte ich im Basiskurs Informatik (1. Jahrgang, 11. Klasse)
selbständigen Unterricht. Der Informatikunterricht findet dienstags dreistündig (8.-10. Stunde) statt.
Durch die Bündelung der drei Unterrichtsstunden auf einen Termin ist eine flexible Zeiteinteilung
während des Unterrichts möglich. Die Schüler sind gewohnt, dass Pausen in Abhängigkeit von
Themenstellung und Arbeitsfortschritt flexibel eingeteilt werden. Allerdings stellt die
Stundenbündelung an einem einzigen Schultag zwischen der 8. und 10. Stunde erhöhte
Anforderungen an die Planung, da die Konzentrationsfähigkeit der Schüler besonders in den letzten
Stunden geeignet unterstützt werden sollte.
Fachräume und Materialausstattung
Der Informatik-Bereich besteht aus zwei Unterrichtsräumen, einem Seminarraum und einem
Schülerrechnerraum. Beide Räume sind lang und schmal geschnitten. Der Raumschnitt wirkt sich im
Seminarraum nachteilig aus: Dieser Raum enthält zwei Tischreihen mit 16 Sitzplätzen, ein Whiteboard
und einen PC mit Beamer. Bei der Arbeit am Whiteboard sollte der Lehrende möglichst oft die Position
verändern, da er immer einem Teil der Schüler die Sicht versperrt. Die Benutzung eines OHProjektors ist im Seminarraum nicht vorgesehen.
6.2. Spezielle Voraussetzungen
Die Lerngruppe
Die Lerngruppe besteht aus 11 Schülern (5 ♂, 6 ♀). Die Schüler stammen aus drei verschiedenen
Klassen. Einige Schüler sind mir bereits aus der 10. Klasse (Biologieunterricht) bekannt, ein Schüler
wiederholt die 11. Klasse. Nur ein Schüler ist deutscher Herkunftssprache. Einige der SchndH zeigen
Schwierigkeiten bei der genauen Interpretation der Aufgabenspezifikation und bei der präzisen
Formulierung ihrer Lösungswege. Insgesamt arbeitet die gesamte Lerngruppe sehr engagiert und
motiviert mit. Da die Schüler freiwillig am Informatikunterricht teilnehmen und die Gruppengröße eine
intensive Betreuung der einzelnen Schüler zulässt, arbeitet die Gruppe i. d. R. auch in der 10. Stunde
noch intensiv an den gegebenen Aufgabenstellungen.
Methodische Voraussetzungen
Bedingt durch die sprachlichen Voraussetzungen insbesondere der SchndH ist für die Phase der
Problemstellung bzw. die Ergebnispräsentation ein höherer Zeitaufwand zu planen. Da das exakte
Verständnis der Spezifikation die Voraussetzung zur Lösung informatischer Problemstellung ist, wird
auf die Klärung der Inhalte und die Vermeidung von Missverständnissen viel Wert gelegt. Einzelne
Phasen des Unterrichts werden bei Bedarf kleinschrittiger durchlaufen. Es muss flexibel auf
unvorhersehbare Missverständnisse reagiert werden. Die Schüler sind es im Informatikunterricht
gewohnt, sowohl am Rechner als auch bei abstrakten Aufgabenstellungen in wechselnder
Partnerarbeit oder in Kleingruppen (3-4 Schüler) zu arbeiten und sich dabei gegenseitig zu
unterstützen. Bei sprachlichen Verständnisfragen steht der Lehrer zur Verfügung.
Inhaltliche Voraussetzungen
In den vorangegangenen Unterrichtsstunden wurden die Schüler in die Grundkonzepte der
objektorientierten Analyse (OOA) und der objektorientierten Modellierung (OOM) eingeführt. Sie
lernten die Begriffe Klasse, Objekt, Attribut und Operation kennen, können Objekte identifizieren,
Klassen aus Objekten ableiten sowie Attribute und Operationen dieser Klassen spezifizieren. Auch
Beziehungen zwischen Klassen können beschrieben werden. Für die Notation von Klassenmodellen
wurde eine an UML angelehnte Notation eingeführt, in dem der Klassenname, Attribute und
Operationen angegeben werden. Weiterführende Elemente der objektorientierten Modellierung wie
Assoziationen, Multiplizitäten und Vererbung werden erst in den folgenden Unterrichtsstunden bei
Bedarf eingeführt werden.
7. Didaktische Erwägungen
Rahmenplanbezug
Gemäß dem Rahmenplan für das Fach Informatik (Gymnasiale Oberstufe) sollen die Schüler “[...]
lernen [...], eine Problemsituation zu analysieren, zu modellieren und ein den Anforderungen
entsprechendes Modell [...] zu implementieren“ [SenBJS, S. 4].
Im ersten Jahr Informatikunterricht (L2: Grundlagen der Programmentwicklung) soll die Analyse und
Modellierung dabei dem Objektorientierten Ansatz folgen. Ergebnisse solcher Lernabschnitte können
verbale Beschreibungen, Diagramme, Laufzeitbilder oder Testprotokolle sein [SenBJS, S. 10].
Als Fachinhalte sieht der Rahmenplan für den Lernbereich L2 u. a. folgende Inhalte vor:
„- Schrittweise Analyse und Implementierung auf Grundlage einer vorgegebenen Aufgabenstellung.
- Grundlagen von OOA, OOD und OOP (Klasse, Attribut, Methode, Instanz).
- Einfache dokumentationsunterstützende Techniken (Klassendiagramm, [...]).“ [SenBJS, S. 11].
Einbettung der Stunde in die Unterrichtsreihe
[Einstieg in die Informatik (Mini-Language)]
[Grundlagen informatischen Arbeitens]
[Algorithmik im Kleinen]
[OOA, OOM, OOP]
- Einführung in die OOA und OOM: Klassen, Objekte und ihre Beziehungen:
Ein Objektspiel
- Elemente objektorientierter Modellierung: Klassenname, Attribute und Operationen.
- Der Zusammenhang zwischen der objektorientierten Modellierung (OOM) und
der objektorientierten Programmierung (OOP) in Java.
- Grundlagen der OOP in Java: Objekte, Attribute und Objektmethoden.
- OOP: Interaktion von Objekten.
- OOD: Vererbung.
- Übungen zur OOP.
[Datenbanken]
Inhaltliche Entscheidungen
Die geplante Unterrichtsstunde dient der Übertragung der Konzepte Klasse, Objekt, Klassenname,
Attribut und Operation auf die entsprechenden Elemente der Programmiersprache Java. Die Wahl
eines anschaulichen Beispiels soll den Schritt der Übertragung der OOM auf die OOP in Java
erleichtern. Bei der objektorientierten Modellierung habe ich mich für eine an UML angelehnte
Notation der Klassen entschieden. In UML können Attribute und Methoden einer Klasse optional mit
Spezifikation ihrer Sichtbarkeit, Datentypen, Parametern und Rückgabewerten dargestellt werden.
Einfachere Darstellungen sind in Abhängigkeit vom Leistungsstand der Schüler möglich. Auf die
Darstellung von Assoziationen, Multiplizitäten, der Sichtbarkeit, usw. wird noch verzichtet.
Als anschauliches Beispiel wird für diese und die folgenden Unterrichtsstunden ein Filmausschnitt aus
einem Fußballspiel gewählt (...schließlich ist 2006 das Jahr der Fußball-WM in Deutschland! ☺).
Die objektorientierte Modellierung eines Fußballspiels ist auch für fortgeschrittene Konzepte der
objektorientierten Modellierung und Programmierung wie Vererbung und Polymorphie tragfähig.
dieses Beispiel kann in den folgenden Stunden zurückgegriffen werden, um den Schülern den das
Verständnis und den Umgang mit den Konzepten und Strukturen der OOM und OOP zu erleichtern.
Aus der dargestellten Fußballszene lässt sich eine Vielzahl von Klassen ableiten. Zu den
anschaulichen Klassen gehören gegenständliche Klassen wie Spieler,
Torwart,
Schiedsrichter, Ball, Tor, Bandenwerbung, Fan. Die Modellierung von Klassen einer
höheren Abstraktionsebene wie Mannschaft, Spielfeld, Spiel oder Person. durch die
Schüler ist aufgrund des gegenwärtigen Wissensstandes der Lerngruppe eher unwahrscheinlich.
Als Beispiel zur Übertragung des Klassenkonzepts in Java habe ich die gegenständlichen Klassen
Spieler gewählt, da diese Klasse mit hoher Wahrscheinlichkeit auch von einigen Schülern
gefunden und beschrieben werden sollte. Die Objekte dieser Klasse sind anhandeindeutiger
Merkmale (Attribute) zu unterscheiden und zeigen ein deutliches Verhalten (Operationen).Außerdem
interagieren sie sowohl untereinander, als auch mit anderen Objekten (Ball, Schiedsrichter, etc.)
Ansonsten sollte die Struktur der Klasse Spieler für die Schüler leicht nachvollziehbar und auf ein
Modell übertragbar sein, da sie neben der Definition einiger Attribute auch die Definition sinnvoller
Operationen erlaubt. Auf die Existenz nicht-gegenständlicher Klassen (z. B. Mannschaft oder
Spiel)kann bei Bedarf im Unterrichtsgespräch hingewiesen werden.
Methodische Entscheidungen / Operationsobjekte
Die Voraussetzung für die Übertragung von Klassenmodellen nach Java ist ein gutes Verständnis der
Grundbegriffe der objektorientierten Analyse (OOA) und Modellierung (OOM). Damit die Schüler den
Schritt der Übertragung eines Klassenmodells in die Programmiersprache Java nicht nur mechanisch
nachvollziehen, ist die durchgängige Arbeit an einem kurzen, übersichtlichen und semantisch leicht
verständlichen Beispiel empfehlenswert.
Die Bekanntgabe des geplanten Stundenablaufs dient der Orientierung der Schüler im Lernprozess
der Unterrichtsreihe und kann ihnen die Zeiteinteilung während der Unterrichtsstunde erleichtern. Die
Einführung in die Schwerpunktsetzung der Stunde erfolgt durch die Präsentation des zu
analysierenden Videoclips. Indem die Schüler das Beispiel auf das Stundenthema beziehen, üben sie
den ersten Schritt jeder Analyse: die Festlegung des inhaltlichen Schwerpunkts.
Den ersten Schritt bei der Erarbeitung der Übertragung von objektorientierten Modellen in die OOP mit
Java stellt in der Erarbeitung (1) die vorbereitende objektorientierte Analyse (OOA) und
objektorientierte Modellbildung (OOM) dar. Die besondere Bedeutung dieses Schritts liegt in der
Erarbeitung eines vertiefenden semantischen Verständnisses des zu übertragenden Modells. Die
spätere Identifikation syntaktischer Strukturen der OOP wird so erleichtert. Dieses inhaltliche
Verständnis wird durch die Wahl eines anschaulichen Beispiels (Fußball-Szene) zusätzlich erleichtert.
Der Aufbau des Arbeitsbogens „Objektorientierte Analyse (OOA) und Modellierung (OOM)“ spiegelt
die Schritte des Prozesses von der objektorientierten Analyse bis zur Modellbildung wider, wie sie den
Schülern in den vorangegangenen Unterrichtsstunden vermittelt wurden.
Den Schwerpunkt der Sicherung (1) bildet die Präsentation zweier exemplarischer Beispiele an der
Tafel. Die präsentierenden Schüler können bereits während der Erarbeitung festgelegt werden. Dieses
Vorgehen ermöglicht dem Lehrer die gezielte Wahl geeigneter Beispiele für die folgenden
Unterrichtsphasen. Der Schüler, der mit der Notation seines Ergebnisses zuerst fertig ist, kann mit der
Präsentation beginnen, während der zweite Schüler sein Ergebnis vervollständigt. Die Präsentation
dient neben der Sicherung auch der Übung von kurzen Ergebnispräsentationen vor dem Plenum.
Neben inhaltlichem kann auch formales Feedback gegeben werden. Die Ebenen OOA und OOM
werden an der Tafel auch farblich voneinander unterschieden.
In der Erarbeitung (2) werden als Hauptlernaktion der Stunde die Zusammenhänge zwischen der
objektorientierten Modellierung (OOM) und der objektorientierten Programmierung (OOP) durch die
Analyse eines Java-Quelltextes hergestellt. Indem die Schüler eine semantisch bekannte Struktur (die
Klasse Spieler) aus der OOA und OOM im Quelltext als ein Beispiel für OOP wieder entdecken,
können sie den Prozess und die Struktur der Übertragung von Klassenmodellen nach Java
entdeckend nachvollziehen. Interessant wird dieser Prozess für die Schüler insbesondere dann, wenn
nicht nur bekannte, sondern auch abweichende Inhalte in Form von Attributen und Operationen
identifiziert werden. Die Übertragung erfolgt sowohl auf inhaltlicher Ebene (Eigenschaften der Klasse),
als auch auf formaler Ebene (syntaktische Strukturen). Da das Ziel der Stunde in der Analyse und
Beschreibung des Zusammenhangs zwischen OOM und OOP durch die Schüler besteht, erfolgt eine
genaue syntaktische Definition der syntaktischen Strukturen erst in der folgenden Stunde anhand der
Besprechung der Hausaufgabe. Im Sinne einer didaktischen Rekonstruktion zielt die Erarbeitung in
dieser Phase auf eine Einbettung der neuen Erkenntnisse in die bereits vorhandenen kognitiven
Strukturen der Schüler. Die Analyse erfolgt in dieser Stunde auf dem Papier und nicht am Rechner,
damit die Schüler sich intensiv mit den vorgegebenen Strukturen beschäftigen. Schwer
nachvollziehbare Fehlermeldungen bei der Rechnerarbeit könnten die Schüler verunsichern und dazu
führen, das ohne viel nachzudenken verschiedene syntaktische Konstruktionen ausprobiert werden,
bis irgendetwas funktioniert. Das FLZ 4 ist bereits mit der Lösung von Aufgabe (3) des Arbeitsbogens
erreicht. Die Aufgabe (4) stellt bereits eine Vertiefung des FLZ 4 dar und dient der Vorbereitung auf
die Hausaufgabe (optional als Festigung/Vertiefung).
Die Sicherung (2) der Analyse erfolgt an der Tafel und über den Beamer. Während ein Schüler
Elemente in den Quelltexten markiert, können weitere Schüler die Zusammenhänge zum
Klassenmodell an der Tafel herstellen. Die Zuordnung der zentralen Begriffe Klassenname,
Variablen/Attribute, Methoden/Operationen zu den Paradigmen OOP und OOM erfolgt jeweils durch
farbliche Zuordnung. Auch die abgeleiteten Objekte werden farblich markiert, um den Unterschied
zwischen den Paradigmen Klasse und Objekt ebenfalls zu verdeutlichen. Da das FLZ 4 bereits mit der
Sicherung der Aufgabe (3) des Arbeitsbogens erreicht ist, kann in Abhängigkeit von der verfügbaren
Zeit die Besprechung der Aufgabe (4) ausgedehnt oder verkürzt werden. Bei ausreichender Zeit kann
die Aufgabe ausführlich gesichert werden. Ggf. kann sogar mit der HA als optionalen Teil begonnen
werden. Bei Zeitmangel wird die Vorbereitung der Vorstellung einer Lösung von Aufgabe (4) Teil der
Hausaufgabe. Die Hausaufgabe ist für die Schüler mit Hilfe des ABs bereits nach der Sicherung von
Aufgabe (3) lösbar.
Als Hausaufgabe (optional als Festigung/Vertiefung) erhalten die Schüler einen Arbeitsbogen, mit
dessen Hilfe sie (a) aus einer Java-Klasse ein Klassenmodell ableiten sowie (b) ein Programm mit
Objekten der vorgegebenen Klasse in Java implementieren sollen. Da die Erarbeitung in dieser
Stunde über eine ausführlich modellierte Klasse erfolgt, können die Schüler durch die Analyse einer
semantisch zunächst unbekannten Klasse ihre Kenntnisse festigen. Die Vertiefung erfolgt über die
Aufgabe einer selbständigen Implementierung mit Hilfe der vorgegebenen Java-Klasse. Die
Implementierung erfordert eine kreative Einarbeitung in die Syntax und Semantik des Modells. In der
folgenden Stunde kann eine ausführliche Besprechung der Ergebnisse und der Probleme deutliche
Hinweise darauf geben, wo in dieser Lerngruppe die Schwierigkeiten beim Verständnis des
Paradigmas der OOP liegen.
Sollte es am Tag der Lehrprobe zu einem Ausfall der Rechneranlage kommen, wird anstelle eines
Videos eine Bilderserie verteilt und der Quelltext nur über den Arbeitsbogen mit dem Klassenmodell
verglichen.
8. Literaturverzeichnis
Balzert, H.: „Lehrbuch der Objektorientierung. Analyse und Entwurf“.
Spektrum Verlag. Heidelberg 1999.
de.wikipedia.org
Artikel zu: OOA, OOM, OOP, Klassen, Objekte, Attribute, Methoden, UML..
(01.02.2006)
Engesser, H. et al. (Hrsg): „DUDEN. Informatik“.
Duden Verlag. Mannheim 1993.
Flanagan, D: „Java in a Nutshell“.
O’Reilly Verlag. Köln 1998.
Gailer, H.: „Java Tutorial interaktiv — Programmieren lernen mit Java (Einführung in die Informatik
mit Java)“. 2003-2006
http://www.gailer-net.de/tutorials/java/java-toc.html
(01.02.2006)
Middendorf, S. et al.: „Programmierhandbuch und Referenz für die JavaTM-2-Plattform, Standard
Edition“. dpunkt.Verlag. Heidelberg 2002.
http://www.dpunkt.de/java/index.html.
(01.02.2006)
Object Management Group
http://www.uml.org/
(01.02.2006)
Senatsverwaltung für Bildung, Jugend und Sport des Landes Berlin (Hrsg.):
„Rahmenplan für Unterricht und Erziehung in der Berliner Schule. Entwurfsfassung Mai 2004
mit den verbindlichen curricularen Vorgaben für den Unterricht in der Einführungsphase
(Jahrgangsstufe 11) der gymnasialen Oberstufe im Schuljahr 2004/2005. Gymnasiale
Oberstufe. Fach Informatik.“
Impulse
Einführung
•
Heute nur 45 Minuten, 2 Schritte: 1) Analyse eines Videos
2) Analyse eines Quelltextes.
•
In dieser Stunde geht es um den Übergang von der OOM zur OOP.
•
Da 2006 Jahr der Fußball-WM ist, nehmen wir hierfür ein Beispiel aus einem Fussballspiel.
Konnte keiner ahnen, dass Deutschland vorgestern 4 Tore schießt, darum hatte ich schon
etwas aus der Liga vorbereitet.
[Videoclip zeigen]
•
Unter Bezug auf die Objektorientierung: Wie könnt ihr mit diesem Video arbeiten?
[OOA / OOM: Objhekte, Klassen finden/definieren]
•
Zeitangabe
Erarbeitung (1)
•
Seht euch das Video in Ruhe an, identifiziert Objekte und leitet zentrale/wichtige Klassen
dieser Szene ab!
•
Erstellt zwei Modelle der Klassen
•
Bereitet euch darauf vor, eure Klassenmodelle kurz (!) an der Tafel vorzustellen.
[Tafelbild vorbereiten]
[Herumgehen, Schüler vor-auswählen]
Sicherung (1)
•
[Schüler1] und [Schüler2], bitte bringt eure Modelle an dieTafel!
[Exemplarische Klassen und Objekte abfragen]
[Überschriften]
• Bitte stellt kurz eure Klassenmodelle vor.
•
Haben die beiden das korrekt vorgetragen und die Richtigen Begriffe benutzt?
Erarbeitung (2)
•
Ihr habt euch intensiv mit der OO-Modellierung der Fußball-Szene beschäftigt.
•
Im 2. Schritt der heutigen Stunde werdet ihr die OOP dieser Szene in Java analysieren.
[AB verteilen]
•
Ihr findet 2 Quelltexte und eine Programmausgabe:
• Der 1. Quelltext ist eine Programmierung der Klass Spieler.
• Der 2. Quelltext benutzt die OOP-Klasse Spieler um eine Torszene zu simulieren.
Die Ausgabe des Programms findet ihr gleich daneben.
[Aufgaben abwechseln vorlesen (lassen)]
•
Zeitangabe
Sicherung (2)
•
Welchen Klassennamen, Attribute und Operationen konntet ihr im Quelltext
an welcher Stelle identifizieren?
[Tafel]
•
Ihr kennt die Begriffe Klassenname, Attribut und Operation.
Welche sind die entsprechenden Strukturen in Java für Klassenname, Attribut und
Operation? (Gesucht: Allgemeine Bezeichnungen)
[Tafel]
•
•
Ordnet bitte jemand die Zeilen Nummern des Quelltextes der Ausgabe zu?
Die anderen vergleichen!
[Schüler] bitte am Computer markieren!
[Beamer]
•
Welche Funktion haben jeweils die beiden Anweisungsblöcke?
[AB]
•
Wem kann der Begriff Objekt, wem der Begriff Klasse aus der OOM zugeordnet werden?
[Tafel]
•
•
Gehen wir die Anweisungen durch: erklärt bitte, wie die Ausgabe erzeugt wird.
[Schüler] bitte am Computer markieren!
[Beamer]
Anwendung / Vertiefung
•
Jetzt heißt es üben und verstehen!
•
Lest euch die Aufgaben durch, und wir klären noch kurz Fragen.
Eine Torszene
1: Ein geschicktes Dribbling um zwei Gegenspieler....
2: ...der gezielte Pass in den Strafraum.....
3: ...und Tor !!!.
4: Der glückliche Torschütze...
5: ...wird gefeiert...
6: ...und auch die Schiedsrichter sind sich einig!
Zusatzaufgabe / Hausaufgabe
(Den Quelltext Motorrad.java finden Sie auch im Ordner Material von lo-net.)
a) Analysieren Sie den gegebenen Quelltext und leiten Sie daraus ein objektorientiertes Modell ab.
class Motorrad{
String hersteller;
String typ;
String farbe;
int
hoechstgeschwindigkeit;
int
aktuelleGeschwindigkeit;
public Auto(String einHersteller, String einTyp, String eineFarbe)
{
this.hersteller = einHersteller;
this.typ
= einTyp;
this.farbe
= eineFarbe;
this.hoechstgeschwindigkeit = 180;
this.aktuelleGeschwindigkeit = 0;
}
public void beschleunigen(int aenderungDerGeschwindigkeit)
{
aktuelleGeschwindigkeit = aktuelleGeschwindigkeit - aenderungDerGeschwindigkeit;
System.out.println("Die "+this.typ+" bremst um "+aenderungDerGeschwindigkeit+" km/h ab.");
ausgabeGeschwindigkeit();
}
public void bremsen(int aenderungDerGeschwindigkeit)
{
aktuelleGeschwindigkeit = aktuelleGeschwindigkeit - aenderungDerGeschwindigkeit;
System.out.println("Die "+this.typ+" bremst um "+aenderungDerGeschwindigkeit+" km/h ab.");
ausgabeGeschwindigkeit();
}
public void ausgabeGeschwindigkeit()
{
System.out.println("Die aktuelle Geschwindigkeit ist: "+this.aktuelleGeschwindigkeit+" km/h.");
}
public void hupen()
{
System.out.print("TUUUUUUUUUT !");
}
}
b) Schreiben Sie ein Programm Motorradrennen.java, in dem zwei Objekte der Klasse
Motorrad erzeugt werden. Die beiden Motorräder sollen sich ein kurzes „Wettrennen“ liefern!
Informatik
Grundlagen der objektorientierten Programmierung
Objektorientierte Analyse (OOA) und Modellierung (OOM)
Betrachten Sie die Szene aus einem Fußballspiel aus der objektorientierten Perspektive!
Aufträge:
1) Identifizieren Sie Objekte und Klassen!
• Identifizieren Sie Objekte und leiten Sie aus diesen Objekten Klassen ab!
Nennen Sie 2 Klassen und 1 - 3 Objekte jeder dieser Klassen. Sie brauchen hier noch keine Attribute oder Operationen zu berücksichtigen!
2) Erstellen Sie ein objektorientiertes Modell (OOM) der beiden in Aufgabe (1) gefundenen Klassen!
• Finden Sie für jede der beiden Klassen Bezeichnungen für den Klassennamen, 2-3 Attribute, 1-3 Operationen.
3) Ordnen Sie den in Aufgabe (1) und (2) beschriebenen Prozessen Überschriften zu!
• Welche der Aufgaben entspricht der objektorientierten Analyse (OOA), und welche der objektorientierten Modellierung (OOM)?
_____________________________
Objekte
Klasse n
______________________________
Modelle
Datum:
Informatik
Grundlagen der objektorientierten Informatik
Datum:
Objektorientierte Modellierung (OOM) und Programmierung (OOP)
1) Analysieren Sie den Java-Quelltext Spieler.java und leiten Sie aus dem Quelltext ein objektorientiertes Modell (links) ab!
(Hinweis: Die Inhalte der Methoden brauchen Sie hier noch nicht berücksichtigen!)
Modell
Quelltext:
Spieler.java
1 class Spieler
2 {
3
String name;
4
int
nummer;
5
int
anzahlTore;
6
7
8
public Spieler(String einName, int eineNummer)
9
{
10
this.name
= einName;
11
this.nummer
= eineNummer;
12
this.anzahlTore = 0;
13
}
14
15
public void schiesstDenBall()
16
{
17
System.out.println("\nTorschuss von "+this.name+"! Was für ein Schuss, wie ein Strich!");
18
}
19
20
public void jubelt()
21
{
22
this.anzahlTore = anzahlTore + 1;
23
System.out.println("\n- TOR, TOR, TOOOOOOOR !!! -");
24
System.out.println("Das ist das "+this.anzahlTore+". Tor für die Nummer "+this.nummer+"!");
25
}
26
27
public void fordertDenBallVon(Spieler einSpieler)
28
{
29
System.out.println("\n- HEY, "+einSpieler.name+"! ICH STEHE FREI !!! -");
30
}
31
32
public void spieltDenBallZu(Spieler einSpieler)
33
{
34
System.out.println("\n- DA KOMMT DER BALL! -");
35
System.out.println("*Schuss* Eine weite Flanke von "+this.name+" zu "+einSpieler.name+"...");
36
}
37 }
2) Welche Strukturen der Programmiersprache Java entsprechen den folgenden Elementen der objektorientierten Modellierung?
Klassenname
______________________________
Attribute
______________________________
Operationen
______________________________
3) Analysieren Sie den Quelltext des Programms EineTorszene.java sowie die Ausgabe des Programms.
(Hinweis: Das Programm EineTorszene.java benutzt das Programm Spieler.java !)
a) Notieren Sie kurz zu jeder Zeile der Ausgabe des Programms die Zeilennummer der Zeile im Quelltext EineTorszene.java, die diese Ausgabe erzeugt hat.
Quelltext:
Ausgabe:
EineTorszene.java
1 class EineTorszene
2 {
3
public static void main(String[] args)
4
{
5
Spieler spieler1;
6
Spieler spieler2;
7
8
spieler1 = new Spieler("Paul Freier",10);
9
spieler2 = new Spieler("Simon Rolfes ",6);
10
11
System.out.println("-----------------------------------------");
12
System.out.println("Wir befinden uns in der 27. Minute...");
13
spieler1.fordertDenBallVon(spieler2);
14
spieler2.spieltDenBallZu(spieler1);
15
spieler1.schiesstDenBall();
16
spieler1.jubelt();
17
System.out.println("-----------------------------------------");
19
}
20 }
EineTorszene
> java EineTorszene
---------------------------------------------------------Wir befinden uns in der 27. Minute...
- HEY, Simon Rolfes! ICH STEHE FREI !!! - DA KOMMT DER BALL! *Schuss* Eine weite Flanke von Simon Rolfes zu Paul Freier...
Torschuss von Paul Freier! Was für ein Schuss, wie ein Strich!
- TOR, TOR, TOOOOOOOR !!! Das ist das 1. Tor für die Nummer 10!
----------------------------------------------------------
b) Versuchen Sie zu erklären, welche Funktionen die folgenden Zeilen des Quelltextes EineTorszene.java haben:
(Sie können in Ihrer Erklärung auch die Begriffe Klasse, Objekt, Attribute, etc. der objektorientierten Modellierung benutzen!)
5 Spieler spieler1;
6 Spieler spieler2;
_________________________________________________________________
_________________________________________________________________
8 spieler1=new Spieler("Paul Freier",10)
9 spieler1=new Spieler("Simon Rolfes",6)
________________________________________________________________
________________________________________________________________
4) Bereiten Sie sich darauf vor, unter Bezug auf die Quelltexte von EineTorszene.java und Spieler.java zu erklären, wie die Ausgabe
des Programms EineTorszene erzeugt wird.
(Schauen Sie sich dabei z.B. die Zeilen 14 des Quelltextes EineTorszene.java und die Zeilen 34-35 des Quelltextes Spieler.java an.)
Herunterladen