Objektorientierte Modellierung und Programmierung mit Hilfe dreidimensionaler Simulationen

Post on 03-Jan-2016

101 views 1 download

description

Objektorientierte Modellierung und Programmierung mit Hilfe dreidimensionaler Simulationen. Volker Quade. Februar 2014. I. Grundlegendes. Oder: Was heißt eigentlich Modellierung und Programmierung?. II. Einführung in GLOOP. Oder: Was ist GLOOP eigentlich?. - PowerPoint PPT Presentation

Transcript of Objektorientierte Modellierung und Programmierung mit Hilfe dreidimensionaler Simulationen

Objektorientierte Modellierung und Programmierung mit Hilfe

dreidimensionaler Simulationen

Volker Quade

Februar 2014

I. Grundlegendes

Oder: Was heißt eigentlich Modellierungund Programmierung?

II. Einführung in GLOOP

Oder: Was ist GLOOP eigentlich?

Erste Schritte in eine dreidimensionale Welt (1)

Der Programmierung in GLOOP wird ein dreidimensionales Koor-dinatensystem zugrunde gelegt. Es handelt sich um ein rechts-händisches Koordinatensystem.

X

Y

Z

Erste Schritte in eine dreidimensionale Welt (2)

GLKameraEin Objekt dieser Klasse öffnet ein

Fenster, in dem die dreidimensionale Welt dargestellt wird.

GLObjektDie Klasse GLObjekt selbst ist abstrakt.

Ihre Unterklassen stellen die geometrischen Objekte dar, aus denen eine

Szene aufgebaut ist.

GLLichtMindestens eine Lichtquelle ist

erforderlich,um die Szene auszuleuchten.

Das erste Programm – „Hello world!“

Deklaration von drei Objekten

Initialisierung von drei Objekten

Das erste Programm – „Hello world!“

Eine einfache Simulation

Drehung um den eigenen Mittelpunkt.

Drehung um den Punkt (0,0,0).

Methoden von GLObjekt

+ setzePosition ( … )+ verschiebe ( … )

+ setzeDrehung ( … )+ drehe ( … )

+ setzeSkalierung ( … )+ skaliere ( … )

+ setzeFarbe ( … )+ setzeTextur ( … )

+ gibX() : double+ gibY() : double+ gibZ() : double

+ loesche()[...]

GLObjekt

Größenänderung

Drehung

Positionierung

Oberflächengestaltung

Position liefern

Löschen

Es steht jeweilsein absoluter

undein relativerBefehl zurVerfügung.

Klassenstruktur

Alle Konstruktoren folgen dem gleichen Muster:<Klassenbezeichner>(<Position>, <Ausdehnung>)

(Beispiel: GLQuader (X, Y, Z, Breite, Höhe, Tiefe: double);)

Ein- und Ausgabe (1)

Mit Hilfe der Konsole kann ein einzelner String ein- bzw. ausgegeben werden.

Ein- und Ausgabe (2)

Tafel mit und ohne Autodrehung(Billboarding)

I. Unterrichtliches Vorgehen

Oder: Was kann man damit machen??

Unterrichtsvorhaben EF-IIThema: Grundlagen der objektorientierten Analyse, Modellierung und Implementierung anhand von statischen Grafikszenen

Kompetenzerwartungen:

Die Schülerinnen und Schüler • ermitteln bei der Analyse einfacher Problemstellungen Objekte, ihre Eigenschaften, ihre

Operationen und ihre Beziehungen (M),• modellieren Klassen mit ihren Attributen, ihren Methoden und

Assoziationsbeziehungen (M),• stellen die Kommunikation zwischen Objekten grafisch dar (M),• implementieren einfache Algorithmen unter Beachtung der Syntax und Semantik einer

Programmiersprache (I),• stellen den Zustand eines Objekts dar (D).

1. Identifikation von Objektena) Am Beispiel eines lebensweltnahen

Beispiels werden Objekte im Sinne der Objektorientierten Modellierung eingeführt.

