Gestern: Kara
Steuerung:
Endliche
Automaten
Heute: JavaKara
Steuerung:
Programmiersprache Java
Java ist „objektorientiert“
Zentrales Element: Objekt
kara
Bett
Stuhl
world
Tisch
Objekte: Befehle und Sensoren
Jedes Objekt stellt Methoden zur Verfügung
Objekt
Methodenaufruf
Resultat
meinTisch.setColor(rot);
kara.move();
(...)
kara.treeFront()
(...)
true (ja) /
false (nein)
Was das Objekt „kara“ alles kann
Anweisungen
kara.move()
Kara läuft einen Schritt vorwärts
kara.turnRight()
Kara dreht sich an Ort und Stelle nach rechts
kara.turnLeft()
Kara dreht sich nach links
kara.putLeaf()
Kara legt ein Kleeblatt ab
kara.removeLeaf()
Kara nimmt ein Kleeblatt auf
Sensoren, um die Umgebung zu überprüfen
kara.treeFront()
Gibt es einen Baum auf dem Feld vor Kara?
kara.treeLeft()
Gibt es einen Baum auf dem Feld links von
Kara?
kara.treeRight()
Gibt es einen Baum auf dem Feld rechts von
Kara?
kara.mushroomFront()
Gibt es einen Pilz auf dem Feld vor Kara?
kara.onLeaf()
Steht Kara auf einem Kleeblatt?
Kontrollstrukturen
kara.putLeaf();
Befehl
{
kara.putLeaf();
kara.move();
kara.turnRight();
kara.move();
kara.turnLeft();
}
Sequenz
Befehl
Befehl
Befehl
Befehl
Befehl
while (!kara.onLeaf()) do
{
kara.putLeaf();
kara.move();
kara.turnRight();
kara.move();
kara.turnLeft();
}
Wiederholung
Sequenz
Befehl
Befehl
Befehl
Befehl
Befehl
Verzweigung
if (!kara.treeFront())
{
while (!kara.onLeaf()) do Wiederholung
Sequenz
{
Befehl
kara.putLeaf();
Befehl
kara.move();
Befehl
kara.turnRight();
Befehl
kara.move();
Befehl
kara.turnLeft();
}
}
Programme in JavaKara:
„Schablone“ ist vorgegeben
import javakara.JavaKaraProgram;
public class SchrittVorwaerts extends
JavaKaraProgram {
public void myProgram() {
// hier kommt das Hauptprogramm hin
kara.move();
}
}
Zweites Programm
import javakara.JavaKaraProgram;
public class GeheUmBaumHerum extends JavaKaraProgram {
public void myProgram() {
// hier kommt das Hauptprogramm hin
kara.turnLeft();
kara.move();
kara.turnRight();
kara.move();
kara.move();
kara.turnRight();
kara.move();
kara.turnLeft();
}
}
Identisch!
Geschickter: Neue Methode
import javakara.JavaKaraProgram;
public class GeheUmBaumHerum extends JavaKaraProgram {
void viertelDrehung() {
kara.move();
kara.turnRight();
kara.move();
}
public void myProgram() {
// hier kommt das Hauptprogramm hin
kara.turnLeft();
viertelDrehung();
viertelDrehung();
kara.turnLeft();
}
}
Unser Koch versteht nur Schwedisch
„Ägg i blå sås
Detta milt exotiska recept ingick i
"Smekmånadens Kokbok", vilken
Kooperativa Förbundet distribuerade till
nygifta under 1930-talet. En verklig
funkis-rätt! Var inte oroliga för
metylenblått, den akuta giftigheten är
låg.“
Wir brauchen einen Übersetzer!
Bei Programmiersprachen heisst ein solcher Übersetzer
Kompiler
Kompilieren
Um Kara mit Java zu füttern, muss der Text mit dem
Java-Programm kompiliert werden
GeheUmBaumHerum.java
01001001101110101111010
10010100111000010110111
10100110101011100
GeheUmBaumHerum.class
??
Compiler
Nochmals die Schablone für
JavaKara-Programme
import JavaKaraProgram;
public class SchrittVorwaerts extends JavaKaraProgram {
public void myProgram() {
// hier kommt das Hauptprogramm hin
kara.move();
}
}
McDonalds
machen
BigMacs
Klassen definieren Datentypen:
McDonalds machen Burger. JavaKaraProgramme machen myProgram.
class McDonalds {
class SchrittVorwaerts extends
JavaKaraProgram {
McDonalds(Ort) { … }
public void myProgram() {
kara.move();
}
BigMac gibMirBigMac() {
return machNenBigMac();
}
}
}
Was macht McDonalds?
McDonalds macZurich = new
McDonalds(zurich);
Was macht JavaKara?
JavaKaraProgram program = new
SchrittVorwaerts();
macZurich.gibMirBigMac();
program.myProgram();

Powerpoint