29.09.2005 mit dem Java-Hamster-Modell Spielerisches ...€¦ · Spielerisches Erlernen der...

44
Spielerisches Erlernen der Programmierung mit dem Java-Hamster-Modell Dietrich Boles Universität Oldenburg INFOS 2005 29.09.2005

Transcript of 29.09.2005 mit dem Java-Hamster-Modell Spielerisches ...€¦ · Spielerisches Erlernen der...

Page 1: 29.09.2005 mit dem Java-Hamster-Modell Spielerisches ...€¦ · Spielerisches Erlernen der Programmierung mit dem Java-Hamster-Modell Dietrich Boles Universität Oldenburg INFOS

Spielerisches Erlernen der Programmierung

mit dem Java-Hamster-Modell

Dietrich BolesUniversität Oldenburg

INFOS 200529.09.2005

Page 2: 29.09.2005 mit dem Java-Hamster-Modell Spielerisches ...€¦ · Spielerisches Erlernen der Programmierung mit dem Java-Hamster-Modell Dietrich Boles Universität Oldenburg INFOS

Java-Hamster-Modell Dietrich Boles (Uni Oldenburg) Seite 2

Gliederung

1) Motivation

2) Grundlagen

3) Hamster-Simulator

4) Komponenten des Java-Hamster-Modells

5) Andere Ansätze

6) Erfahrungen und Fazit

Page 3: 29.09.2005 mit dem Java-Hamster-Modell Spielerisches ...€¦ · Spielerisches Erlernen der Programmierung mit dem Java-Hamster-Modell Dietrich Boles Universität Oldenburg INFOS

Java-Hamster-Modell Dietrich Boles (Uni Oldenburg) Seite 3

Motivation

Anforderungen an Programmiermodell für Anfänger:

Einfach, intuitiv, Spaßfaktor

Komplexitätsreduktion

Inkrementelle Vermittlung der Konzepte

Einfach zu bedienende Programmierumgebung

Visualisierung der Ausführung

Lehr-/Lernmaterialien, Übungen („Learning-by-Doing“)

Wahl der Programmiersprache: Mutterspracheneffekt

Page 4: 29.09.2005 mit dem Java-Hamster-Modell Spielerisches ...€¦ · Spielerisches Erlernen der Programmierung mit dem Java-Hamster-Modell Dietrich Boles Universität Oldenburg INFOS

Java-Hamster-Modell Dietrich Boles (Uni Oldenburg) Seite 4

Grundlagen des Java-Hamster-Modells

Symbol Bedeutung

Hamster (Blickrichtung Ost)

Hamster (Blickrichtung Süd)

Hamster (Blickrichtung West)

Hamster (Blickrichtung Nord)

Kachel mit Mauer

Kachel mit Körnern

Page 5: 29.09.2005 mit dem Java-Hamster-Modell Spielerisches ...€¦ · Spielerisches Erlernen der Programmierung mit dem Java-Hamster-Modell Dietrich Boles Universität Oldenburg INFOS

Java-Hamster-Modell Dietrich Boles (Uni Oldenburg) Seite 5

Grundlagen des Java-Hamster-Modells

Hamsteraufgabe:

Landschaft:

Lösung:

Gegeben sei die folgende Landschaft. Der Hamster soll zwei Körner fressen.

Ein Hamsterprogramm

Page 6: 29.09.2005 mit dem Java-Hamster-Modell Spielerisches ...€¦ · Spielerisches Erlernen der Programmierung mit dem Java-Hamster-Modell Dietrich Boles Universität Oldenburg INFOS

Java-Hamster-Modell Dietrich Boles (Uni Oldenburg) Seite 6

Grundlagen des Java-Hamster-Modells

4 Grundbefehle:

vor(); ein Feld nach vorne springen

linksUm(); 90 Grad nach links drehen

nimm(); ein Korn von der aktuellen Kachel aufnehmen

gib(); ein Korn aus dem Maul auf der akt. Kachel ablegen

Page 7: 29.09.2005 mit dem Java-Hamster-Modell Spielerisches ...€¦ · Spielerisches Erlernen der Programmierung mit dem Java-Hamster-Modell Dietrich Boles Universität Oldenburg INFOS

Java-Hamster-Modell Dietrich Boles (Uni Oldenburg) Seite 7

Hamster-Simulator

