commit 4304068dde66431988b5f0c11c0ec03c7d18e911 Author: Dirk Zechnall Date: Sat Jan 4 20:59:32 2025 +0100 Initial commit diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..5795603 --- /dev/null +++ b/.gitignore @@ -0,0 +1,8 @@ +*.class +*.ctxt +*.sh +repo.adoc +*.~lock +/alt +Gemfile +Gemfile.lock diff --git a/0_inhaltsverzeichnis/cc-lizenz.png b/0_inhaltsverzeichnis/cc-lizenz.png new file mode 100644 index 0000000..433bc81 Binary files /dev/null and b/0_inhaltsverzeichnis/cc-lizenz.png differ diff --git a/0_inhaltsverzeichnis/cc-lizenz2.png b/0_inhaltsverzeichnis/cc-lizenz2.png new file mode 100644 index 0000000..83c7d39 Binary files /dev/null and b/0_inhaltsverzeichnis/cc-lizenz2.png differ diff --git a/0_inhaltsverzeichnis/inhaltsverzeichnis.html b/0_inhaltsverzeichnis/inhaltsverzeichnis.html new file mode 100644 index 0000000..bf3857f --- /dev/null +++ b/0_inhaltsverzeichnis/inhaltsverzeichnis.html @@ -0,0 +1,110 @@ + + + +Materialliste + + + + + +
+ + + + + + +
+ +
+
+

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.
+

+

+ +

+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

+ + +

Objektorientierte Programmierung: Projekt dynamische Geometriesoftware

+ + +

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
+