b) Objekte werden mit Objektkarten visualisiert und mit sinnvollen Attributen und „Fähigkeiten“, d.h. Methoden versehen.

c) Manche Objekte sind prinzipiell typgleich und werden so zu einer Objektsorte bzw. Objektklasse zusammengefasst.

d) Vertiefung: Modellierung weiterer Beispiele ähnlichen Musters

Unterrichtsvorhaben EF-II

Vögel als Objekte

: Vogel

bezeichnung = "Sperling" gewicht = 45 g geschlecht = w farbe = braun

: Vogel

bezeichnung = "Blauhäher" gewicht = 82 g geschlecht = m farbe = blau

: Vogel

bezeichnung = "Saatkrähe" gewicht = 304 g geschlecht = m farbe = schwarz

: Vogel

bezeichnung = "Sperling" gewicht = 45 g geschlecht = w farbe = braun

: Vogel

bezeichnung = "Blauhäher" gewicht = 82 g geschlecht = m farbe = blau

: Vogel

bezeichnung = "Saatkrähe" gewicht = 304 g geschlecht = m farbe = schwarz

: Vogel

bezeichnung = "Sperling" gewicht = 45 g geschlecht = w farbe = braun

: Vogel

bezeichnung = "Blauhäher" gewicht = 82 g geschlecht = m farbe = blau

: Vogel

bezeichnung = "Saatkrähe" gewicht = 304 g geschlecht = m farbe = schwarz

Vögel als Instanzen einer Klasse: Vogel

bezeichnung = "Sperling" gewicht = 45 g geschlecht = w farbe = braun

: Vogel

bezeichnung = "Blauhäher" gewicht = 82 g geschlecht = m farbe = blau

: Vogel

bezeichnung = "Saatkrähe" gewicht = 304 g geschlecht = m farbe = schwarz

: Vogel

bezeichnung = "Sperling" gewicht = 45 g geschlecht = w farbe = braun

: Vogel

bezeichnung = "Blauhäher" gewicht = 82 g geschlecht = m farbe = blau

: Vogel

bezeichnung = "Saatkrähe" gewicht = 304 g geschlecht = m farbe = schwarz

: Vogel

bezeichnung = "Sperling" gewicht = 45 g geschlecht = w farbe = braun

: Vogel

bezeichnung = "Blauhäher" gewicht = 82 g geschlecht = m farbe = blau

: Vogel

bezeichnung = "Saatkrähe" gewicht = 304 g geschlecht = m farbe = schwarz

Vogel

bezeichnung: Text gewicht: Zahl geschlecht: Zeichen farbe: Text

singe() fliege() lande() gibFarbe(): Text [...]

Attribute

Methoden

2. Analyse von Klassen didaktischer Lernumgebungena) Objektorientierte Programmierung als

modularisiertes Vorgehen (Entwicklung von Problemlösungen auf Grundlage vorhandener Klassen)

b) Teilanalyse der Klassen der didaktischen Lernumgebungen GLOOP

Materialien:Dokumentation der didaktischen Bibliothek GLOOP (download)

3. Implementation dreidimensionaler, statischer Szenena) Grundaufbau einer Java-Klasseb) Konzeption einer Szene mit Kamera, Licht und

sichtbaren Objektenc) Deklaration und Initialisierung von Objektend) Methodenaufrufe mit Parameterübergabe zur

Manipulation von Objekteigenschaften (z.B. Farbe, Position, Drehung)

Beispiel: SkulpturengartenSchülerinnen und Schüler erstellen ein Programm, das mit Hilfe von geometrischen Objekten der GLOOP-Umgebung einen Skulpturengaten auf den Bildschirm bringt. Beispiel: Olympische RingeDie Schülerinnen und Schüler bilden das Emblem der olympischen Spiele mit Hilfe von GLOOP-Objekten nach. Materialien:Ergänzungsmaterialien zum Lehrplannavigator - Sequenzielle Programmierung (download)

Unterrichtsvorhaben EF-II

Der Skulpturengarten