Motivation:Programmieren übenKennenlernen von ProgrammentwicklungsumgebungenKennenlernen des ProgrammentwicklungsprozessesSpaß haben

Komponenten:(Programm)EditorCompilerLandschaftseditorInterpreterDebugger

Page 8: 29.09.2005 mit dem Java-Hamster-Modell Spielerisches ...€¦ · Spielerisches Erlernen der Programmierung mit dem Java-Hamster-Modell Dietrich Boles Universität Oldenburg INFOS

Java-Hamster-Modell Dietrich Boles (Uni Oldenburg) Seite 8

(Imperatives) Programmieren

spielend gelernt

mit dem

Java-Hamster-Modell

(Teubner, 1999/2002)

Page 9: 29.09.2005 mit dem Java-Hamster-Modell Spielerisches ...€¦ · Spielerisches Erlernen der Programmierung mit dem Java-Hamster-Modell Dietrich Boles Universität Oldenburg INFOS

Java-Hamster-Modell Dietrich Boles (Uni Oldenburg) Seite 9

Imperatives Programmieren

Programme und Anweisungen

void main() {

// nimm erstes Korn

vor(); vor(); nimm();

// nimm zweites Korn

linksUm();

vor(); vor(); nimm();

}

Der Hamster sollzwei Körner fressen.

Page 10: 29.09.2005 mit dem Java-Hamster-Modell Spielerisches ...€¦ · Spielerisches Erlernen der Programmierung mit dem Java-Hamster-Modell Dietrich Boles Universität Oldenburg INFOS

Java-Hamster-Modell Dietrich Boles (Uni Oldenburg) Seite 10

Imperatives Programmieren

Definition neuer Befehle (→ Prozeduren)

void rechtsUm() {

linksUm(); linksUm(); linksUm();

}

void main() {

// nimm erstes Korn

rechtsUm();

vor(); vor(); nimm();

// nimm zweites Korn

rechtsUm();

vor(); vor(); nimm();

}

Der Hamster sollzwei Körner fressen.

Page 11: 29.09.2005 mit dem Java-Hamster-Modell Spielerisches ...€¦ · Spielerisches Erlernen der Programmierung mit dem Java-Hamster-Modell Dietrich Boles Universität Oldenburg INFOS

Java-Hamster-Modell Dietrich Boles (Uni Oldenburg) Seite 11

Imperatives Programmieren

Laufzeitfehlervor(); ... und Feld vor dem Hamster ist blockiertnimm(); ... und kein Korn auf der akt. Kachel vorhandengib(); ... und kein Korn im Maul des Hamsters

TestbefehlevornFrei() ist das Feld vor dem Hamster blockiert?maulLeer() ist das Maul des Hamsters leer?kornDa() liegt ein Korn auf der akt. Kachel?

Page 12: 29.09.2005 mit dem Java-Hamster-Modell Spielerisches ...€¦ · Spielerisches Erlernen der Programmierung mit dem Java-Hamster-Modell Dietrich Boles Universität Oldenburg INFOS

Java-Hamster-Modell Dietrich Boles (Uni Oldenburg) Seite 12

Imperatives Programmieren

Kontrollstrukturen (→ Parametrisierte Algorithmen)→ Auswahlanweisungen→ Wiederholungsanweisungen

void main() {

sammleAlleKoerner();

while (vornFrei()) {

vor();

sammleAlleKoerner();

}

}

void sammleAlleKoerner() {while (kornDa())nimm();

}

Der Hamster soll bis zurnächsten Wand laufen unddabei alle Körner fressen.

Page 13: 29.09.2005 mit dem Java-Hamster-Modell Spielerisches ...€¦ · Spielerisches Erlernen der Programmierung mit dem Java-Hamster-Modell Dietrich Boles Universität Oldenburg INFOS

Java-Hamster-Modell Dietrich Boles (Uni Oldenburg) Seite 13

Imperatives Programmieren

Definition neuer Testbefehle (→ boolesche Funktionen)

boolean linksFrei() {linksUm();if (vornFrei()) {rechtsUm(); return true;

} else {rechtsUm(); return false;

}}

void main() {

while (vornFrei() && !linksFrei())

vor();

if (linksFrei()) {

linksUm(); vor();

}

}

Der Hamster soll aufder linken Seite eineNische suchen und sichdort hinein begeben.

