Zwei Arten von Anschaulichkeit

Unser Informatik-Buch (10) versucht, wie andere auch, Anschaulichkeit in Java dadurch zu erreichen, dass man mit grafischen Klassen wie RECHTECK und KREIS arbeitet. (Programmierumgebung: BlueJ.)
In Java sieht das so aus:

public class Rechteck {
   //Attribute
   private int laenge;
   private int breite;
   private int xPosition;
   private int yPosition;
   private String fuellfarbe;
   private boolean istSichtbar;
}

Das heißt in Java, dass ein Objekt der Klasse Rechteck die Attribute Länge, Breite, Höhe, Füllfarbe haben soll, ebenso auch eine x- und eine y‑Position, damit man es später in einem Koordinatensystem zeichnen kann. Als Werte sind meist nur ganze Zahlen erlaubt, nur die Farbe soll als Wort dastehen (also “blue”). Und außerdem gibt es noch ein Attribut istSichtbar, das nur die Werte wahr oder falsch annehmen kann.

Dazu kommt dann zum Beispiel noch eine Methode, mit der man die Breite des Rechtecks ändern kann:

public void breiteSetzen(int neueBreite){
   loeschen();
   breite = neueBreite;
   zeichnen();
}

Wenn man die Methode zeichnen() aufruft, dann geht ein Zeichenfenster auf, und darin ist dann das Objekt. (Im Beispiel sind es zwei Rechtecke.)

bluej

Nur: Das, was man sieht, sind eben mitnichten die Rechtecke. Das haben meine Schüler auch gemerkt, als sie selbst zusätzliche Methoden schreiben mussten. Sie haben darin die Attributwerte eines Rechteck-Objekts geändert (zum Beispiel Höhe und Breite vertauscht), und die Zeichnung ist dennoch die gleiche geblieben. Das liegt daran, dass man, wie im Beispiel oben, vor dem eigentlichen Methodeninhalt erst die alte Zeichnung löschen muss, und nach dem eigentlichen Methodeninhalt die Zeichnung wieder neu erstellen muss. Meine Schüler hat das verwirrt. Dass die Methode tatsächlich funktioniert, auch wenn man das Dingens nicht neu zeichnen lässt, sieht man an dieser praktischen Einrichtung von BlueJ, mit der man auf einen Blick den aktuellen Zustand, also alle aktuellen Attributwerte, eines Objekts ablesen kann.

bluej2

Inzwischen arbeite ich nicht mehr mit diesen grafischen Klassen, und werde das beim nächsten Mal noch weiter einschränken. Für mich ist das nicht anschaulich. Ich verstehe den Drang, die Objekte in irgendeiner Form “sehen” zu können, und sei es nur als gezeichnete Repräsentation. Aber meine Sichtweise ist anders. Das vorletzte Arbeitsblatt begann so:

In einem Computerspiel – vorerst leider ohne Joystick und Monitor – sollen Boxkämpfe simuliert werden.
Ein typischer Boxer soll einen Namen haben, ein Gewicht, und die zwei Werte Stärke und Geschwindigkeit. Außerdem soll er eine bestimmte Zahl von Lebenspunkten haben.
Bei jedem Boxer soll gespeichert werden, wie viele Siege er schon errungen hat, wieviel Niederlagen es gab und ob er Weltmeister ist oder nicht.
Lege dazu eine geeignete Klasse in BlueJ an.

Und danach kriegt die Klasse Boxer noch weitere Methoden, und wird später mit der Klasse Trainer zusammenarbeiten und solche Sachen. Zu sehen sein wird nichts, außer eine Nachricht in Form von Textausgabe: Max hat jetzt noch 2 Lebenspunkte. Denn echte grafische Programmierung ist zu schwer. Man kann die Zustandsänderungen von Boxern und Trainer nur über die Textausgabe erfahren, oder indem man sich die aktuelle Zustandskarte eines Objekts, also die aktuellen Attributwerte, so wie oben zeigen lässt:

bluej3

Ist das jetzt abstrakter oder konkreter, anschaulicher oder weniger anschaulich? Nun bin ich ja ein eher textgesteuerter Mensch, siehe auch meine anderen Fächer. Für mich reichen Wörter, um etwas anschaulich und vorstellbar zu machen, und das manchmal besser als tatsächlich Ansehbares. Um den Boxer entsteht eine ganze Welt von weiteren möglichen Attributen, Ideen für Methoden und von weiteren Klassen.

Die Aufgaben im Buch sind meist mathematischer Natur. Schon auch schöne Aufgaben. Aber anschaulich finde ich vor allem den Boxer und solche Klassen.

Als Einstieg in Java die Lösung der Aufgabe oben:

