Aus verschiedenen Gründen setze ich die vielseitig bewährte Programmiersprache C++ ein. Es ist kein Einstieg in eine weitere Programmiersprache vorgesehen, weil der Schaden bei den Lernenden (Verunsicherung) größer wäre als der Nutzen. Es gibt auf einer guten Kenntnisbasis in C++ keinerlei bis wenig Probleme, sich selbst in andere Sprachen wie Javascript, Java (nur objektorientiert), Perl, PHP einzuarbeiten.
Das praktikable Erstellen von Anwendungen mit grafischer Windows-Oberfläche (GUI) erfordert Kenntnisse in der objektorientierten Programmierung und von spezifischen Elementen der MFC (Microsoft Foundation Classes) oder einer anderen umfangreichen Bibliothek. Sollten die Teilnehmer alle von mir bisher erlebten Lerngeschwindigkeitsrekorde brechen, bin ich gerne bereit, GUI-Programmierung auf MFC-Basis in den Unterricht zu integrieren. Allen anderen naiven Vorstellungen zu schnellen Erfolgen in der GUI-Programmierung muss ich eine deutliche Absage erteilen. Es geht schlicht nicht! Wer ein Kommandozeilenfenster auf Dauer nicht ertragen kann, möge sich mit dem Erstellen von Web-basierten CGI-Programmen trösten (s.u.).
Um Anwendungsprogramme erstellen oder anpassen zu können sind mindestens folgende Kenntnisse zweckmäßig bzw. erforderlich:
Werkzeuge zur Erzeugung eines Programmes
Handhabung einer Entwicklungsumgebung, Konfiguration - hier: Microsoft Visual C++
Grundstruktur eines Programmes
Elemente der Programmiersprache (Variable, Typen, Zuweisungen, Ausdrücke)
Ablaufstrukturen (programmiersprachenübergreifend) wie bedingte Anweisungen, Wiederholungen, Fallunterscheidungen
Zerlegen in Module und zusammensetzen von Modulen (Unterprogramme, Funktionen, Dateien)
Parametrisierung von Modulen (formale und aktuelle Parameterlisten)
Grundlegende Datenstrukturen (Datenfelder, Datenverbunde, Varianten)
Robustes Programmieren (Vorsehen von Ausnahmesituationen und deren Behandlung)
Nutzung bereits existierender Module, Funktionen, Objekte
Spezifisch zu C++: Zeiger und Speicherallokation, Funktionstemplates
Wünschenswerte Inhalte, die erfahrungsgemäß aus Zeitgründen nicht unterzubringen sind:
Diese Schnittstelle gestattet die Nutzung eines Web-Clients (Browser) als Anwendungs-Frontend. Anwendungsprogramm und Mensch-Maschinen-Schnittstelle können auf verschiedenen Stationen im Netzwerk arbeiten. CGI-Programme werden häufig in Perl oder PHP geschrieben. Aus didaktischen und exemplarischen Gründen sollen diese hier in C++ codiert werden. Zur Erstellung solcher Programme sind Kenntnisse in der Dokumenten-Auszeichnungssprache HTML erforderlich. Ein "Schnellerfolgs-Klickwerkzeug" ist dafür völlig ungeeignet. Bei Zeitknappheit müssen diese Inhalte leider teilweise oder vollständig entfallen.
HTML-Formulare
Web-basierte Kommunikationsstruktur zwischen Client und Datenbankserver
Form der Datenübermittlung vom Client zum CGI-Programm
Daten herauslösen (trennen, dekodieren, in assoziativem Container ablegen), fertige Wrapperklasse nutzen
Es kommt ein SQL-Server zum Einsatz, vorzugsweise ein unter der GPL (GNU Public License) frei erhältlicher
DB-Server wie MySQL. Zu MySQL existiert eine C++-Bibliothek, welche es gestattet DB-Anwendungen in C++ zu
erstellen.
Zur Erstellung/Pflege einer Datenbankanwendung werden kombiniert:
Programmierkenntnisse in C++, Nutzung von Wrapperklassen, SQL-Anweisungen
bedingt (s.o.): HTML-Formulare, CGI-Programmierung
Nutzung eines oder mehrerer Frontends (beispielsweise PhpMyAdmin, MySQL-Monitor)
Installieren und Einrichtung der erforderlichen Software (SQL-Server, Webserver, PHP-Interpreter, Skripte)
Dies kann ggf. in ein anderes Fach/Lernfeld ausgelagert werden.
Entity-Relationship-Modell (ER-Schema) als Entwurfsmodell, Kardinalitäten
Implementation eines ER-Schemas in Form von Tabellen einer relationalen Datenbank
Grundlegende SQL-Anweisungen für Anwendungen (select, insert, delete, update)
Erstellen einer benutzerspezifischen Datenbankanwendung unter Verwendung einer Vorlage
Vermeidung von Fehlermöglichkeiten (Inkonsistenzen), Normalisierungen
Verknüpfte Tabellenabfragen, qualifizierte Tabellennamen, Aliase, verknüpfte where-Klausel