Page 14: 29.09.2005 mit dem Java-Hamster-Modell Spielerisches ...€¦ · Spielerisches Erlernen der Programmierung mit dem Java-Hamster-Modell Dietrich Boles Universität Oldenburg INFOS

Java-Hamster-Modell Dietrich Boles (Uni Oldenburg) Seite 14

Imperatives Programmieren

Programmentwurf (→ Schrittweise Verfeinerung)

Dokumentation

Problem

Programm

Implementierung

Analyse

Entwurf

Test

Page 15: 29.09.2005 mit dem Java-Hamster-Modell Spielerisches ...€¦ · Spielerisches Erlernen der Programmierung mit dem Java-Hamster-Modell Dietrich Boles Universität Oldenburg INFOS

Java-Hamster-Modell Dietrich Boles (Uni Oldenburg) Seite 15

Imperatives Programmieren

Der Hamster bekommt ein Gedächtnis und lernt zählen (→ Zahlen, Variablen und Ausdrücke)

void main() {

int schritte = 0;

while (vornFrei()) {

vor();

schritte = schritte + 1;

}

linksUm(); linksUm();

while (schritte > 0) {

vor();

schritte = schritte – 1;

}

}

Der Hamster soll biszur nächsten Mauerund zurück laufen.

Page 16: 29.09.2005 mit dem Java-Hamster-Modell Spielerisches ...€¦ · Spielerisches Erlernen der Programmierung mit dem Java-Hamster-Modell Dietrich Boles Universität Oldenburg INFOS

Java-Hamster-Modell Dietrich Boles (Uni Oldenburg) Seite 16

Imperatives Programmieren

Verallgemeinerung des Funktionskonzeptes

Der Hamster soll nSchritte aber maximalbis zur nächsten Mauerlaufen.

void main() {

int anzahl = vor(5);

}

int vor(int schritte) {

while (schritte > 0 &&

vornFrei()) {

vor();

schritte--;

}

return schritte;

}

Page 17: 29.09.2005 mit dem Java-Hamster-Modell Spielerisches ...€¦ · Spielerisches Erlernen der Programmierung mit dem Java-Hamster-Modell Dietrich Boles Universität Oldenburg INFOS

Java-Hamster-Modell Dietrich Boles (Uni Oldenburg) Seite 17

Imperatives Programmieren

Rekursion (→ Backtracking)

Der Hamster soll ineinem beliebigenzyklenfreien Labyrinthein Korn suchen.

boolean gefunden = false;void main() { sucheGeradeAb(); }void sucheGeradeAb() {

if (kornDa()) {gefunden = true; nimm();

}if (!gefunden && linksFrei()) {

linksUm(); vor(); sucheGeradeAb();vor(); linksUm();

}if (!gefunden && rechtsFrei()) {

rechtsUm(); vor(); sucheGeradeAb();vor(); rechtsUm();

}if (!gefunden && vornFrei()) {

vor(); sucheGeradeAb(); vor();} else {

kehrt();} }

Page 18: 29.09.2005 mit dem Java-Hamster-Modell Spielerisches ...€¦ · Spielerisches Erlernen der Programmierung mit dem Java-Hamster-Modell Dietrich Boles Universität Oldenburg INFOS

Java-Hamster-Modell Dietrich Boles (Uni Oldenburg) Seite 18

Objektorientierte Programmierung

spielend gelernt

mit dem

Java-Hamster-Modell

(Teubner, 2004)

Page 19: 29.09.2005 mit dem Java-Hamster-Modell Spielerisches ...€¦ · Spielerisches Erlernen der Programmierung mit dem Java-Hamster-Modell Dietrich Boles Universität Oldenburg INFOS

Java-Hamster-Modell Dietrich Boles (Uni Oldenburg) Seite 19

Objektorientierte Programmierung

Anpassungen des ursprünglichen Hamster-Modells

Zusätzlich zum „Standard-Hamster“ können weitere Hamster

erzeugt werden

Hamster sind Instanzen einer Klasse „Hamster“

Dem Territorium wird ein

Koordinatensystem zugeordnet

Auf einer Kachel können sich mehrere

Hamster befinden

Page 20: 29.09.2005 mit dem Java-Hamster-Modell Spielerisches ...€¦ · Spielerisches Erlernen der Programmierung mit dem Java-Hamster-Modell Dietrich Boles Universität Oldenburg INFOS