Eine besondere Herausforderung ist die kreisförmige Anordnung der Skulpturen!

Vertiefung: Olympische Ringe

Die Ringe müssen natürlich richtig ineinandergreifen.

Vertiefung: Olympische Ringe

Unterrichtsvorhaben EF-IIIThema: Grundlagen der objektorientierten Programmierung und algorithmischer Grundstrukturen in Java anhand von einfachen Animationen

Kompetenzerwartungen: (Argumentieren, Modellieren)

Die Schülerinnen und Schüler • analysieren und erläutern einfache Algorithmen und Programme (A),• entwerfen einfache Algorithmen und stellen sie umgangssprachlich und grafisch dar (M),• ermitteln bei der Analyse einfacher Problemstellungen Objekte, ihre Eigenschaften, ihre

Operationen und ihre Beziehungen (M),• modellieren Klassen mit ihren Attributen, ihren Methoden und Assoziationsbeziehungen

(M),• ordnen Attributen, Parametern und Rückgaben von Methoden einfache Datentypen,

Objekttypen oder lineare Datensammlungen zu (M),• ordnen Klassen, Attributen und Methoden ihren Sichtbarkeitsbereich zu (M).

Unterrichtsvorhaben EF-IIIThema: Grundlagen der objektorientierten Programmierung und algorithmischer Grundstrukturen in Java anhand von einfachen Animationen

Kompetenzerwartungen: (Implementieren)

Die Schülerinnen und Schüler • modifizieren einfache Algorithmen und Programme (I),• implementieren Klassen in einer Programmiersprache auch unter Nutzung

dokumentierter Klassenbibliotheken (I),• implementieren Algorithmen unter Verwendung von Variablen und Wertzuweisungen,

Kontrollstrukturen sowie Methodenaufrufen (I),• implementieren einfache Algorithmen unter Beachtung der Syntax und Semantik einer

Programmiersprache (I),• testen Programme schrittweise anhand von Beispielen (I), • interpretieren Fehlermeldungen und korrigieren den Quellcode (I).

Unterrichtsvorhaben EF-III1. Bewegungsanimationen am Beispiel

einfacher grafischer Objekte (GLObjekte)a) Kontinuierliche Verschiebung eines

GLObjekts mit Hilfe einer Schleife (While-Schleife)

b) Tastaturabfrage zur Realisierung einer Schleifenbedingung für eine Animationsschleife

c) Mehrstufige Animationen mit mehreren sequenziellen Schleifen

d) Berechnung von Abständen zwischen GLObjekten mit Hilfsvariablen

e) Meldungen zur Kollision zweier GLObjekte mit Hilfe von Abstandsberechnungen und Verzweigungen (IF-Anweisungen)

Das BallwurfspielZiel des Spiels ist es, mit einem Ball eine Zielscheibe zu treffen. Der Ball kann mit der Tastatur nach links, rechts, oben und unten bewegt und so in die richtige Position gebracht werden. Auf Tastendruck fliegt er nach vorne weg, bis er auf Höhe der Zielscheibe ist. Ein Treffer bzw. Fehlwurf sollte mit einer Meldung angezeigt werden.

Ball(1)

Zielscheibe (1)

Quadratischer Untergrund (1)

Modellierung mit Struktogrammen

Nicht ' 'gedrückt

w f„Links“ gedrückt

Ball nach links verschieben

w f„Rechts“ gedrückt

Ball nach rechts verschieben

w f„Oben“ gedrückt

Ball nach oben verschieben

w f„Unten“ gedrückt

Ball nach unten verschieben

Ball nicht auf Zielhöhe

Ball nach hinten verschieben

w fDistanz < Radius

Melde „Treffer“ Melde „Daneben“

Gemeint ist hier die Distanz zwischen dem Ball und der Zielscheibe bzw. der

Radius der Zielscheibe.

1. Schritt 2. Schritt

3. Schritt

Modelllösung: Ballwurfspiel

