s n h m r u

Minimallogo des digitalen Schulbuchs inf-schule.de. Schriftzug in Zustandsübergangsdiagramm eines endlichen Automaten.

s n h m r u
i

Tooltest — alle Zuschnitte

Testseite für Autorinnen und Autoren. Sie zeigt alle Zuschnitte des Werkzeugs nebeneinander — dieselbe Reihe wie die Entwicklungsseite im Git-Repository, hier aber so eingebunden, wie es eine Buchseite tut: über Features: oopython in der inhalt.txt und je Werkzeug ein div mit data-config. Unter jedem Werkzeug lässt sich der Zuschnitt aufklappen, mit dem es eingebunden ist.

Das Werkzeug lädt Pyodide, wenn es in den Sichtbereich kommt — und nur einmal je Seite, alle Werkzeuge einer Seite teilen sich die Laufzeit. Das erste Laden dauert je nach Verbindung einige Sekunden; danach starten die übrigen Werkzeuge sofort.

Die Schlüssel im data-config

Alles, was fehlt, bekommt seinen Vorgabewert. Die Kette lautet Vorgabe → Profil → Einzelangaben: Ein Profil überschreibt die Vorgabe, eine Einzelangabe im selben data-config überschreibt das Profil.

Schlüssel Vorgabe Wirkung
Inhalt
titel Überschrift des Werkzeugs
dateien [] eine Python-Datei ("konto.py") oder eine Liste (["wuerfel.py", "spiel.py"]) aus dem Ordner der Seite; Pfade gelten relativ zur Seite
quelltext statt dateien: das Programm direkt im Attribut, als Datei projekt.py
sichtbareKlassen alle Liste der Klassennamen, die im Diagramm erscheinen
profil eines der fünf Profile, siehe unten
laden "sichtbar" "sichtbar" lädt beim Scrollen, "klick" erst auf Knopfdruck
Bereiche
diagramm true Klassendiagramm — ohne es gibt es keinen Weg, ein Objekt zu erzeugen
editor true — Editor mit Syntaxhervorhebung
objektbank true
inspektor true (Doppelklick auf eine Objektkarte)
konsole true von print
codepad true Code-Pad — derselbe Namensraum wie die
hauptprogramm true — Editor mit Startknopf; false blendet ihn aus, ein Text oder ein Dateipfad ("main.py") gibt das Programm vor. Anweisungen außerhalb der Klassen wandern beim Laden ohnehin dorthin
codespiegel true — zeigt zu jeder Mausaktion den zugehörigen Python-Code
dateiverwaltung true Reiterleiste für mehrere Dateien
quelltextAnzeigen false Quelltext zum Lesen — nur sinnvoll, wenn der Editor aus ist
Darstellung
detailtiefe "merkmale" "namen" nur Klassennamen, "merkmale" Attribute und Methoden
interneZeigen false Elemente mit Unterstrich und Dunder-Methoden zeigen
objektnummern true #1, #2 … — macht sichtbar, wenn zwei Namen dasselbe Objekt meinen
Rechte
bearbeiten true Quelltext bearbeiten
zuruecksetzen true auf die Vorgabe zurücksetzen
objekteVerwalten true Objekte umbenennen und entfernen
dateienVerwalten true Dateien anlegen und löschen
schalterZeigen true Lernende dürfen die Darstellung selbst umstellen
speichern true Arbeitsstand im Browser sichern

Ein abgeschalteter Bereich ist auch nicht über Umwege erreichbar — weder über ein Menü noch über Doppelklick oder Tastenkürzel.

Die fünf Profile

Profil Name Gedanke Abweichung von der Vorgabe
objekte-benutzen Objekte benutzen Erste Stunde: Objekte erzeugen und Methoden aufrufen. Sonst nichts. editor, inspektor, konsole, codepad, hauptprogramm, dateiverwaltung aus; detailtiefe „namen“; objektnummern, schalterZeigen, bearbeiten aus
zustand-verstehen Zustand verstehen Mit Inspektor und Ausgabe — der Blick geht ins Objekt, noch nicht in den Code. editor, codepad, hauptprogramm, dateiverwaltung aus; schalterZeigen, bearbeiten aus
selbst-programmieren Selbst programmieren Mit Editor und Code-Pad, eine Datei. dateiverwaltung, dateienVerwalten aus
mehrere-klassen Mehrere Klassen Modularisierung: mehrere Dateien, die sich gegenseitig importieren. keine Abweichung von der Vorgabe
modellierung Modellierung Voller Umfang mit internen Elementen — Oberstufe, UML, Datenkapselung. interneZeigen an

Schreibweise in der inhalt.txt

Der übliche Weg: Die Python-Dateien liegen im Ordner der Seite, neben der inhalt.txt, und werden unter dateien mit ihrem Namen genannt — eine einzelne Datei oder eine Liste. Der Dateiname ist zugleich der Modulname, unter dem eine Datei aus einer anderen importiert werden kann.

<div class="oopython" data-config='{"titel": "Würfelspiel", "dateien": ["wuerfel.py", "spiel.py"], "profil": "mehrere-klassen"}'></div>