Java-Hamster-Modell Dietrich Boles (Uni Oldenburg) Seite 20

Objektorientierte Programmierung

Klasse „Hamster“class Hamster {Hamster(int r, int s, int b, int k) {...}

void vor() {...}void linksUm() {...}void gib() {...}void nimm() {...}

boolean vornFrei() {...}boolean maulLeer() {...}boolean kornDa() {...}

…}

Page 21: 29.09.2005 mit dem Java-Hamster-Modell Spielerisches ...€¦ · Spielerisches Erlernen der Programmierung mit dem Java-Hamster-Modell Dietrich Boles Universität Oldenburg INFOS

Java-Hamster-Modell Dietrich Boles (Uni Oldenburg) Seite 21

Objektorientierte Programmierung

Hamster-Namen (→ Objektvariablen)

void main() {

Hamster paul = Hamster.getStandardHamster();

while (paul.vornFrei()) {

paul.vor();

}}

Der Standard-Hamster sollbis zur nächsten Wand laufen.

Page 22: 29.09.2005 mit dem Java-Hamster-Modell Spielerisches ...€¦ · Spielerisches Erlernen der Programmierung mit dem Java-Hamster-Modell Dietrich Boles Universität Oldenburg INFOS

Java-Hamster-Modell Dietrich Boles (Uni Oldenburg) Seite 22

Objektorientierte Programmierung

Erzeugung neuer Hamster(objekte)void main() {

Hamster paul = new Hamster(2, 0, Hamster.OST, 6);

Hamster heidi = new Hamster(2, 5, Hamster.WEST, 0);

// Paul laeuft zu seiner „Angebeteten“

while (paul.vornFrei() &&paul.getSpalte() != heidi.getSpalte()) {

paul.vor();

}

// Paul uebergibt Heidi seine Koerner

if (paul.getSpalte() == heidi.getSpalte()) {

while (!paul.maulLeer()) paul.gib();

while (heidi.kornDa()) heidi.nimm();

}

}

Page 23: 29.09.2005 mit dem Java-Hamster-Modell Spielerisches ...€¦ · Spielerisches Erlernen der Programmierung mit dem Java-Hamster-Modell Dietrich Boles Universität Oldenburg INFOS

Java-Hamster-Modell Dietrich Boles (Uni Oldenburg) Seite 23

Objektorientierte Programmierung

Erweiterung des Befehlsvorrats (→ Vererbung)

class SammelHamster extends Hamster {

void sammle() {

while (this.kornDa()) this.nimm();

}

}

void main() {

SammelHamster paul = new SammelHamster(2,3,Hamster.OST,0);

paul.sammle();

while (paul.vornFrei()) {

paul.vor();

paul.sammle();

}

}

Page 24: 29.09.2005 mit dem Java-Hamster-Modell Spielerisches ...€¦ · Spielerisches Erlernen der Programmierung mit dem Java-Hamster-Modell Dietrich Boles Universität Oldenburg INFOS

Java-Hamster-Modell Dietrich Boles (Uni Oldenburg) Seite 24

Objektorientierte Programmierung

„Hamster-Kolonnen“ (→ Arrays)

void main() {Hamster[] tiere = new Hamster[Territorium.getAnzahlReihen()];

for (int i=0; i<tiere.length; i++)tiere[i] = new Hamster(i, 0, Hamster.OST, 0);

for (int i=0; i<tiere.length; i++) {while (tiere[i].vornFrei())tiere[i].vor();

}}

Page 25: 29.09.2005 mit dem Java-Hamster-Modell Spielerisches ...€¦ · Spielerisches Erlernen der Programmierung mit dem Java-Hamster-Modell Dietrich Boles Universität Oldenburg INFOS

Java-Hamster-Modell Dietrich Boles (Uni Oldenburg) Seite 25

Objektorientierte Programmierung

Zeichenketten (Strings)Kommunikation mit dem Nutzer (→ Ein- und Ausgabe)

void main() {Hamster paul =Hamster.getStandardHamster();

int anzahl =paul.liesZahl("Anzahl Drehungen?");

while (anzahl > 0) {paul.linksUm(); anzahl--;

} }

