Ach stellt euch nicht so an. Ihr habt die Lehrer nur alle falsch verstanden. Bei so dummen Fehlern können die das gar nicht ernst meinen. Die Leherer wollen ihren Unterricht doch nur etwas auflockern, indem sie zeigen wie man es nicht macht. Sogar das Staatsinstitut für Schulqualität und Bildungsforschung München propagiert diese Form des Unterrichts offenbar.
|
Java-Quelltext
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
/**
* Schnittstelle des Kontrolleurs für die Oberfläche.
*
* @author ISB-Arbeitskreis, Umsetzungshilfen Informatik 12
* @version 1.0
*/
interface KONTROLLEURINTERFACE
{
/**
* Ausführen der Laufzeitmessungen.
* @param anzahlElemente Anzahl der Knoten im Graphen
* @param tiefe gibt an, ob mit Tiefensuche gesucht werden soll
* @param dijkstra gibt an, ob nach Dijkstra gesucht werden soll
*/
void WegesucheAusfuehren (int anzahlElement, boolean tiefe, boolean dijkstra);
/**
* Beendet das Programm.
*/
void BeendenAusfuehren ();
}
|
Die einzige Klasse, die das KONTROLLEURINTERFACE implementiert.
|
Java-Quelltext
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
|
/**
* Kontrolleur des Programms.
*
* @author ISB-Arbeitskreis, Umsetzungshilfen Informatik 12
* @version 1.0
*/
class KONTROLLEUR implements KONTROLLEURINTERFACE
{
/* Die ereigniserzeugende Oberfläche */
private OBERFLAECHENINTERFACE oberflaeche;
/**
* Besetzt das Attribut vor.
*/
KONTROLLEUR ()
{
oberflaeche = null;
}
/**
* Setzt die Oberfläche.
* @param o die ereigniserzeugende Oberfläche
*/
void OberflaecheSetzen (OBERFLAECHENINTERFACE o)
{
oberflaeche = o;
}
/**
* Ausführen der Laufzeitmessungen.
* @param anzahlElemente Anzahl der Knoten im Graphen
* @param tiefe gibt an, ob mit Tiefensuche gesucht werden soll
* @param dijkstra gibt an, ob nach Dijkstra gesucht werden soll
*/
public void WegesucheAusfuehren (int anzahlElemente, boolean tiefe, boolean dijkstra)
{
Model. TESTSUCHEN test;
oberflaeche. TiefenSuchzeitSetzen ("---");
oberflaeche. DijkstraSuchzeitSetzen ("---");
test = new Model. TESTSUCHEN (anzahlElemente);
test. DurchschnittsTest (tiefe, dijkstra);
if (tiefe)
{
oberflaeche. TiefenSuchzeitSetzen ("" + test. ZeitFuerTiefensucheGeben ());
}
if (dijkstra)
{
oberflaeche. DijkstraSuchzeitSetzen ("" + test. ZeitFuerDijkstraGeben ());
}
}
/**
* Beendet das Programm.
*/
public void BeendenAusfuehren ()
{
System. exit (0);
}
}
|
Leider kann ich hier nicht das ganze Projekt posten, da das "Unterrichts-Material" auf 6 bluej Projekte verteilt ist und ich Angst habe, dass entweder jemand einen tödlichen Lachanfall oder einen bleibenden Gehirnschaden erleidet. Dieses wunderbare Werk aus dem bayrischen Bildungssystem, in welchem in diesem Jahr ganze 10% durch die schriftlichen Abiturprüfungen gefallen sind (manche Schüler sind eben dem revolutionären Unterrtichtsstil der Lehrer nicht gewachsen), dient der Einführung in die Laufzeitkomplexität von Algorithmen.
Zunächst weist das Institut auf die Wichtigkeit von wiederverwendbaren Code hin, indem über 6 Projekte (Sortieren, Sortieren_ZaehIen, Suchen, Suchen_Zaehlen, Wegesuche, Wegesuche_Zaehlen) hinweg redundante Implementierungen, einer Messumgebung, mit stümperhatft implementierten GUI, in einer vollkommen überflüssigen, unlogischen Pakethierarchie präsentiert wird. Durch die Verwendung von uneinheitlichen Zeilenumbrüchen (LF/CRLF) werden die Schüler auf die unterschiedlichen Codierungen bei gängigen Betriebssystemen hingewiesen. Da die Projekte auch noch über eine uneinheitliche Codierung von Umlauten verfügen, wird den Schülern das Unicode Konzept klar gemacht. Indem sich die Autoren konsequent über etablierte Konventionen (Formatierung/Bennennung) hinwegsetzen, wird den Schülern auch klar wie stark der diese Konventionen den Lesefluss erhöhen. Durch Kommentieren und Dokumentieren, von banalen Methoden und an Unnötigkeit nicht zu übertreffenden Softwarekonstrukten wird noch einmal klar, dass diese Projekte einfach nicht ernst gemeint sein können. Auch ist in die Projekte stundenlanger Rätselspaß integriert, so beendet sich das Programm zwar über einen überflüssigen Button, läuft aber im Hintergrund weiter wenn man das Fenster über das Kreuz beenden möchte. Zudem werden konsequent alle Swing-Objekte nicht im EDT erzeugt, da das Programm so natürlich nicht Threadsicher ist werden gleich noch einmal wichtige Grundlagen aus der vorhergehenden Lehreinheit "Nebenläufigkeit" wiederholt. Ich könnte noch stundenlang über die ausgeklügelten Feinheiten, die sich in diesem Projekt verstecken schreiben, aber es sollen schließlich auch noch nachfolgende Schülergenerationen Spaß an den vielen Rätselaufgaben haben.