public class Boxer {
   // Attribute
   private int gewicht;
   private int staerke;
   private int geschwindigkeit;
   private int lebenspunkte;
   private boolean weltmeister;
   private int siege;
   private int niederlagen;
   private String name;
}

Fußnote 1: In der 6. und 7. Klasse klappt das mit den Grafiken gut, da will ich nicht darauf verzichten.
Fußnote 2: Für die Komposition/Aggregation muss ich vielleicht auf Auto- oder noch besser: Wagenrennen in der Antike zurückgreifen. Vier Pferde bilden ein Gespann, dazu ein Wagen und ein Lenker, machen einen Wettkampfteilnehmer. Ich werde berichten.

7 Antworten auf „Zwei Arten von Anschaulichkeit“

  1. Wenn du mit der Reihe zuende bist, sollte manches davon unbedingt ins ZUM-Wiki.
    Du brauchst es ja nicht groß zu formatieren und wikifizieren. Das können andere ja noch nachholen.
    Aber so viele Leser du auch hast, im ZUM-Wiki finden es doch manche, die deinen Blog noch nicht kennen. Und es ist einfach zu informativ, als dass man es nicht Informatiklehrern allgemein anbieten sollte.

  2. Ich versuche daran zu denken. In zwei Wochen ist wieder Luft, im Moment ist drunter und drüber an der Schule – Zeugnis naht. Bei Wikis habe ich immer das Gefühl, anderen etwas bieten, mich anstrengen zu müssen. Beim Blog schreibe ich nur für mich, freue mich über Gäste und bemühe mich schon auch darum, ihnen den Aufenthalt hier angenehm zu gestalten. Man will ja Gastgeber sein. Aber da schreibe ich unbekümmerter drauflos.

  3. Auch ich sehe in der größeren Lockerheit den Vorzug des Blogs. Deine Rollenspielerfahrungen, deine vielseitigen Interessen an Comics, an für die Schule viel zu anspruchsvoller Literatur usw. machen deinen Bolg auch gerade so attraktiv.
    Aber das ZUM-Wiki ist nicht die Wikipedia, geht lockerer mit der Form um, wenn man nur den Eindruck hat, dass andere von dem Beitrag profitieren können. Und, wie gesagt, im ZUM-Wiki gibt’s Leute, die beim Wikifizieren zugreifen könnten, z.B. mich (auch wenn ich dort anders heiße). Zum Glück auch richtig Sachkompetente und nicht nur welche wie mich, die eigentlich nie wirklich programmiert haben.

  4. Gestern hat mir der Kollege mitgeteit, dass die Überschrift “Zwei Arten von Anschaulichkeit” ja wohl ironisch gemeint sein müsse. Stimmt, wenn man gerade nicht in Java drinsteckt, sieht wirklich alles nicht sehr anschaulich aus.

  5. Hi,

    ja das Problem mit dem grafischen Programmieren kenne ich. Hast du schon einmal etwas von Alice (alice.org) gehört? Alice wurde an der Carnegie Mellon Universität entwickelt und soll den Einstieg in die Programmierung erleichtern. Alice stützt sich auf die anschauliche grafische Ausgabe. Man startet mit einer virtuellen Welt die man mit verschiedenen (graphischen) Objekten bestücken kann. Diese Objekte (z.B. Hund, Mensch, …) kann man dann mittels Methoden steuern.

    Die Schüler sollen dann anhand eines Storyboards (z.B. “Eisläuferin soll sich 3 mal um die eigen Achsen drehen”) die Grundstrukturen der Programmierung erlernen (Schleifen, Klassen, Objekte, Methoden, if-then-else Abfragen usw.)

    In der Alice 3.0 Version, die wahrscheinlich diesen Sommer erscheint, soll es dann sogar möglich sein den Alice-Code in kompilierbaren Java-Code konvertieren zu lassen, so dass die Schüler 1:1 sehen, wie die Implementierung in Java zum jeweiligen Programm aussieht.

    Ok, dafür ist es jetzt vielleicht schon ein bisschen spät, aber du kannst es dir ja mal anschauen. Für den Einstieg finde ich es nicht schlecht.

  6. Alice kenne ich, damit gebe ich gerne in der 6. Klasse Beispiele, wie Objekte noch aussehen können und was die für Methoden haben. Zum Programmieren habe ich es noch nie verwendet, schon mal deshalb, weil es in unserem Schulnetz nicht lief. Mal schauen, wir haben jetzt ein neues Netz.

    Ich kann mich erinnern, schon viele Jahre auf die angekündigte neue Version zu warten, ich nehme an, das war die 3.0. Das mit Java klingt aber vielversprechend.

  7. Die textbasierte Version kann man auch mit Bären machen (allerdings in php): “http://devzone.zend.com/node/view/id/638”
    Gerade Vererbung wird so sehr anschaulich, Stichwort “PolarBear” ;-)

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.