class Hamster {...void schreib(String zeichenkette) {...}String liesZeichenkette(String aufforderung) {...}int liesZahl(String aufforderung) {...}

}

Page 26: 29.09.2005 mit dem Java-Hamster-Modell Spielerisches ...€¦ · Spielerisches Erlernen der Programmierung mit dem Java-Hamster-Modell Dietrich Boles Universität Oldenburg INFOS

Java-Hamster-Modell Dietrich Boles (Uni Oldenburg) Seite 26

Objektorientierte Programmierung

„Hamster-Spiele“ (→ Polymorphie, Interfaces)interface Spieler {

int liefereNaechstenSpielzug();}class SchiedsrichterHamster extends Hamster {Spieler spielerA, spielerB, aktSpieler;SchiedsrichterHamster(Spieler a, Spieler b) {this.spielerA = a; this.spielerB = b;

}void spielen() {while (!spielEnde()) {int zug = aktSpieler.liefereNaechstenSpielzug();zugDurchfuehren(zug);aktSpieler = aktSpieler==spielerA?spielerB:spielerA;

}}...

}

Page 27: 29.09.2005 mit dem Java-Hamster-Modell Spielerisches ...€¦ · Spielerisches Erlernen der Programmierung mit dem Java-Hamster-Modell Dietrich Boles Universität Oldenburg INFOS

Java-Hamster-Modell Dietrich Boles (Uni Oldenburg) Seite 27

Objektorientierte Programmierung

class MenschHamster extends Hamster implements Spieler {int liefereNaechstenSpielzug() {return this.liesZahl("Zug?");

}}class SpielHamster extends Hamster implements Spieler {int liefereNaechstenSpielzug() {// Spielbaum aufbauen und „besten“ Zug liefern

}}void main() {Spieler mensch = new MenschHamster(...);Spieler hamster = new SpielHamster(...);SchiedsrichterHamster schiedsrichter =new SchiedsrichterHamster(mensch, hamster);

schiedsrichter.spielen();}

Page 28: 29.09.2005 mit dem Java-Hamster-Modell Spielerisches ...€¦ · Spielerisches Erlernen der Programmierung mit dem Java-Hamster-Modell Dietrich Boles Universität Oldenburg INFOS

Java-Hamster-Modell Dietrich Boles (Uni Oldenburg) Seite 28

Objektorientierte Programmierung

„Hamster-Fehler“ (→ Exceptions)

class Hamster {

void vor() throws MauerDaException {...}

void linksUm() {...}

void gib() throws MaulLeerException {...}

void nimm() throws KachelLeerException {...}

}

void main() {

Hamster paul = Hamster.getStandardHamster();

// paul laeuft zur naechsten Mauer

try {

while (true) paul.vor();

} catch (MauerDaException e) {};

}

Page 29: 29.09.2005 mit dem Java-Hamster-Modell Spielerisches ...€¦ · Spielerisches Erlernen der Programmierung mit dem Java-Hamster-Modell Dietrich Boles Universität Oldenburg INFOS

Java-Hamster-Modell Dietrich Boles (Uni Oldenburg) Seite 29

Objektorientierte Programmierung

„Hamster-Privatsphäre“ (→ Zugriffsrechte, Pakete)

package hamster.util;

import java.util.*;

public class AllroundHamster extends Hamster {

private int gesammelteKoerner;

...

}

Page 30: 29.09.2005 mit dem Java-Hamster-Modell Spielerisches ...€¦ · Spielerisches Erlernen der Programmierung mit dem Java-Hamster-Modell Dietrich Boles Universität Oldenburg INFOS

Java-Hamster-Modell Dietrich Boles (Uni Oldenburg) Seite 30

Parallele Programmierung

spielend gelernt

mit dem

Java-Hamster-Modell

(Teubner, 2006)

Page 31: 29.09.2005 mit dem Java-Hamster-Modell Spielerisches ...€¦ · Spielerisches Erlernen der Programmierung mit dem Java-Hamster-Modell Dietrich Boles Universität Oldenburg INFOS

Java-Hamster-Modell Dietrich Boles (Uni Oldenburg) Seite 31

Parallele Programmierung

Bisher (Programmierer steuert die Hamster):

