# Objektorientierte Modellierung und Programmierung Die meisten aktuellen Programmiersprachen unterstützen das Programmierparadigma der objektorientierten Programmierung. In Java kommt man an der OOP gar nicht mehr vorbei. Insbesondere größere Softwareprojekte sind ohne OOM kaum mehr vorstellbar. Daher schreiben die Bildungsstandards die objektorientierte Programmierung für die Kursstufe in 2 und 4-stündigen Kursen vor. Trotzdem ist es schwierig, dieses Thema in der Schule geeignet umzusetzen. Neben den üblichen Problemen beim Programmieren tritt hier zusätzlich noch die Schwierigkeit auf, eine geeignete Modellierung zu entwerfen. Vieles erscheint auf den ersten Blick sehr umständlich. Die Vorteile der OOP treten oft erst bei größeren Programmierprojekten zu Tage, die in der Schule aber kaum eine Rolle spielen. Diese Fortbildungsmaterialien bieten einen geeigneten Unterrichtsgang, der dieses komplexe Thema auf einem für unsere Schüler angemessenen Niveau umsetzt. Durch geeignete Werkzeuge (vor allem dem JavaEditor von G. Röhner) können die Schüler einen spielerischen Zugang zu Klassen und Objekten finden, bevor sie daran gehen, selbst Klassen zu programmieren. Schrittweise werden die Konzepte der OOP wie Vererbung und Polymorphie anhand eines größeren Programmierprojekts aufgebaut. Dabei werden die algorithmischen Probleme bewusst einfach gehalten, damit die Arbeit mit den Konzepten der OOP im Vordergrund steht. Anschließend lernen die Schüler eine Weg kennen, der von der Anforderungsbeschreibung an eine Software zu einem tragfähigen Klassenkonzept führt. Hierbei steht die objektorientierte Modellierung im Vordergrund. Der Unterrichtsgang ist also in zwei Stufen gegliedert. In der ersten Stufe arbeiten die Schüler mit Hilfe eines ausführlichen Leitprogramms weitgehend selbstständig. Sie programmieren dabei das Projekt „dynamische Geometriesoftware“ (in Anlehnung an das Mathematikprogramm Euklid). An konzeptionell sehr schwierigen Stellen wird das Leitprogramm durch weitere Präsentationen oder Übungen ergänzt. Daran anschließend wird anhand von Würfel- bzw. Kartenspielen gezeigt, wie man nach der Identifizierung der Geschäftsprozesse einen ersten Klassenentwurf erstellt, diesen mit ein "Objektspiel" überprüfung und somit zu einem tragfägigen Klassendiagramm kommt. Aufgrund der Vielzahl ähnlicher Würfel- und Kartenspiele können die Schüler das Gelernte leicht auf andere ähnlich strukturierte Probleme übertragen. Alternativ kann auch das erste Projekt (dynamische Geometriesoftware) vertieft werden und ein 3D-Darstellungsprogramm für Drahtmodelle (bis hin zu einer echten 3D-Darstelung durch Rot-Cyan-Anaglyphenbilder) umgesetzt werden. Der Zeitaufwand für die vollständige Umsetzung des Unterrichtsgangs ist recht hoch. Es ist daher je nach zur Verfügung stehender Zeit und Niveau des Kurses durchaus denkbar, nur die 1. Stufe im Unterricht umzusetzen. # Materialverzeichnis Der Ordner Hintergrund enthält Informationsmaterialien für Sie als Lehrer. Diese umfassen sowohl die nortwendigen fachlichen Informationen, als auch ein Vorschlag für den Unterrichtsverlauf. unterrichtsgang.odt - Erläuterungen zum Unterrichtsgang (incl. Verlaufsübersicht) einfuehrung_objektorientierung.odt - Grundlegende Ideen und Begriffe der Objektorientierung lebenszyklus_objekte.odt - Umgang von Java mit Objekten / Referenzvariablen, Visualisierung von Objekten klassenentwurf.odt - Objektorientierte Modellierung: Wie findet man einen guten Klassenentwurf? tipps_zum_javaeditor.odt - Hinweise und Tricks zur Installation und Umgang mit dem JavaEditor (Download: http://www.javaeditor.org) Die Arbeitsmaterialien selbst befinden sich im Ordnern Vorlagen_Tauschordner, wenn daran gedacht ist, diese Materialien den Schülern digital im Klassentauschordner zur Verfügung zu stellen, und im Ordner Vorlagen_Kopieren, wenn die Arbeitsblätter kopiert werden sollen. Dem Lehrer stehen die Lösungen im Ordner Loesungen zur Verfügung. Für den Unterricht stehen Präsentationen im Ordner Praesentationen bereit. ## Einführung 01_1_klassendiagramm.odp - Die Informatik aus der Sicht von Objekten und Klassen, Klassendiagramm anhand des Fernseher-Beispiels 01_2_arbeitsauftrag_6erwuerfeln.odt - Arbeitsblatt zum Umgang mit Klassen und Objekten im JavaEditor anhand des Spiels 6er-Würfeln 01_2_6er-wuerfeln.zip - Java-Programm 6er-Würfeln 01_4_merkblatt_referenzvariablenverstehen.odt - Übersicht über die Visualisierung von Objekten und Referenzvariablen 01_4_uebung_referenzvariablenverstehen.odt - Übungsblatt zur Visualisierung von Objekten und Referenzvariablen 01_4_loesung_referenzvariablenverstehen.odt - Lösungsblatt dazu ## Objektorientierte Programmierung: Projekt dynamische Geometriesoftware 02_1_projekt_geoobjects.odt - Leitprogramm zur Erstellen der dynamischen Geometriesoftware 02_2_klasse_gpoint.odp - Präsentation: Entwurf einer Klasse für geometrische Punkte 02_3_vererbung.odp - Präsentation: Vererbung, Abstrakte Klassen und Methoden 02_4_ueberblickklassen.odp - Präsentation: Folien mit allen Klassen der Geometrieprojektes 02_3_testklasse_gpoint.zip - Testklasse, um die Funktion von GPoint zu überprüfen. 02_1_geomobj_vx.zip - Vorlagen (V0 und V1) für die GUI des Geometrieprogramms (wird für Stufe 4 im Skript benötigt) 01_4_uebung_referenzvariablenverstehen.odt - Übungsblatt zur Polymorphie 01_4_loesung_referenzvariablenverstehen.odt - Lösungsblatt dazu geomobj_x - Implementation der Musterlösung der Geometriesoftware für alle Stufen (A-K) ## Objektorientierte Modellierung: Entwurf eines guten Klassendiagramms 03_1_entwurf_von_klassen.odp - Präsentation: Entwurf von Klassen (Geschäftsprozesse, Objektspiel / CRC-Karten, Sequenzdiagramme) anhand von Craps 03_2_craps.odt - Arbeitsanleitung für den Klassenentwurf von Craps (Würfelspiel) mit Teillösungen für jeden Arbeitsschritt 03_2_craps - Implementation des Würfelspiels Craps in Java 03_3_barbudi.odt - Arbeitsanleitung für den Klassenentwurf von Barbudi (Würfelspiel) mit Teillösungen für den Modellentwurf 03_3_barbudi_kleinschrittig.odt - gleiche Arbeitsanleitung, aber kleinschrittige Anleitung für die Implementierung => für schwächere Schüler) 03_3_barbudi.zip - Implementation des Würfelspiels Barbudi in Java 03_3_barbudi_kleinschrittig.zip - Lösung zur kleinschrittigen Implementationsanleitung des Würfelspiels Barbudi in Java 03_4_blackjack.odt - Arbeitsanleitung für den Klassenentwurf von BlackJack (Kartenspiel) mit Teillösungen für jeden Arbeitsschritt 03_4_blackjack.zip - Implementation des Kartenspiels BlackJack in Java 03_5_3dgrafik.odt - Arbeitsanleitung für den Klassenentwurf eines Darstellungsprogramms für 3D-Grafik mit Teillösungen 03_5_3dgrafik.zip - Implementation des Darstellungsprogramm für 3D-Grafik in Java 03_5_3dgrafik_profiversion.zip - Implementation der Profiversion des Darstellungsprogramms (Rot-Cyan-Darstellung, Laden von Wavefront-Dateien, Drehung der Szene mit der Maus)
| Alle Materialien stehen unter einer CC-Lizenz (CC BY-NC-SA 3.0), d.h. die Materialien dürfen für nicht-kommerzielle Zweck kopiert, bearbeitet und unter gleichen Bedingungen weitergegeben werden. Wir wären froh, von Verbesserungen, Neuerungen oder Erweiterungsvorschlägen zu erfahren (schaller@mlg-bad.de). Januar 2013: R. Mechling, T. Ningelgen, T. Schaller