alg_oo_oom_oop/0_inhaltsverzeichnis/inhaltsverzeichnis.html
2025-01-04 20:59:32 +01:00

110 lines
No EOL
10 KiB
HTML
Raw Permalink Blame History

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