void main() {Hamster paul = new Hamster(0, 0, Hamster.OST, 0);Hamster heidi = new Hamster(1, 0, Hamster.OST, 0);while (paul.vornFrei() && heidi.vornFrei()) {paul.vor();heidi.vor();

}while (paul.vornFrei()) {paul.vor();

}while (heidi.vornFrei()) {heidi.vor();

}}

Page 32: 29.09.2005 mit dem Java-Hamster-Modell Spielerisches ...€¦ · Spielerisches Erlernen der Programmierung mit dem Java-Hamster-Modell Dietrich Boles Universität Oldenburg INFOS

Java-Hamster-Modell Dietrich Boles (Uni Oldenburg) Seite 32

Parallele Programmierung

Nun (die Hamster werden eigenständig):

class Hamster extends java.lang.Thread { … }

class RHamster extends Hamster {

public void run() {

while (vornFrei()) vor();

}

}

void main() {

RHamster paul = new RHamster(0, 0, Hamster.OST, 0);

RHamster heidi = new RHamster(1, 0, Hamster.OST, 0);

paul.start();heidi.start();

}

Page 33: 29.09.2005 mit dem Java-Hamster-Modell Spielerisches ...€¦ · Spielerisches Erlernen der Programmierung mit dem Java-Hamster-Modell Dietrich Boles Universität Oldenburg INFOS

Java-Hamster-Modell Dietrich Boles (Uni Oldenburg) Seite 33

Parallele Programmierung

Selbstständigkeit (→ Threads)

Hamster-Kommunikation (→ gemeinsame Objekte)

Merkwürdige Fehler (→ Synchronisation)

Abstimmung zwischen Hamstern (→ wait, notify)

„Aushungern“ von Hamstern (→ Deadlocks)

Page 34: 29.09.2005 mit dem Java-Hamster-Modell Spielerisches ...€¦ · Spielerisches Erlernen der Programmierung mit dem Java-Hamster-Modell Dietrich Boles Universität Oldenburg INFOS

Java-Hamster-Modell Dietrich Boles (Uni Oldenburg) Seite 34

Parallele Programmierung

Realisierung und Visualisierung klassischer Synchronisationsprobleme

Philosophen-Problem (→ Philosophen-Hamster)Semaphor-Konzept (→ Semaphor-Hamster)Erzeuger-Verbraucher-Problem (→ Buffer-Kachel)

Page 35: 29.09.2005 mit dem Java-Hamster-Modell Spielerisches ...€¦ · Spielerisches Erlernen der Programmierung mit dem Java-Hamster-Modell Dietrich Boles Universität Oldenburg INFOS

Java-Hamster-Modell Dietrich Boles (Uni Oldenburg) Seite 35

Algorithmen und Datenstrukturen

spielend gelernt

mit dem

Java-Hamster-Modell

(eBook, Version 1.0)

Page 36: 29.09.2005 mit dem Java-Hamster-Modell Spielerisches ...€¦ · Spielerisches Erlernen der Programmierung mit dem Java-Hamster-Modell Dietrich Boles Universität Oldenburg INFOS

Java-Hamster-Modell Dietrich Boles (Uni Oldenburg) Seite 36

Algorithmen und Datenstrukturen

Algorithmenvisualisierung/-animation mit dem Java-Hamster-Modell

SortieralgorithmenSuchalgorithmenBäumeGraphenMustererkennungKompressionsalgorithmen...

Page 37: 29.09.2005 mit dem Java-Hamster-Modell Spielerisches ...€¦ · Spielerisches Erlernen der Programmierung mit dem Java-Hamster-Modell Dietrich Boles Universität Oldenburg INFOS

Java-Hamster-Modell Dietrich Boles (Uni Oldenburg) Seite 37

Objektorientierte Softwareentwicklung

spielend gelernt

mit dem

Java-Hamster-Modell

(eBook, Version 1.0)

Page 38: 29.09.2005 mit dem Java-Hamster-Modell Spielerisches ...€¦ · Spielerisches Erlernen der Programmierung mit dem Java-Hamster-Modell Dietrich Boles Universität Oldenburg INFOS

Java-Hamster-Modell Dietrich Boles (Uni Oldenburg) Seite 38

Objektorientierte Softwareentwicklung

Hamster-Modell für „Programmieren im Großen“ nur bedingt geeignet

Veranschaulichung der OO-Modellierung anhand der Entwicklung von Hamster-Spieleprogrammen

OO-Analyse

OO-Entwurf

UML