2. Erstellen und Verwalten größerer Mengen einfacher grafischer Objekte (GLObjekte)

a) Erzeugung von Objekten mit Hilfe von Zählschleifen (FOR-Schleife)

b) Verwaltung von Objekten in eindimensionalen Feldern (Arrays)

c) Animation von Objekten, die in eindimensionalen Feldern (Arrays) verwaltet werden

d) Vertiefung: Verschiedene Feldbeispiele

Unterrichtsvorhaben EF-III

Vertiefung: Hubschrauberlandeplatz

Die Kreise sind Signalleuchten und werden in einem Feld verwaltet. Zu Einübung von Schleifen können Lauflichter oder Blinklichter realisiert werden.

Vertiefung: Schachbrett

Die einzelnen Platten werden in verschachtelten Schleifen erstellt. Mit einer Verzweigung kann die unterschiedliche Färbung realisiert werden.

3. Modellierung und Animation komplexerer grafisch repräsentierbarer Objekte

a) Modellierung eines Simulationsprogramms mit eigenen Klassen, die sich selbst mit Hilfe von einfachen GLObjekten zeigen mit Hilfe eines Implementationsdiagramms

b) Implementation eigener Methoden mit und ohne Parameterübergabe

c) Realisierung von Zustandsvariablend) Thematisierung des Geheimnisprinzips und

des Autonomitätsprinzips von Objektene) Animation mit Hilfe des Aufrufs von

selbstimplementierten Methodenf) Vertiefung: Weitere Projekte

Unterrichtsvorhaben EF-III

Drei Kerzen im Raum

Es soll eine Szene erstellt werden, in der drei brennende Kerzen auf einem Holzbrett stehen.

Kerzen (3)

Quadratischer Untergrund (1)

Kerzenkörper

DochtFlamme

Modellierung des Projekts Kerzen

Kerzen brennen abhängig von ihrer Dicke unterschiedlich schnell ab und gehen am Ende aus.

- koerper: GLZylinder- docht: GLZylinder- flamme: GLLicht- dicke: double- laenge: double- an: boolean

+ Kerze(pX: double, pZ: double, pDicke: double, pLaenge: double)+ an()+ aus()+ brenneAb()

Kerze

- platte: GLQuader

+ Untergrund()

Untergrund

- kamera: GLKamera- tastatur: GLTastatur

+ Kerzenszene()+ fuehreAus()

Kerzenszene

- untergrund

- kerze1- kerze2- kerze3

- koerper: GLZylinder- docht: GLZylinder- flamme: GLLicht- dicke: double- laenge: double- an: boolean

+ Kerze(pX: double, pZ: double, pDicke: double, pLaenge: double)+ an()+ aus()+ brenneAb()

Kerze

- platte: GLQuader

+ Untergrund()

Untergrund

- kamera: GLKamera- tastatur: GLTastatur

+ Kerzenszene()+ fuehreAus()

Kerzenszene

- untergrund

- kerze1- kerze2- kerze3

Kerzenszene mit Parametern und Methoden

Unterrichtsvorhaben EF-IVThema: Modellierung und Implementierung von Klassen- und Objektbeziehungen anhand von grafischen Spielen und Simulationen

Kompetenzerwartungen: (Argumentieren, Modellieren)

Die Schülerinnen und Schüler • analysieren und erläutern eine objektorientierte Modellierung (A),• stellen die Kommunikation zwischen Objekten grafisch dar (M),• ermitteln bei der Analyse einfacher Problemstellungen Objekte, ihre Eigenschaften, ihre

Operationen und ihre Beziehungen (M),• modellieren Klassen mit ihren Attributen, ihren Methoden und Assoziationsbeziehungen

(M),• ordnen Attributen, Parametern und Rückgaben von Methoden einfache Datentypen,

Objekttypen oder lineare Datensammlungen zu (M),• ordnen Klassen, Attributen und Methoden ihren Sichtbarkeitsbereich zu (M),• modellieren Klassen unter Verwendung von Vererbung (M).