Für ein kurzes Programm geht es auch ohne Datei, mit quelltext direkt im Attribut. Dann gilt: Zeilenumbrüche als \n, Anführungszeichen im Quelltext als \", und weil das Attribut in einfachen Anführungszeichen steht, darf der Quelltext keine einfachen Anführungszeichen enthalten — in Python also durchgehend doppelte verwenden.

<div class="oopython" data-config='{"titel": "Ampelsteuerung", "quelltext": "class Ampel(object):\n    def __init__(self):\n        self.farbe = \"rot\"\n\n    def weiter(self):\n        if self.farbe == \"rot\":\n            self.farbe = \"gruen\"\n        else:\n            self.farbe = \"rot\"\n", "profil": "objekte-benutzen"}'></div>

In beiden Fällen steht das data-config in einer Zeile; ein Umbruch im Attribut zerlegt das JSON, weil der Text durch KirbyText läuft.

Bereichsmarken im Aufgabentext

Jeder Bereich des Werkzeugs trägt sein Sinnbild im Kopf. Dasselbe Sinnbild lässt sich mitten in einen Satz setzen, damit „öffne die “ nicht gesucht werden muss. Dafür genügt ein leeres span:

Erzeuge unter <span class="oopy-marke" data-bereich="klassen"></span> ein Konto und
sieh es dir in der <span class="oopy-marke" data-bereich="objektbank"></span> an.

Gefüllt wird es beim Seitenaufbau. Voraussetzung ist nur Features: oopython — ein Werkzeug muss auf der Seite nicht unbedingt stehen, aber das Feature schon.

data-bereich zeigt ebenfalls erlaubt
diagramm klassen, klassendiagramm
editor quelltext
hauptprogramm
objektbank bank
ergebnis
konsole ausgabe
inspektor
codepad ausprobieren, code-pad
codespiegel protokoll, spiegel

Steht im span schon ein Wort, bleibt es stehen und bekommt nur das Sinnbild davor. Das braucht man oft, weil der deutsche Satz beugt oder ein anderes Wort verlangt als der Bereichskopf: <span class="oopy-marke" data-bereich="diagramm">Klassendiagramm</span> ergibt Klassendiagramm, data-bereich="codespiegel" mit dem Wort Code-Spiegels ergibt Code-Spiegels.

Ein unbekannter Bereichsname lässt den Satz unverändert stehen und meldet sich auf der Browserkonsole — ein Tippfehler reißt also keine Lücke in die Aufgabe.

Wofür nicht: Eine Marke bezeichnet einen Ort im Werkzeug. Wenn im Text das Fachkonzept gemeint ist — „stell die Klasse per Hand mit einem Klassendiagramm dar“ — gehört dort keine Marke hin. Auf der Übungsseite stehen beide Bedeutungen im selben Satz; genau dort trägt das Sinnbild den Unterschied.

A — Volles Werkzeug

Alle Bereiche sichtbar, alle Rechte vergeben, Schalter für die Lernenden freigegeben. So sieht das Werkzeug aus, wenn nur eine Datei angegeben ist — hier zusätzlich mit quelltextAnzeigen, damit die Leseansicht neben dem Editor zu sehen ist. Die Datei konto.py liegt im Ordner dieser Seite.

data-config dieses Werkzeugs
{
  "titel": "Bankkonten",
  "quelltextAnzeigen": true,
  "dateien": "konto.py"
}

B — Profil „Objekte benutzen“

Erste Stunde: Objekte erzeugen und Methoden aufrufen, sonst nichts. Das Diagramm zeigt nur Klassennamen; , , und Code-Pad sind weg, und die Lernenden können nichts umstellen. Übrig bleiben Diagramm, und . Hier steht der Quelltext ausnahmsweise direkt im Attribut (quelltext).

data-config dieses Werkzeugs
{
  "titel": "Ampelsteuerung",
  "profil": "objekte-benutzen",
  "quelltext": "…"
}

C — Profil „Zustand verstehen“

Mit und : Der Blick geht ins Objekt (Doppelklick auf eine Objektkarte), aber noch nicht in den Code. Attribute und Methoden stehen im Diagramm.

data-config dieses Werkzeugs
{
  "titel": "Bankkonten",
  "profil": "zustand-verstehen",
  "dateien": [
    "konto.py"
  ]
}

D — Profil „Selbst programmieren“

und Code-Pad, eine Datei. Das Diagramm folgt dem Quelltext schon beim Tippen; ausgeführt wird auf Knopfdruck. Das Code-Pad benutzt denselben Namensraum wie die .

data-config dieses Werkzeugs
{
  "titel": "Bankkonten",
  "profil": "selbst-programmieren",
  "dateien": [
    "konto.py"
  ]
}

E — Profil „Mehrere Klassen“ — zwei Dateien

spiel.py importiert die Klasse aus wuerfel.py. Beide Dateien liegen als Reiter nebeneinander, beide Klassen stehen im Diagramm. dateien ist hier eine Liste aus zwei Pfaden. Spiel.namen_erfragen() zeigt, wie input() in einem Dialogfenster fragt.