Schwerpunkt Entwurfsmuster

Page 39: 29.09.2005 mit dem Java-Hamster-Modell Spielerisches ...€¦ · Spielerisches Erlernen der Programmierung mit dem Java-Hamster-Modell Dietrich Boles Universität Oldenburg INFOS

Java-Hamster-Modell Dietrich Boles (Uni Oldenburg) Seite 39

Objektorientierte Softwareentwicklung

Framework für 2-Personen/Hamster-Strategie-SpieleImplementierung bestimmter Spiele

KalahTicTacToeAlapoReversi4-Gewinnt...

Hamster-Modell dient zur Visualisierung (anstelle von Swing/AWT)

Page 40: 29.09.2005 mit dem Java-Hamster-Modell Spielerisches ...€¦ · Spielerisches Erlernen der Programmierung mit dem Java-Hamster-Modell Dietrich Boles Universität Oldenburg INFOS

Java-Hamster-Modell Dietrich Boles (Uni Oldenburg) Seite 40

Objektorientierte Softwareentwicklung

Klassendiagramm für TicTacToe-Spiel

TTTSpielzug......

TTTSpielerist_spieler_a

liefere-Naechsten-Spielzug()

...

TTTFigur......

TTTBrett...... TTTRegeln

...

...

TTTSpiel......

gehört

kennt

1

1

10..9

1

2

1

1

TTTProgramm......

ausführen

regelkonform

Page 41: 29.09.2005 mit dem Java-Hamster-Modell Spielerisches ...€¦ · Spielerisches Erlernen der Programmierung mit dem Java-Hamster-Modell Dietrich Boles Universität Oldenburg INFOS

Java-Hamster-Modell Dietrich Boles (Uni Oldenburg) Seite 41

Objektorientierte Softwareentwicklung

Sequenzdiagramm für TicTacToe-Spiel

spielen()

liefereNaechsten-Spielzug(zug)

...

spielzugOK(akt_spieler, zug)

[antwort = true] fuehreSpielzugAus (akt_spieler, zug)

gebeSpielbrettAus()

zug

antwort

akt_spieler: TTTSpieler

tictactoe: TTTSpiel

regeln: TTTRegeln

brett: TTTBrett

...

Page 42: 29.09.2005 mit dem Java-Hamster-Modell Spielerisches ...€¦ · Spielerisches Erlernen der Programmierung mit dem Java-Hamster-Modell Dietrich Boles Universität Oldenburg INFOS

Java-Hamster-Modell Dietrich Boles (Uni Oldenburg) Seite 42

Andere Ansätze

Turtle-Grafik (Logo)

Karel the Robot

Kara der Marienkäfer (endliche Automaten)

Stifte und Mäuse (objektorientierter Ansatz)

Robocode (Ansatz für Fortgeschrittene)

BlueJ (Visualisierung der Modellierung!)

Page 43: 29.09.2005 mit dem Java-Hamster-Modell Spielerisches ...€¦ · Spielerisches Erlernen der Programmierung mit dem Java-Hamster-Modell Dietrich Boles Universität Oldenburg INFOS

Java-Hamster-Modell Dietrich Boles (Uni Oldenburg) Seite 43

Erfahrungen und Fazit

Einsatz seit 9 Jahren im Programmierkurs Java der Uni OldenburgViel positives FeedbackViele kreative EigenleistungenVerbesserte Leistungen ?Mischung Hamster-Programme / richtige Java-Programme notwendig !!!

www.java-hamster-modell.dewww.programmierkurs-java.de

Page 44: 29.09.2005 mit dem Java-Hamster-Modell Spielerisches ...€¦ · Spielerisches Erlernen der Programmierung mit dem Java-Hamster-Modell Dietrich Boles Universität Oldenburg INFOS

Java-Hamster-Modell Dietrich Boles (Uni Oldenburg) Seite 44

Hamster-Gedicht

Wer irrt so spät im Kachelwald,es ist der Hamster und ihm ist kalt.Ob rechts ob links er hat die Wahl,das Korn zu suchen ist seine Qual.So läuft er ziellos durch die Gänge,im Nacken stets die JAVA-Zwänge.Und bis er hat das Korn gefunden,dauert es oft viele Stunden.Dann das Ergebnis all der Müh und Not: Das Feld ist voll, der Hamster tot!!!