Java-Hamster-Modell
# Java-Hamster-Modell

Das Java-Hamster-Modell gehört zu den Minisprachen. Ziel des Modells ist es, Programmieranfängern das Erlernen grundlegender Programmierkonzepte durch den Einsatz spielerischer Mittel zu erleichtern.

Das Modell orientiert sich an der Programmiersprache Java, ist aber grundsätzlich sprachunabhängig. Mit einem minimalen Satz an Befehlen sollen Hamster-Programme geschrieben werden, die einen virtuellen Hamster durch eine Landschaft steuern und ihn Aufgaben lösen lassen. Grundlage des Modells ist der schrittweise Ablauf, der Programmierkonzepte aufeinander aufbauend einführt und diese durch zahlreiche Beispiele demonstriert.

Eine spezielle Entwicklungsumgebung, der sogenannte Hamster-Simulator, hilft bei der Entwicklung und visualisiert den Ablauf der selbstgeschriebenen Hamster-Programme. Er wurde bewusst an bekannte Entwicklungsumgebungen für Java angelehnt und steht kostenlos zur Verfügung.

## Imperative Programmierung

Im ersten Teil des Modells werden alle wesentlichen Konzepte der imperativen Programmierung schrittweise motiviert und eingeführt, insbesondere Anweisungen, Kontrollstrukturen, Prozeduren, Funktionen, Typen, Variablen, Ausdrücke, Parameter, Rekursion und der Programmentwurf.

Mit einigen Grundbefehlen wie linksUm und nimm und Abfragen wie vornFrei, kornDa oder maulLeer steuert man den Hamster in einer vorgegebenen Landschaft. Der Anwender lernt, aus diesen Grundelementen Prozeduren zusammenzustellen, die komplexere Befehle erlauben.

### Befehlsübersicht

| Befehle | Beschreibung | Typ |
| - | - | - |
| vor | Der Hamster geht genau 1 Feld weiter. | void |
| linksUm | Der Hamster dreht sich um 90° nach links. | void |
| nimm | Der Hamster nimmt ein Korn auf. | void |
| gib | Der Hamster legt ein Korn ab. | void |
| Testbefehl | Beschreibung | Typ |
| vornFrei | Liefert TRUE, falls der Hamster nicht vor einer Wand steht. | boolean |
| kornDa | Liefert TRUE, falls das Feld, auf dem der Hamster gerade steht, mindestens ein Korn enthält. | boolean |
| maulLeer | Liefert TRUE, falls der Hamster kein Korn im Maul hat. | boolean |

## Objektorientierte Programmierung

Um das Konzept der objektorientierten Programmierung zu erklären, können nun mehrere Hamster erzeugt werden. Über Vererbung kann die normale Hamsterklasse erweitert werden.

Zum Schluss lernen die Anwender, wie sie den Hamstern das Schach- oder Reversispielen beibringen können. So soll gezeigt werden, wie die zuvor vorgestellten Konzepte auf komplexe Probleme angewandt werden können.

## Parallele Programmierung

Während die Hamster in der objektorientierten Programmierung explizit durch den Programmierer gesteuert werden, bilden sie in der parallelen Programmierung selbstständige Einheiten, die bei der Lösung von gestellten Aufgaben kooperieren und sich dabei koordinieren und synchronisieren müssen. Die Klasse Hamster, von der Hamster erzeugt werden, ist von der Klasse Thread abgeleitet, so dass bei der parallelen Programmierung mit dem Java-Hamster-Modell alle Eigenschaften und Funktionen der Thread-Programmierung genutzt werden können.

