Seit kurzem gibt es bei dem Bäcker gegenüber unserer Schule die Möglichkeiten Punkte zu sammeln. Immer, wenn man ein Eis (?) kauft, bekommt man einen Punkt. Hat man 10 Punkte zusammen, gibt es ein Eis umsonst.

Jetzt ist das nichts besonderes, wenn es sich hier wie üblich um Karten handeln würde. Es handelt sich aber um die digitale Version. Der Ablauf sieht folgendermaßen aus:

  1. App herunterladen
  2. Code des Geschäftes eingeben – man kann mit der App auch Punkte von verschiedenen Geschäften eingeben.
  3. Bei jedem Eiskauf hält die Verkäuferin eine laminierte Unterlage mit einem QR-Code hoch, der mit der App gescannt wird. Man hat dann einen Punkt gesammelt.

Es ergeben sich somit folgende mögliche Aufgaben, die sich zum Beispiel auch mit dem App-Inventor vom MIT fürs Android-Handies umsetzen lassen:

Aufgabe 1 (App-Version, 10./11. Klasse)

Erstelle eine App, mit der QR-Codes eingelesen und gezählt werden können. Bei 10 Punkte bekommt man eine Nachricht.

Aufgabe 2 (Java/Python/…-Version, App-Version, 11. Klasse)

Erstelle ein Programm, mit dem Punkte eines Geschäftes zählen kann. Jeder Punkt soll dabei durch das Logo der Geschäfts dargestellt sein. Ab einem bestimmten Wert bekommt man eine Nachricht.

Ziel der zweiten Aufgabe ist es, die Schüler in die Situation einer Software-Firma zu versetzen. Man hat eine Produkt-Idee, die man nun an verschieden Firmen verkaufen möchte und damti ohne viele Aufwand personalisierbar machen möchte. Dabei kann man wunderbar nochmal über die Vorteile von Entwurfsmustern, hier vor allem MVC, sprechen.

Wie leicht festzustellen war, ist der Ablauf der Original-App nicht sehr sinnvoll. Fotografiert ein Schüler den QR-Code statt ihn nur zu scannen, könne alle Mitschüler den QR-Code von seinem Handy direkt scannen. Es gibt zwar eine Beschränkung auf maximal zwei QR-Codes pro Tag, aber pro Woche ein Eis umsonst ist ja auch nicht schlecht. Später wurde dann noch festgestellt, dass die Anzahl der QR-Codes in einer einfachen Text-Datei gespeichert werden. Also wurde die Text-Datei von Hand geändert und schon hat man sein Eis. Somit ergibt sich folgende neue Aufgabe:

Aufgabe 3 (12. Klasse)

Entwerfe eine App zu obiger Situation (Erweitertes Klassendiagramm, Sequenzdiagramm, ..) die verhindert, dass ein Kunde Punkte sammeln kann ohne ein Produkt zu kaufen.

Die Aufgabe ist gar nicht so einfach zu lösen. Meine Schüler hatten unterschiedliche Ansätze, die meist auf recht komplizierten Client-Server-Ansätzen basierten, die gar nicht sinnvoll zu realisieren wären.