Unterrichtsvorhaben EF-IVThema: Modellierung und Implementierung von Klassen- und Objektbeziehungen anhand von grafischen Spielen und Simulationen

Kompetenzerwartungen: (Implementieren, Darstellen)

Die Schülerinnen und Schüler • implementieren Klassen in einer Programmiersprache auch unter Nutzung

dokumentierter Klassenbibliotheken (I), • testen Programme schrittweise anhand von Beispielen (I),• interpretieren Fehlermeldungen und korrigieren den Quellcode (I),• modifizieren einfache Algorithmen und Programme (I),• stellen Klassen, Assoziations- und Vererbungsbeziehungen in Diagrammen grafisch dar

(D),• dokumentieren Klassen durch Beschreibung der Funktionalität der Methoden (D).

Das Ufospiel in 2DEin Raumschiff bzw. Ufo soll anfliegenden Asteroiden seitlich ausweichen.

Bewegung

Modellierung mit Assoziationen

- kamera: GLKamera- licht: GLLicht- tastatur: GLTastatur- himmel: GLHimmel

+ Ufospiel()+ fuehreAus()

Ufospiel

- rumpf: GLTorus- cockpit: GLKugel- fluegel1: GLKegel- fluegel2: GLKegel

+ Ufo()+ bewegeLinks()+ bewegeRecht()+ explodiere()

Ufo

- kugel: GLKugel

+ Asteroid()+ bewegeDich()

Asteroid

- asteroid1 - asteroid2- asteroid3

- dasUfo

- kamera: GLKamera- licht: GLLicht- tastatur: GLTastatur- himmel: GLHimmel

+ Ufospiel()+ fuehreAus()

Ufospiel

- rumpf: GLTorus- cockpit: GLKugel- fluegel1: GLKegel- fluegel2: GLKegel

+ Ufo()+ bewegeLinks()+ bewegeRecht()+ explodiere()+ gibX()+ gibY()

Ufo

- kugel: GLKugel

+ Asteroid(pUfo: Ufo)+ bewegeDich()- zuruecksetzen()- getroffen(): boolean

Asteroid

- dasUfo

- dasUfo

1 3

- asteroid1 - asteroid2- asteroid3

- kamera: GLKamera- licht: GLLicht- tastatur: GLTastatur- himmel: GLHimmel

+ Ufospiel()+ fuehreAus()

Ufospiel

- rumpf: GLTorus- cockpit: GLKugel- fluegel1: GLKegel- fluegel2: GLKegel

+ Ufo()+ bewegeLinks()+ bewegeRecht()+ explodiere()

Ufo

- kugel: GLKugel

+ Asteroid()+ bewegeDich()

Asteroid

- asteroid1 - asteroid2- asteroid3

- dasUfo

- kamera: GLKamera- licht: GLLicht- tastatur: GLTastatur- himmel: GLHimmel

+ Ufospiel()+ fuehreAus()

Ufospiel

- rumpf: GLTorus- cockpit: GLKugel- fluegel1: GLKegel- fluegel2: GLKegel

+ Ufo()+ bewegeLinks()+ bewegeRecht()+ explodiere()+ gibX()+ gibY()

Ufo

- kugel: GLKugel

+ Asteroid(pUfo: Ufo)+ bewegeDich()- zuruecksetzen()- getroffen(): boolean

Asteroid

- dasUfo

- dasUfo

1 3

- asteroid1 - asteroid2- asteroid3

Das Ufospiel in 2D

Binnendifferenzierung: Ufospiel in 3D

Binnendifferenzierung und VertiefungZur weiteren Vertiefung und Binnendifferenzierung kann eine Autofahrt oder auch ein Billardspiel erstellt werden.

Schneemänner mit Vererbung

Oberklassenobjekt

Spezialisierungen

Bälle mit Polymorphie

Bälle mit unterschiedlichem Bewegungsverhalten

Weihnachtsbaum mit abstrakter Klasse

Kugeln, Ringe und Päckchen erben von der abstrakten Klasse Schmuck