data-config dieses Werkzeugs
{
  "titel": "Würfelspiel",
  "profil": "mehrere-klassen",
  "dateien": [
    "wuerfel.py",
    "spiel.py"
  ]
}

F — Profil „Modellierung“

Voller Umfang, zusätzlich mit internen Elementen: Attribute und Methoden mit Unterstrich sowie die Dunder-Methoden erscheinen im Diagramm und im Inspektor. Für die Oberstufe, wenn Datenkapselung zum Thema wird.

data-config dieses Werkzeugs
{
  "titel": "Bankkonten (Modellierung)",
  "profil": "modellierung",
  "dateien": [
    "konto_intern.py"
  ]
}

G — Quelltext nur zum Lesen

Kein Editor, kein Code-Pad, aber der Quelltext ist einsehbar. Für Aufgaben, in denen ein gegebenes Programm gelesen und benutzt, aber nicht verändert werden soll. Der Doppelklick auf einen Klassenkasten springt in die Leseansicht.

data-config dieses Werkzeugs
{
  "titel": "Bankkonten (nur lesen)",
  "editor": false,
  "codepad": false,
  "quelltextAnzeigen": true,
  "dateien": [
    "konto.py"
  ]
}

H — Entzogene Rechte und ausgewählte Klassen

Auf dem Profil „Selbst programmieren“ sind Bearbeiten, Zurücksetzen und Objektverwaltung entzogen. Der Quelltext enthält zwei Klassen, aber sichtbareKlassen zeigt nur Konto im Diagramm. So sieht eine Aufgabe aus, in der die Vorgabe nicht zerstört werden können soll.

data-config dieses Werkzeugs
{
  "titel": "Konto (nur benutzen)",
  "profil": "selbst-programmieren",
  "bearbeiten": false,
  "zuruecksetzen": false,
  "objekteVerwalten": false,
  "sichtbareKlassen": [
    "Konto"
  ],
  "dateien": [
    "konto_bank.py"
  ]
}

I — Abweichung vom Profil

Ein Profil wirkt zuerst, danach die Einzelangaben: Hier ist das Profil „Zustand verstehen“ gewählt, aber der Editor wieder eingeschaltet und die Objektnummern abgeschaltet. Wer ein Profil wählt und dann einen Schalter setzt, meint die Abweichung.

data-config dieses Werkzeugs
{
  "titel": "Bankkonten (Profil mit Abweichung)",
  "profil": "zustand-verstehen",
  "editor": true,
  "objektnummern": false,
  "dateien": [
    "konto.py"
  ]
}

J — Laden erst auf Klick

Mit laden: "klick" holt das Werkzeug Pyodide erst, wenn jemand es anstößt — statt beim Scrollen in den Sichtbereich. Sinnvoll weit unten auf langen Seiten oder wenn das Werkzeug nur eine Zusatzaufgabe trägt. Außerdem ohne Sichern des Arbeitsstands im Browser.

data-config dieses Werkzeugs
{
  "titel": "Ampelsteuerung (Laden auf Klick)",
  "laden": "klick",
  "speichern": false,
  "dateien": [
    "ampel.py"
  ]
}

K — Hauptprogramm aus einer Datei

Neben den Klassen ein Hauptprogramm, das sie benutzt — hier aus main_wuerfel.py. Es läuft auf Knopfdruck im Namensraum der Objektbank: entstandene Objekte werden Karten, die Ausgabe landet in der Ausgabe. Mit dem Haken „Bisherige Objekte behalten“ läuft es über der bestehenden Objektbank und hängt seinen Text ans Protokoll; ohne Haken beginnt es bei null. Eine Schleife, die nicht endet, wird abgebrochen.

data-config dieses Werkzeugs
{
  "titel": "Würfel mit Hauptprogramm",
  "hauptprogramm": "main_wuerfel.py",
  "profil": "selbst-programmieren",
  "laden": "klick",
  "dateien": [
    "wuerfel_uebung.py"
  ]
}

L — Anweisungen außerhalb der Klasse

zaehler_mit_programm.py enthält unter der Klasse noch Anweisungen. Beim Laden wandern sie ins Hauptprogramm, die Übernahme wird angezeigt; Import, Klasse und die Konstante OBERGRENZE bleiben in der Datei. So läuft beim Laden nichts unbemerkt, sondern erst auf Knopfdruck.

data-config dieses Werkzeugs
{
  "titel": "Zähler (Anweisungen werden übernommen)",
  "profil": "selbst-programmieren",
  "laden": "klick",
  "dateien": [
    "zaehler_mit_programm.py"
  ]
}

Was hier zu prüfen ist

  • Fügt sich das Werkzeug in Breite, Abstand und Schrift in die Buchseite ein — auch auf einem schmalen Bildschirm?
  • Sind zehn Werkzeuge auf einer Seite noch bedienbar, oder braucht es laden: "klick" ab einer gewissen Zahl?
  • Lässt sich jedes Werkzeug vollständig mit der Tastatur bedienen?
  • Passen die Bezeichnungen der Bereiche und Profile zum Sprachgebrauch auf inf-schule?

Suche

v
100.161.1 Tooltest — alle Zuschnitte
Kopieren durch Anklicken

Rückmeldung geben