+
+
+
+ + \ No newline at end of file diff --git a/0_inhaltsverzeichnis/spacer.gif b/0_inhaltsverzeichnis/spacer.gif new file mode 100644 index 0000000..35d42e8 Binary files /dev/null and b/0_inhaltsverzeichnis/spacer.gif differ diff --git a/0_inhaltsverzeichnis/styles.css b/0_inhaltsverzeichnis/styles.css new file mode 100644 index 0000000..8814325 --- /dev/null +++ b/0_inhaltsverzeichnis/styles.css @@ -0,0 +1,747 @@ +/*------------------------------------------ allgemeine Eigenschaften -------------------------------------*/ +body +{ + color:#000000; + font-size: 12px; + font-style: normal; + font-weight: normal; + text-align: justify; + list-style-position: inside; + list-style-type: disc; + font-family:Arial,Geneva,Helvetica,sans-serif; + margin-top: 18px; + margin-left: 8px; + margin-right: 5px; + margin-bottom: 5px; + + scrollbar-face-color:#d7e8ff; + scrollbar-highlight-color:#013B8C; + scrollbar-shadow-color:#013B8C; + scrollbar-arrow-color:#013B8C; + scrollbar-track-color:#ffffff; + scrollbar-darkshadow-color:#ffffff; + scrollbar-base-color:#ffffff; +} + + +body.Menu +{ + color:#000000; + margin:0px; + bgcolor:#ffffff; +} + +body.Termin +{ + background:#8BADDE; + color:#000000; + font-family:Arial,Geneva,Helvetica,sans-serif; + font-size:12px; + font-weight:normal; + margin-top: 5px; + margin-left: 15px; + margin-right: 15px; + margin-bottom: 5px; + +} + + +/* Standard */ +.DesignTable table { + border-width: 0px; + border-spacing: 0px; + padding: 0px; +} + +p, li, .DesignTable td { + font-family: Geneva, Arial, Helvetica, sans-serif; + font-size: 12px; + font-style: normal; + font-weight: normal; + color: #000000; + text-align: justify; + list-style-position: inside; + list-style-type: disc; +} + +td.hauptfenster { + vertical-align:top; + border: solid 1px black; +} + + + +hr +{ + color:#3e70b6; + size: 1; + noshade; +} + +hr.hr +{ + color:#19037a; + width:100%; + height:1px; +} + + +/* Ueberschriften */ + +h1.style1 { + font-family:VAGRounded BT; + font-size: 25px; + color=#990000; + font-weight: bold; +} + +h1.style1 i { + font-family:Mistral; + font-style:normal; +} + +h1 { + font-family: Geneva, Arial, Helvetica, sans-serif; + font-size: 17px; + font-weight: bold; + font-variant: small-caps; + text-transform: uppercase; + color: #990000; +} + +h1 i { + color: #000099; +} + +h2 { + + font-family: Geneva, Arial, Helvetica, sans-serif; + font-size: 14px; + font-weight: bold; + text-transform: none; + color: #990000; +} +h2 i { + color: #000099; +} + +h3 { + + + font-family: Geneva, Arial, Helvetica, sans-serif; + font-size: 12px; + font-weight: bold; + text-transform: none; + color: #000000; +} + + +/* fett */ +b { + color: #990000; + font-weight: bold; + +} + + + +img.image { + border-top-style: solid; + border-top-color: #000000; + border-left-style: solid; + border-left-color: #000000; + + border-right-style: groove; + border-right-color: #AA2020; + border-bottom-style: groove; + border-bottom-color: #AA2020; + border-top-width: 1px; + border-left-width: 1px; + border-right-width: 3px; + border-bottom-width: 3px; +} + + +/* Links */ +a +{ + color:#013b8c; + font-family:Arial,Geneva,Helvetica,sans-serif; + font-size:12px; + font-weight:bold; + text-decoration:none; +} + + +a:hover +{ + color:#b01b1b; + font-family:Arial,Geneva,Helvetica,sans-serif; + font-size:12px; + font-weight:bold; + text-decoration:underline; +} + + + +/*-----------------------------------Tabelle mit 2 Ebenen (Unterkunftstabelle) ----------------------------*/ +/* Kopf */ +.tabstyle1top +{ + background-color:#013B8C; + color:#ffffff; + font-family:Arial,Geneva,Helvetica,sans-serif; + font-size:15px; + font-weight:bold; + text-decoration:none; + text-transform:uppercase; +} +a.tabstyle1top +{ + color:#ffffff; + font-family:Arial,Geneva,Helvetica,sans-serif; + font-size:15px; + font-weight:bold; + text-decoration:none; +} +a.tabstyle1top:hover +{ + color:#8BADDE; + font-family:Arial,Geneva,Helvetica,sans-serif; + font-size:15px; + font-weight:bold; + text-decoration:none; +} +/* Zeile */ +.tabstyle1line +{ + background-color:#8BADDE; + font-family:Arial,Geneva,Helvetica,sans-serif; + font-size:12px; + color:#000000; + font-weight:normal; + text-decoration:none; +} +a.tabstyle1line +{ + color:#013B8C; + font-family:Arial,Geneva,Helvetica,sans-serif; + font-size:12px; + font-weight:bold; + text-decoration:none; +} +a.tabstyle1line:hover +{ + color:#b01b1b; + font-family:Arial,Geneva,Helvetica,sans-serif; + font-size:12px; + font-weight:bold; + text-decoration:none; +} + +/*------------------ Tabelle mit 3 Ebenen (Gruppenunterkuenfte/Reisekategorien) ---------------------------*/ +/* Kopf 1 */ +.tabstyle2top +{ + background-color:#013B8C; + color:#ffffff; + font-family:Arial,Geneva,Helvetica,sans-serif; + font-size:14px; + font-weight:bold; + text-transform:uppercase; +} +a.tabstyle2top +{ + color:#FFFFFF; + font-family:Arial,Geneva,Helvetica,sans-serif; + font-size:14px; + font-weight:bold; + text-decoration:none; +} +a.tabstyle2top:hover +{ + color:#BDD3F3; + font-family:Arial,Geneva,Helvetica,sans-serif; + font-size:14px; + font-weight:bold; + text-decoration:none; +} +/* Kopf 2 */ +.tabstyle2top2, .ScrollTable th +{ + background-color:#8BADDE; + color:#013B8C; + font-family:Arial,Geneva,Helvetica,sans-serif; + font-size:12px; + font-weight:bold; +} +/* Zeile */ +.tabstyle2line, .ScrollTable td +{ + background-color:#BDD3F3; + font-family:Arial,Geneva,Helvetica,sans-serif; + font-size:12px; + color:#000000; + font-weight:normal; + text-decoration:none; +} + +a.tabstyle2line +{ + color:#013b8c; + font-family:Arial,Geneva,Helvetica,sans-serif; + font-size:12px; + font-weight:bold; + text-decoration:none; +} +a.tabstyle2line:hover +{ + color:#b01b1b; + font-family:Arial,Geneva,Helvetica,sans-serif; + font-size:12px; + font-weight:bold; + text-decoration:none; +} + +/* -------------------------------------------- Terminkalender ------------------------------*/ + +.tabstyleferien +{ + background-color:#DEA0A0; + font-family:Arial,Geneva,Helvetica,sans-serif; + font-size:12px; + color:#000000; + font-weight:normal; + text-decoration:none; +} + +div.termin1 +{ color:#880000; + font-weight:normal; } +div.termin2 +{ color:#005000; + font-weight:normal; } +div.termin3 +{ color:#505000; + font-weight:normal; } +div.termin4 +{ color:#000000; + font-weight:bold; } +div.termin5 +{ color:#000050; + font-weight:normal; } +div.termin6 +{ color:#005050; + font-weight:normal; } + + + +/*--------------------------------------------------- Hierarchie ------------------------------------------*/ + + +div.hierarchie +{ + color:#013b8c; + font-size:10px; + font-weight:normal; + text-decoration:none; + text-transform:lowercase; + position:absolute; + top:1px; + left:1px; + width:300px; + z-index:0; +} + +div.autor +{ + color:#013b8c; + font-size:10px; + font-weight:normal; + text-decoration:none; + text-transform:lowercase; + position:absolute; + top:1px; + right:20px; + z-index:1; +} +div.hierarchie a +{ + color:#013b8c; + font-size:10px; +} +div.hierarchie a:hover +{ + color:#B01B1B; + font-size:10px; + +} + + +/*------------------------------------------- Reiter-Eigenschaften ----------------------------------------*/ +/* Hintergrundfarbe */ +.bgreiter +{ + background-color:#d7e8ff; +} +/* Schrift */ +.reiter +{ +} +/* Ueberschriften */ +.headerreiter +{ + color:#b01b1b; + font-family:Arial,Geneva,Helvetica,sans-serif; + font-size:12px; + font-weight:bold; + text-decoration:none; +} +/* Links */ +a.reiter +{ + color:#013b8c; + font-family:Arial,Geneva,Helvetica,sans-serif; + font-size:12px; + font-weight:bold; + text-decoration:none; +} +a.reiter:hover +{ + color:#b01b1b; + font-family:Arial,Geneva,Helvetica,sans-serif; + font-size:12px; + font-weight:bold; + text-decoration:underline; +} + +/*-------------------------------------------------- Navigation oben --------------------------------------*/ +.navtop +{ + background-color:#B01B1B; + color:#ffffff; + font-family:Arial,Geneva,Helvetica,sans-serif; + font-size:14px; + font-weight:bold; + +} +.tabborder +{ + border-right-style: solid; + border-right-color: #FFFFFF; + border-width : 2px; + text-align: center; + padding-left:10px; + padding-right:10px; +} + +.tabborderactiv +{ + background-color:#ffb045; + color:#ffffff; + font-family:Arial,Geneva,Helvetica,sans-serif; + font-size:14px; + font-weight:bold; + border-right-style: solid; + border-right-color: #FFFFFF; + border-width : 2px; + text-align: center; + padding-left:10px; + padding-right:10px; +} +a.anavtopa +{ + color:#013b8c; + font-family:Arial,Geneva,Helvetica,sans-serif; + font-size:12px; + font-weight:bold; + text-decoration:none; +} +a.anavtopa:hover +{ + color:#013b8c; + font-family:Arial,Geneva,Helvetica,sans-serif; + font-size:12px; + font-weight:bold; + text-decoration:none; +} +a.anavtop +{ + color:#ffffff; + font-family:Arial,Geneva,Helvetica,sans-serif; + font-size:12px; + font-weight:bold; + text-decoration:none; +} +a.anavtop:hover +{ + color:#d7e8ff; + font-family:Arial,Geneva,Helvetica,sans-serif; + font-size:12px; + font-weight:bold; + text-decoration:none; +} + +/*------------------------------------------------- Navigation links --------------------------------------*/ +.bgnavleft, .bgelpix +{ + background-color:#FFFFFF; + border: solid 1px black; + cellpadding=0; +/* background-color:#013B8C; */ +} +/* EBENE 1*/ +td.navleft1 +{ + background-color:#FFFFFF; + border-bottom:1px solid gray; + color: #ec4d15; + font-family:Arial,Geneva,Helvetica,sans-serif; + font-size:12px; + font-weight:bold; + padding-left:5px; +} + +a.navleft1 +{ + color: #ec4d15; + font-family:Arial,Geneva,Helvetica,sans-serif; + font-size:12px; + font-weight:bold; + text-decoration:none; +} +a.navleft1:hover +{ + color: #ffb635; + font-family:Arial,Geneva,Helvetica,sans-serif; + font-size:12px; + font-weight:bold; + text-decoration:none; +} + +/* Ebene 2 */ +td.navleft2 +{ + /* background-color:#d7e8ff; */ + background-color:#FFFFFF; + font-family:Arial,Geneva,Helvetica,sans-serif; + font-size:12px; + padding-left:5px; +} + +a.navleft2 +{ + color:#013b8c; + font-family:Arial,Geneva,Helvetica,sans-serif; + font-size:12px; + font-weight:bold; + text-decoration:none; +} +a.navleft2:hover +{ + color:#b4b4f3; + font-family:Arial,Geneva,Helvetica,sans-serif; + font-size:12px; + font-weight:bold; + text-decoration:none; +} +/* EBENE 2 aufgeklappt */ +td.navleft2aktiv +{ + background-color:#7F9ECB; + font-family:Arial,Geneva,Helvetica,sans-serif; + font-size:12px; + padding-left:5px; +} +a.navleft2aktiv +{ + color:#ffffff; + font-family:Arial,Geneva,Helvetica,sans-serif; + font-size:12px; + font-weight:bold; + text-decoration:none; +} +a.navleft2aktiv:hover +{ + color:#ffffff; + font-family:Arial,Geneva,Helvetica,sans-serif; + font-size:12px; + font-weight:bold; + text-decoration:none; +} +/* EBENE 3*/ +td.navleft3 +{ + background-color:#ffffff; + font-family:Arial,Geneva,Helvetica,sans-serif; + font-size:12px; + padding-left:5px; +} +a.navleft3 +{ + color:#013b8c; + font-family:Arial,Geneva,Helvetica,sans-serif; + font-size:12px; + font-weight:normal; + text-decoration:none; +} +a.navleft3:hover +{ + color:#b01b1b; + font-family:Arial,Geneva,Helvetica,sans-serif; + font-size:12px; + font-weight:normal; + text-decoration:none; +} + + + +/* --------- Formulare ----------------------------------------------------*/ +td.orange +{ + background-color:#FFFFFF; + color: #000000; + font-family:Arial,Geneva,Helvetica,sans-serif; + font-size:12px; + font-weight:bold; +} + +input.login +{ + border-style:solid; + border-width:1px; + border-color:#3e70b6; + font-family:Arial,Geneva,Helvetica,sans-serif; + font-size:12px; + font-weight:normal; + text-decoration:none; + background-color:#ffffff; + } + +input.text +{ + border-style:none; + border-width:0px; + font-family:Arial,Geneva,Helvetica,sans-serif; + font-size:12px; + font-weight:bold; + text-decoration:none; + background-color:#BDD3F3; + color:#013b8c; + } + +select.blue +{ + border-style:none; + border-width:0px; + font-family:Arial,Geneva,Helvetica,sans-serif; + font-size:12px; + font-weight:bold; + text-decoration:none; + background-color:#BDD3F3; + color:#013b8c; + } + +input.blue, textarea.blue +{ + color:#013b8c; + border-style:solid; + border-width:2px; + border-color:#3e70b6; + font-family:Arial,Geneva,Helvetica,sans-serif; + font-size:13px; + font-weight:bold; + text-decoration:none; + background-color:#d7e8ff; + } + +input.textbox +{ + width:128px; +} + +/* scrollbare Tabellen */ +.ScrollTable tr +{ + height:22px; + color:#000000; +} + + +/* Reiter-Lasche */ +.reiterwindow +{ + color:#000000; + background-color:#BDD3F3; + text-decoration:none; + font-weight:normal; + font-family: Geneva, Arial, Helvetica, sans-serif; + font-size: 12px; + font-style: normal; + text-align: justify; + border-color:#013b8c; + border-width:1; + border-left-style:solid; + border-right-style:solid; + border-bottom-style:solid; + padding:4px; +} + + +.reiterlasche +{ + color:#013b8c; + background-color:#8BADDE; + text-decoration:none; + font-weight:normal; + border-color:#013b8c; + border-width:1; + border-top-style:solid; + border-bottom-style:solid; +} + +.aktreiterlasche +{ + color:#013b8c; + background-color:#BDD3F3; + text-decoration:none; + text-align: center; + font-weight:normal; + font-family:Arial,Geneva,Helvetica,sans-serif; + font-size:12px; + font-weight:normal; + border-color:#013b8c; + border-width:1; + border-top-style:solid; +} +.reiterspace +{ + background-color:#FFFFFF; + border-color:#013b8c; + border-width:1; + border-bottom-style:solid; +} +.aktreiterspace +{ + background-color:#FFFFFF; + border-color:#BDD3F3; + border-width:1; + border-bottom-style:solid; +} + +a.reiterlink +{ + background-color:#8BADDE; + color:#013b8c; + text-decoration:none; + font-weight:normal; +} +a.reiterlink:hover +{ + color:#880000; + text-decoration:none; + font-weight:normal; +} + + +/* Sonstiges*/ \ No newline at end of file diff --git a/0_inhaltsverzeichnis/titelleiste.png b/0_inhaltsverzeichnis/titelleiste.png new file mode 100644 index 0000000..f779b17 Binary files /dev/null and b/0_inhaltsverzeichnis/titelleiste.png differ diff --git a/1_hintergrund/01_1_einfuehrungobjektorientierung.odt b/1_hintergrund/01_1_einfuehrungobjektorientierung.odt new file mode 100644 index 0000000..707ae9c Binary files /dev/null and b/1_hintergrund/01_1_einfuehrungobjektorientierung.odt differ diff --git a/1_hintergrund/01_2_lebenszyklusobjekte.odt b/1_hintergrund/01_2_lebenszyklusobjekte.odt new file mode 100644 index 0000000..7d6fa90 Binary files /dev/null and b/1_hintergrund/01_2_lebenszyklusobjekte.odt differ diff --git a/1_hintergrund/03_1_klassenentwurf.odt b/1_hintergrund/03_1_klassenentwurf.odt new file mode 100644 index 0000000..f117e1e Binary files /dev/null and b/1_hintergrund/03_1_klassenentwurf.odt differ diff --git a/1_hintergrund/0_tipps_zum_javaeditor.odt b/1_hintergrund/0_tipps_zum_javaeditor.odt new file mode 100644 index 0000000..2d1e918 Binary files /dev/null and b/1_hintergrund/0_tipps_zum_javaeditor.odt differ diff --git a/1_hintergrund/0_unterrichtsgang.odt b/1_hintergrund/0_unterrichtsgang.odt new file mode 100644 index 0000000..c8be64e Binary files /dev/null and b/1_hintergrund/0_unterrichtsgang.odt differ diff --git a/2_vorlagen_tauschordner/01_2_6er-wuerfeln.zip b/2_vorlagen_tauschordner/01_2_6er-wuerfeln.zip new file mode 100644 index 0000000..e4123ec Binary files /dev/null and b/2_vorlagen_tauschordner/01_2_6er-wuerfeln.zip differ diff --git a/2_vorlagen_tauschordner/01_2_6er-wuerfeln_mit_gui.zip b/2_vorlagen_tauschordner/01_2_6er-wuerfeln_mit_gui.zip new file mode 100644 index 0000000..552f456 Binary files /dev/null and b/2_vorlagen_tauschordner/01_2_6er-wuerfeln_mit_gui.zip differ diff --git a/2_vorlagen_tauschordner/02_1_geomobj_v0.zip b/2_vorlagen_tauschordner/02_1_geomobj_v0.zip new file mode 100644 index 0000000..ceb0263 Binary files /dev/null and b/2_vorlagen_tauschordner/02_1_geomobj_v0.zip differ diff --git a/2_vorlagen_tauschordner/02_2_geomobj_v1.zip b/2_vorlagen_tauschordner/02_2_geomobj_v1.zip new file mode 100644 index 0000000..52228af Binary files /dev/null and b/2_vorlagen_tauschordner/02_2_geomobj_v1.zip differ diff --git a/2_vorlagen_tauschordner/02_3_testklasse_gpoint.zip b/2_vorlagen_tauschordner/02_3_testklasse_gpoint.zip new file mode 100644 index 0000000..5126a90 Binary files /dev/null and b/2_vorlagen_tauschordner/02_3_testklasse_gpoint.zip differ diff --git a/2_vorlagen_tauschordner/03_2_craps.zip b/2_vorlagen_tauschordner/03_2_craps.zip new file mode 100644 index 0000000..4b10b88 Binary files /dev/null and b/2_vorlagen_tauschordner/03_2_craps.zip differ diff --git a/2_vorlagen_tauschordner/Aktuelle_Versionen_Siehe_Software-Ordner b/2_vorlagen_tauschordner/Aktuelle_Versionen_Siehe_Software-Ordner new file mode 100644 index 0000000..e69de29 diff --git a/3_vorlagen_kopieren/01_2_arbeitsauftrag_6erwuerfeln.odt b/3_vorlagen_kopieren/01_2_arbeitsauftrag_6erwuerfeln.odt new file mode 100644 index 0000000..7e7c60c Binary files /dev/null and b/3_vorlagen_kopieren/01_2_arbeitsauftrag_6erwuerfeln.odt differ diff --git a/3_vorlagen_kopieren/01_4_merkblatt_referenzvariablenverstehen.odt b/3_vorlagen_kopieren/01_4_merkblatt_referenzvariablenverstehen.odt new file mode 100644 index 0000000..1d61cf0 Binary files /dev/null and b/3_vorlagen_kopieren/01_4_merkblatt_referenzvariablenverstehen.odt differ diff --git a/3_vorlagen_kopieren/01_4_uebung_referenzvariablenverstehen.odt b/3_vorlagen_kopieren/01_4_uebung_referenzvariablenverstehen.odt new file mode 100644 index 0000000..c71ef86 Binary files /dev/null and b/3_vorlagen_kopieren/01_4_uebung_referenzvariablenverstehen.odt differ diff --git a/3_vorlagen_kopieren/02_1_projekt_geoobjects.odt b/3_vorlagen_kopieren/02_1_projekt_geoobjects.odt new file mode 100644 index 0000000..bbd0c84 Binary files /dev/null and b/3_vorlagen_kopieren/02_1_projekt_geoobjects.odt differ diff --git a/3_vorlagen_kopieren/03_2_craps.odt b/3_vorlagen_kopieren/03_2_craps.odt new file mode 100644 index 0000000..5c0132b Binary files /dev/null and b/3_vorlagen_kopieren/03_2_craps.odt differ diff --git a/3_vorlagen_kopieren/03_3_barbudi.odt b/3_vorlagen_kopieren/03_3_barbudi.odt new file mode 100644 index 0000000..220bc45 Binary files /dev/null and b/3_vorlagen_kopieren/03_3_barbudi.odt differ diff --git a/3_vorlagen_kopieren/03_3_barbudi_kleinschrittig.odt b/3_vorlagen_kopieren/03_3_barbudi_kleinschrittig.odt new file mode 100644 index 0000000..3c10ff1 Binary files /dev/null and b/3_vorlagen_kopieren/03_3_barbudi_kleinschrittig.odt differ diff --git a/3_vorlagen_kopieren/03_4_blackjack.odt b/3_vorlagen_kopieren/03_4_blackjack.odt new file mode 100644 index 0000000..b410353 Binary files /dev/null and b/3_vorlagen_kopieren/03_4_blackjack.odt differ diff --git a/3_vorlagen_kopieren/03_5_3dgrafik.odt b/3_vorlagen_kopieren/03_5_3dgrafik.odt new file mode 100644 index 0000000..d02f624 Binary files /dev/null and b/3_vorlagen_kopieren/03_5_3dgrafik.odt differ diff --git a/4_loesungen/01_4_loesung_referenzvariablenverstehen.odt b/4_loesungen/01_4_loesung_referenzvariablenverstehen.odt new file mode 100644 index 0000000..efa5ccb Binary files /dev/null and b/4_loesungen/01_4_loesung_referenzvariablenverstehen.odt differ diff --git a/4_loesungen/02_geoobjects/01_geomobj_a.zip b/4_loesungen/02_geoobjects/01_geomobj_a.zip new file mode 100644 index 0000000..93dcfc8 Binary files /dev/null and b/4_loesungen/02_geoobjects/01_geomobj_a.zip differ diff --git a/4_loesungen/02_geoobjects/02_geomobj_b.zip b/4_loesungen/02_geoobjects/02_geomobj_b.zip new file mode 100644 index 0000000..c672106 Binary files /dev/null and b/4_loesungen/02_geoobjects/02_geomobj_b.zip differ diff --git a/4_loesungen/02_geoobjects/03_geomobj_c.zip b/4_loesungen/02_geoobjects/03_geomobj_c.zip new file mode 100644 index 0000000..f7c3730 Binary files /dev/null and b/4_loesungen/02_geoobjects/03_geomobj_c.zip differ diff --git a/4_loesungen/02_geoobjects/04_geomobj_d.zip b/4_loesungen/02_geoobjects/04_geomobj_d.zip new file mode 100644 index 0000000..a9db81b Binary files /dev/null and b/4_loesungen/02_geoobjects/04_geomobj_d.zip differ diff --git a/4_loesungen/02_geoobjects/05_geomobj_e.zip b/4_loesungen/02_geoobjects/05_geomobj_e.zip new file mode 100644 index 0000000..f3bdd43 Binary files /dev/null and b/4_loesungen/02_geoobjects/05_geomobj_e.zip differ diff --git a/4_loesungen/02_geoobjects/06_geomobj_f.zip b/4_loesungen/02_geoobjects/06_geomobj_f.zip new file mode 100644 index 0000000..e7ebb79 Binary files /dev/null and b/4_loesungen/02_geoobjects/06_geomobj_f.zip differ diff --git a/4_loesungen/02_geoobjects/07_geomobj_g.zip b/4_loesungen/02_geoobjects/07_geomobj_g.zip new file mode 100644 index 0000000..fce7d35 Binary files /dev/null and b/4_loesungen/02_geoobjects/07_geomobj_g.zip differ diff --git a/4_loesungen/02_geoobjects/08_geomobj_h.zip b/4_loesungen/02_geoobjects/08_geomobj_h.zip new file mode 100644 index 0000000..31c04dd Binary files /dev/null and b/4_loesungen/02_geoobjects/08_geomobj_h.zip differ diff --git a/4_loesungen/02_geoobjects/09_geomobj_j.zip b/4_loesungen/02_geoobjects/09_geomobj_j.zip new file mode 100644 index 0000000..e99f034 Binary files /dev/null and b/4_loesungen/02_geoobjects/09_geomobj_j.zip differ diff --git a/4_loesungen/02_geoobjects/10_geomobj_k.zip b/4_loesungen/02_geoobjects/10_geomobj_k.zip new file mode 100644 index 0000000..868b193 Binary files /dev/null and b/4_loesungen/02_geoobjects/10_geomobj_k.zip differ diff --git a/4_loesungen/03_2_craps.zip b/4_loesungen/03_2_craps.zip new file mode 100644 index 0000000..210f773 Binary files /dev/null and b/4_loesungen/03_2_craps.zip differ diff --git a/4_loesungen/03_3_barbudi.zip b/4_loesungen/03_3_barbudi.zip new file mode 100644 index 0000000..45856c7 Binary files /dev/null and b/4_loesungen/03_3_barbudi.zip differ diff --git a/4_loesungen/03_3_barbudi_kleinschrittig.zip b/4_loesungen/03_3_barbudi_kleinschrittig.zip new file mode 100644 index 0000000..feff562 Binary files /dev/null and b/4_loesungen/03_3_barbudi_kleinschrittig.zip differ diff --git a/4_loesungen/03_4_blackjack.zip b/4_loesungen/03_4_blackjack.zip new file mode 100644 index 0000000..8c9296e Binary files /dev/null and b/4_loesungen/03_4_blackjack.zip differ diff --git a/4_loesungen/03_5_3dgrafik.zip b/4_loesungen/03_5_3dgrafik.zip new file mode 100644 index 0000000..6e59f90 Binary files /dev/null and b/4_loesungen/03_5_3dgrafik.zip differ diff --git a/4_loesungen/03_6_3dgrafik_profiversion.zip b/4_loesungen/03_6_3dgrafik_profiversion.zip new file mode 100644 index 0000000..ea3826c Binary files /dev/null and b/4_loesungen/03_6_3dgrafik_profiversion.zip differ diff --git a/4_loesungen/Aktuelle_Versionen_Siehe_Software-Ordner b/4_loesungen/Aktuelle_Versionen_Siehe_Software-Ordner new file mode 100644 index 0000000..e69de29 diff --git a/5_praesentationen/01_1_klassenundobjekte.odp b/5_praesentationen/01_1_klassenundobjekte.odp new file mode 100644 index 0000000..ff21ce5 Binary files /dev/null and b/5_praesentationen/01_1_klassenundobjekte.odp differ diff --git a/5_praesentationen/01_3_lebenszyklusobjekte.odp b/5_praesentationen/01_3_lebenszyklusobjekte.odp new file mode 100644 index 0000000..07411b1 Binary files /dev/null and b/5_praesentationen/01_3_lebenszyklusobjekte.odp differ diff --git a/5_praesentationen/02_2_klasse_gpoint.odp b/5_praesentationen/02_2_klasse_gpoint.odp new file mode 100644 index 0000000..7fcb0e5 Binary files /dev/null and b/5_praesentationen/02_2_klasse_gpoint.odp differ diff --git a/5_praesentationen/02_3_vererbung.odp b/5_praesentationen/02_3_vererbung.odp new file mode 100644 index 0000000..cc7622d Binary files /dev/null and b/5_praesentationen/02_3_vererbung.odp differ diff --git a/5_praesentationen/02_4_ueberblickklassen.odp b/5_praesentationen/02_4_ueberblickklassen.odp new file mode 100644 index 0000000..d170909 Binary files /dev/null and b/5_praesentationen/02_4_ueberblickklassen.odp differ diff --git a/5_praesentationen/03_1_entwurf_von_klassen.odp b/5_praesentationen/03_1_entwurf_von_klassen.odp new file mode 100644 index 0000000..a2c53a1 Binary files /dev/null and b/5_praesentationen/03_1_entwurf_von_klassen.odp differ diff --git a/6_software/01_sequenzdiagrammeditor_sdedit.jar b/6_software/01_sequenzdiagrammeditor_sdedit.jar new file mode 100644 index 0000000..b4edf14 Binary files /dev/null and b/6_software/01_sequenzdiagrammeditor_sdedit.jar differ diff --git a/6_software/02_sequenzdiagrammeditor_kurzanleitung.odt b/6_software/02_sequenzdiagrammeditor_kurzanleitung.odt new file mode 100644 index 0000000..4ea991a Binary files /dev/null and b/6_software/02_sequenzdiagrammeditor_kurzanleitung.odt differ diff --git a/6_software/03_Lizenzinformationen.txt b/6_software/03_Lizenzinformationen.txt new file mode 100644 index 0000000..29c70ab --- /dev/null +++ b/6_software/03_Lizenzinformationen.txt @@ -0,0 +1,23 @@ +Link +http://sdedit.sourceforge.net/copyright/index.html (22.06.2019) + +Author +Markus Strauch + +Copyright +Copyright (c) 2006 - 2008, Markus Strauch. All rights reserved. + +License +This program is released under the BSD license: + +Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: + +Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. + +Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +The icons for decorating this program's buttons are taken from Crystal SVG - see http://www.everaldo.com They are released under the LPGL license - see http://www.fsf.org/licensing/licenses/lgpl.html + +The icon identifying the program's window is taken from ArgoUML, copyright by Tigris - see http://argouml.tigris.org - and released under the BSD license (see above). \ No newline at end of file diff --git a/7_weitereprojektideen/07_2_wuerfelpoker.odt b/7_weitereprojektideen/07_2_wuerfelpoker.odt new file mode 100644 index 0000000..97e74a2 Binary files /dev/null and b/7_weitereprojektideen/07_2_wuerfelpoker.odt differ diff --git a/7_weitereprojektideen/07_2_wuerfelpokergui.zip b/7_weitereprojektideen/07_2_wuerfelpokergui.zip new file mode 100644 index 0000000..843f830 Binary files /dev/null and b/7_weitereprojektideen/07_2_wuerfelpokergui.zip differ diff --git a/README.adoc b/README.adoc new file mode 100644 index 0000000..6d25f1d --- /dev/null +++ b/README.adoc @@ -0,0 +1,64 @@ += Objektorientierte Modellierung und Programmierung + +|=== +|Zuordnung| Algorithmen +|Klassenstufe| Kursstufe BF und LF +|Bildungsplanbezug | BF, LF +|Werkzeug| Java-Editor, Greenfoot +|Autoren| T. Schaller, U.Lautebach +|=== + +== Inhalt + +Schülerinnen und Schüler lernen anhand eines Softwareprojekts zur Erstellung einer Geometrie-Software die Grundlagen der objektorientierten Programmierung und Modellierung kennen. Anschließend modellieren sie ein einfaches Spiel. + +## Themen +- Klassen und Objekte +- Attribute und Methoden +- primitive Variaben, Referenzvariablen +- Deklaration einer Klasse +- Lebenszyklus von Objekten / Garbage Collector +- abstrakte Klassen +- TypCasts +- Polymorphie +- Klassenbeziehungen (Vererbung, Aggregation bzw. Komposition, Assoziation) +- von UML zum Quelltext +- Graphical User Interface (GUI) +- Modellierung von Klassen +- Software-Projekte +- Sequenzdiagramme +- UML-Klassendiagramme +- for-each-Schleifen + +== Bildungsplan-Bezüge + +=== 3.1.3 Algorithmen - Strukturierte und objektorientierte Programmierung - Basisfach und Leistungsfach + +Variablen und Datentypen + +- (3) implizite und explizite Typumwandlungen (type casts) zur Konvertierung von Werten +unterschiedlicher Datentypen ineinander verwenden und dabei auftretende Probleme beschreiben + +Objektorientierung + +- (5) eigene Klassendefinitionen mit Attributen und Methoden implementieren +- (6) Referenzvariablen/Referenztypen mit primitiven Variablen / primitiven Datentypen vergleichen +- (7) mögliche Ursachen und Auswirkungen von Nullpointerfehlern erläutern [nur LF] +- (9) die Funktion von Zugriffsmodifikatoren (public, private, protected) erläutern und diese verwenden +- (12) den Lebenszyklus von Objekten (unter anderem Instanziierung, Verwendung, Zerstörung) +beschreiben [nur LF] +- (13) die Rolle von Konstruktoren beim Erzeugen von Instanzen einer Klasse (Objekten) erläutern und +diese implementieren +- (14) generische Datentypen bei der Instanziierung vorgegebener Klassen verwenden [nur LF] +- (15) sprachliche Mittel zur Sammlung gleichartiger Objekte (Collection) und zum Durchlaufen aller +Elemente der Sammlung (zum Beispiel Iteration, foreach, Lambdaausdrücke etc.) nutzen [nur LF] +- (16) das Konzept der Vererbung erläutern und in Modellierungen und Implementierungen anwenden +- (17) das Prinzip der Polymorphie erläutern und anwenden und dabei auch sichere class casts [nur LF] +verwenden +- (18) abstrakte Klassen und abstrakte Methoden nutzen [nur LF] + + +Modellierung und Dokumentation + +- (20) UML-Klassendiagramme mit Vererbung und Assoziation (auch rekursiv) entwerfen und zur +Modellierung nutzen diff --git a/index.html b/index.html new file mode 100644 index 0000000..ccc670c --- /dev/null +++ b/index.html @@ -0,0 +1,12 @@ + + + +Materialien + + + + + +

Wenn Sie nicht automatisch weitergeleitet werden, klicken Sie hier.

+ + \ No newline at end of file diff --git a/readme.adoc b/readme.adoc new file mode 100644 index 0000000..849992d --- /dev/null +++ b/readme.adoc @@ -0,0 +1,11 @@ += Material : + +|=== +|Zuordnung| +|Klassenstufe| +|Bildungsplanbezug | +|Werkzeug| +|Autoren| +|=== + +== Inhalt diff --git a/urheberrecht.pdf b/urheberrecht.pdf new file mode 100644 index 0000000..d312a61 Binary files /dev/null and b/urheberrecht.pdf differ