# Materialliste
Author: Thomas Schaller

# 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