Einführung in die objektorientierte Programmierung mit geometrischen Figuren als Komponenten



Ähnliche Dokumente
Praxisbericht: Objektorientierte Programmierung mit geometrischen Figuren als Komponenten

Peter Brichzin. OOM und OOP. Didaktische Hinweise zum Informatikunterricht der Jahrgangsstufe 10

Peter Brichzin. OOM und OOP. Didaktische Hinweise zum Informatikunterricht der Jahrgangsstufe 10

Objektorientierte Programmierung

124 Kompetenzorientierte Aufgaben im Informatikunterricht

Probeklausur: Programmierung WS04/05

Theorie zu Übung 8 Implementierung in Java

Konzepte objektorientierter Programmierung

11. GUI-Programmierung mit SWING Überblick

Kapitel X - Zeichnen mit Java2D

Programmieren in Java

Universität Karlsruhe (TH)

// compiliert, aber Programmabbruch zur Laufzeit: einesuppe = ((EßbarerPilz)einPilz).kochen();

Abgabe: keine Pflichtabgabe (vor 12 Uhr) Aufgabe 10.1 (P) Vererbung Gegeben seien folgende Java-Klassen:

Institut für Programmierung und Reaktive Systeme. Java 7. Markus Reschke

Softwaretechnik (Medieninformatik): GUIs mit Swing Überblick

Objektorientierte Programmierung. Kapitel 22: Aufzählungstypen (Enumeration Types)

Einführung in die Programmierung für Nebenfach Medieninformatik. Beat Rossmy, Michael Kirsch

Javakurs für Fortgeschrittene

Einführung in die Programmierung für Nebenfach Medieninformatik. Beat Rossmy, Michael Kirsch

Übung 09: Vererbung und Dynamische Bindung

Programmieren in Java

Aufgabenblatt 4. Aufgabe 3. Aufgabe 1. Aufgabe 2. Prof. Dr. Th. Letschert Algorithmen und Datenstrukturen

Versuchsziele Vertiefung im Verständnis der JFrame-Programmierung, Benutzung von Klassen für die Tabellenanzeige.

Objektorientierte und Funktionale Programmierung SS 2014

Programmieren II. Events (Ereignisse) Heusch 16.6 (2. Bd) Ratz 15. Institut für Angewandte Informatik

Programmieren II. Events (Ereignisse) Heusch 16.6 (2. Bd) Ratz 15. Institut für Angewandte Informatik

Beispiele für Ausdrücke. Der imperative Kern. Der imperative Kern. Imperativer Kern - Kontrollstrukturen. Deklarationen mit Initialisierung

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 15/16. Kapitel 7. Grafische Benutzeroberflächen 1

Objektorientierte Programmierung

Programmieren II. Java im Vergleich zu anderen Sprachen. Einführung: GUI. Einführung: Grafische Benutzeroberflächen. Dr.

Einstieg in die Informatik mit Java

allgemeine Übersicht / Struktur

Unterrichtsmaterialien in digitaler und in gedruckter Form. Auszug aus: Einführung in das objektorientierte Modellieren und Implementieren mit Java

Unterrichtsmaterialien in digitaler und in gedruckter Form. Auszug aus:

Informatik II Übung, Woche 17

Einführung in die Programmierung für Nebenfach Medieninformatik. Beat Rossmy, Michael Kirsch

Java-Programmierung mit NetBeans

Einführung in die Programmierung für Nebenfach Medieninformatik. Beat Rossmy, Michael Kirsch

Objektorientierte Programmierung Studiengang Medieninformatik

Physikalisch Technische Lehranstalt Wedel 31. Januar 2004 Prof. Dr. Uwe Schmidt

Projektarbeit Java. 4-Gewinnt. Berner Fachhochschule. 2004, Labor für Technische Informatik

Programmieren in Java -Eingangstest-

Graphische Benutzungsoberflächen mit Java. Einführung in NetBeans

Einführung in GUI-Programmierung. javax.swing

Kapitel 13. Abstrakte Methoden und Interfaces. Fachgebiet Knowledge Engineering Prof. Dr. Johannes Fürnkranz

Vererbung. Generalisierung und Spezialisierung Vererbung und Polymorphismus

Einführung in die Programmierung für NF. Übung

Vorlesung Datenstrukturen

Einstieg in die Informatik mit Java

Repetitorium Informatik (Java)

Anweisungen zur Ablaufsteuerung

Institut für Programmierung und Reaktive Systeme 17. Juli Programmieren II. Übungsklausur

Kapitel 9. Programmierkurs. Attribute von Klassen, Methoden und Variablen. 9.1 Attribute von Klassen, Methoden und Variablen

5 Das Projekt Apfelwein

Java für Computerlinguisten

Inhaltsverzeichnis 1 Einführung Die Software JGIS Grundlagen raumbezogener Daten

Objektorientierte Programmierung

12 Abstrakte Klassen, finale Klassen und Interfaces

UML / Fujaba. Generierung von Java-Quellcode aus UML-Diagrammen. Marcel Friedrich

Neben der Verwendung von Klassen ist Vererbung ein wichtiges Merkmal objektorientierter

Institut für Programmierung und Reaktive Systeme 6. Juli Programmieren II. Übungsklausur

! 1. Unterklassen und Vererbung! 2. Abstrakte Klassen und Interfaces! 3. Modularität und Pakete. II.4.2 Abstrakte Klassen und Interfaces - 1 -

Humboldt-Universität zu Berlin Wintersemester 2010/11 Institut für Informatik Grundlagen der Programmierung. 6. Übungsblatt

Programmieren 2 C++ Überblick

Webentwicklung mit Vaadin 7. Theoretische und praktische Einführung in Vaadin 7. Christian Dresen, Michael Gerdes, Sergej Schumilo

Verteidigung Großer Beleg

Programmieren II. Events (Ereignisse) Heusch 16.6 (2. Bd) Ratz 15. Institut für Angewandte Informatik

ÜBUNGS-BLOCK 8 AUFGABEN

Vorlesung Informatik II

Einführung in die Programmierung für NF. Grafische Benutzeroberflächen

Javakurs FSS Lehrstuhl Stuckenschmidt. Tag 3 - Objektorientierung

Informatik II Übung 6

Universität Augsburg, Institut für Informatik Sommersemester 2001 Prof. Dr. Martin Ester 08. Oktober Klausur II

Ursprünge. Die Syntax von Java. Das Wichtigste in Kürze. Konsequenzen. Weiteres Vorgehen. Rund um Java

Handbuch für die Erweiterbarkeit

UML (Unified Modelling Language) von Christian Bartl

Vorkurs Informatik WiSe 15/16

Rechtsbelehrung. Java und OOP Das Buch Christian Silberbauer 144

Herder-Gymnasium Minden

Programmieren mit Swing

EAD II Übung 5. Graphische Benutzungsoberfläche mit BlueJ

Tag 8 Repetitorium Informatik (Java)

Gui-Objekte und Datenmodellobjekte

Übungsblatt 13. Abgabe / Besprechung in Absprache mit dem Tutor

Der Ball kann angezeigt werden: anzeigen( ) {... } Der Ball kann z.b. seine Größe verändern: groesseaendern(int veraenderung) {... } usw.

Objektorientierte Programmierung Studiengang Medieninformatik

Silke Trißl Wissensmanagement in der Bioinformatik. Objektorientierte Programmierung (OOP) Vorstellung wie in der realen Welt: Farbe Hubraum Tank...

Innere Klassen. Innere Klassen. Page 1. Lernziele: innere Klassen, statische geschachtelte Klassen, anonyme Klassen.

Musterübung 09: Vererbung und Dynamische Bindung

Methoden und Klassen. Silke Trißl Wissensmanagement in der Bioinformatik

Info B VL 8: Abstrakte Klassen & Interfaces

Grafische Benutzeroberflächen

Silke Trißl, Prof. Ulf Leser Wissensmanagement in der Bioinformatik. Jede Applikation braucht eine Klasse mit einer main-methode

Objektorientierte Programmierung Studiengang Medieninformatik

Transkript:

Einführung in die objektorientierte Programmierung mit geometrischen Figuren als Komponenten Workshop am 10. Informatiktag NRW im Rahmen der INFOS 2011 an der Westfälischen Wilhelms-Universität Münster Christian Wolf Luisenschule, Gymnasium der Stadt Mülheim a.d. Ruhr Dienstag, 13. September 2011 Einführung in die OOP mit geometrischen Figuren als Komponenten 1

Abstract Modellieren und Implementieren ist verbindliche Aufgabe und Ziel des Informatikunterrichts Bei Wahl des objektorientierten Paradigmas (Sek II): Konzept Stifte und Mäuse (SuM) gern und aus guten Gründen eingesetzt Aber: SuM ist problembehaftet! Daher: Vorschlag und Erprobung des Konzeptes Geometric Figures as Swing Components (GeoFaSC) C. Wolf Einführung in die OOP mit geometrischen Figuren als Komponenten 2

Überblick Abstract Einleitung und Motivation Vorgaben und Empfehlungen,,Paradekonzept SuM Pro und Contra SuM Das GeoFaSC-Konzept Entwicklung GeoFaSC-Bibliothek Code-Snippet Vermeidung der SuM-Problematiken Praktischer Einsatz Anwendungsmöglichkeiten Vorraussetzungen C. Wolf Einführung in die OOP mit geometrischen Figuren als Komponenten 3

Vorgaben und Empfehlungen,,en détail Bildungsstandards Informatik für die Sekundarstufe I (2008) Prozessbereich Modellieren und Implementieren [GI 2008, S. 9]:,,Bei den Prozessen geht es um die Art, wie mit den Inhalten umgegangen wird. Dabei geht es um Arbeitsweisen, die in der Informatik besonders ausgeprägt sind etwa das Implementieren eines Modells [...]. [...] Die Schülerinnen und Schüler aller Jahrgangsstufen erstellen informatische Modelle zu gegebenen Sachverhalten, implementieren Modelle mit geeigneten Werkzeugen, reflektieren Modelle und deren Implementierung. C. Wolf Einführung in die OOP mit geometrischen Figuren als Komponenten 4

Vorgaben und Empfehlungen,,en détail Richtlinien und Lehrpläne für die Sekundarstufe II (1999) In der (2) Sequenz,,objektorientiert allgemein [MfSuW 1999, S. 47] heißt es:,,typisch für Anwendungsprogrammierung nach dem objektorientierten Ansatz ist es, in einer gegebenen Problemsituation Objekte und ihre Beziehungen zu identifizieren (Objektorientierte Analyse), sie in geeigneten Klassen abzubilden (Objektorientiertes Design), und diese schließlich in der gewählten Programmierumgebung zu implementieren (Objektorientierte Programmierung). C. Wolf Einführung in die OOP mit geometrischen Figuren als Komponenten 5

Vorgaben und Empfehlungen,,en détail Einheitliche Prüfungsanforderungen Informatik (2004) In [Kmk 2004, S. 4 f.] heißt es:,,objektorientierte Modellierung insbesondere: Objekt, Klasse, Beziehungen zwischen Klassen, Interaktion von Objekten, Klassendiagramm (z. B. mit UML),,Die Prüflinge [...], können [...] Klassenbildung einsetzen, sind insbesondere mit dem Modellbildungszyklus vertraut; dazu gehören in problemadäquater Auswahl und Reihenfolge: [...] Umsetzen 1 unter Berücksichtigung der zur Verfügung stehenden Werkzeuge und Hilfsmittel, Testen der Lösung, [...]. 1 Umsetzen, d.h. Implementieren C. Wolf Einführung in die OOP mit geometrischen Figuren als Komponenten 6

Vorgaben und Empfehlungen,,en détail Es lässt sich also konstatieren: Modellieren und Implementieren wird als Aufgabe und Ziel des gesamten schulischen Informatikunterrichts empfohlen objektorientiertes Modellieren (OOM) und Programmieren (OOP) ist bei Wahl des OO-Paradigmas verbindlich C. Wolf Einführung in die OOP mit geometrischen Figuren als Komponenten 7

Das SuM-Konzept,,Paradekonzept mit Software-Bibliothek als Werkzeug zur Einführung in die OOP 2 In [MfSuW 1999, S. 47] als,,ausgangspunkt erster Anwendungsentwicklungen empfohlen SuM-Bibliothek: Rechnerkomponenten modellierende Klassen Maus Tastatur Bildschirm sowie für universale Zeichenoperationen die Klasse Stift 2 Auch für weiterführende Inhalte und Konzepte eingesetzt, z.b. dynamische Datenstrukturen [Schriek 2006, Band II] C. Wolf Einführung in die OOP mit geometrischen Figuren als Komponenten 8

Das SuM-Konzept Pro-Argumente + Aus fachdidaktischer Sicht: Werkzeug für alle einführenden relevanten Inhalte und Konzepte bezüglich der OOP + Aus didaktisch-methodischer Sicht: Intuitiver, universaler Zeichenansatz (weil Stift-basiert) Dadurch: Grafikorientierung bei Programmlösungen Dadurch: Anschauung und,,visuelle Überprüfung der Programmlösungen + Praktikables Lehr-Lernmaterial existiert: Implementationen für Java und Python Erweiterungen verfügbar (z.b. einfacher GUI-Builder) Schrieks Schulbände [Schriek 2006] C. Wolf Einführung in die OOP mit geometrischen Figuren als Komponenten 9

Das SuM-Konzept Contra-Argumente Problematik 1: Verleitung zu trivialen, inadäquaten OOM Häufig wird nur genau ein Objekt verwendet, z.b. (Bunt)Stift Problematik 2: Fokussierung von Zeichenprimitiven Teils aufgeblähter Quellcode exemplarische Beleuchtung anhand der Programmierung einer grafischen (Verkehrs)Ampel C. Wolf Einführung in die OOP mit geometrischen Figuren als Komponenten 10

Das SuM-Konzept Contra-Argumente - Problematik 1 (Verleitung zu trivialen, inadäquaten OOM) Modell 1 (verleitet durch Stift-Ansatz [Spollwig 2004 u. 2006]): Fragwürdig, weil: Erwartete Klasse Lampe fehlt Warum hat eine Ampel einen Bildschirm und einen Stift? C. Wolf Einführung in die OOP mit geometrischen Figuren als Komponenten 11

Das SuM-Konzept Contra-Argumente - Problematik 1 (Verleitung zu inadäquater OOM) Modell 2: Sinnvoller, aber: Mit SuM nicht einfach zu realisieren Beide Klassen Ampel und Lampe benötigen zur Darstellung wieder die Klasse Stift C. Wolf Einführung in die OOP mit geometrischen Figuren als Komponenten 12

Das SuM-Konzept Contra-Argumente - Problematik 2 (Fokussierung von Zeichenprimitiven) Beispiel: Programmierung des Phasenwechsels von Grün auf Gelb nach Modell 1: buntstift.hoch(); buntstift.bewegebis(xkreisgruen, ykreisgruen); buntstift.runter(); buntstift.setzefuellmuster(muster.gefuellt); buntstift.setzefarbe(farbe.grau); buntstift.zeichnekreis(radiuskreisgruen) buntstift.hoch(); buntstift.bewegebis(xkreisgelb, ykreisgelb); buntstift.runter(); buntstift.setzefarbe(farbe.gelb); buntstift.zeichnekreis(radiuskreisgelb); C. Wolf Einführung in die OOP mit geometrischen Figuren als Komponenten 13

Das SuM-Konzept Contra-Argumente - Problematik 2 (Fokussierung von Zeichenprimitiven) Beispiel: Programmierung des Phasenwechsels von Grün auf Gelb nach Modell 1: buntstift.hoch(); buntstift.bewegebis(xkreisgruen, ykreisgruen); buntstift.runter();... nach Modell 2: gruenelampe.setzean(true); gelbelampe.setzean(false); C. Wolf Einführung in die OOP mit geometrischen Figuren als Komponenten 14

Das GeoFaSC-Konzept Entwicklung Beobachtung 1: Grafische Lösungen erfordern häufig geometrische Figuren und deren Komposition, Beispiele aus [Schriek, 2006]: Pfeil und Dartscheibe Linie und Kreise Abprallende Kugeln Kreise Wolf und Rotkäppchen Polylinie und Kreis Lokomotive und Waggons Rechtecke, Kreise und Linien Beobachtung 2: Swing als Java-basierte, objektorientierte und komponentenbasierte Grafikbibliothek [Loy u.a. 2002] Beobachtung 3: Spollwigs Vorschlag einer Grafikbibliothek ugrafik für Delphi [Spollwig 2006 und 2008] C. Wolf Einführung in die OOP mit geometrischen Figuren als Komponenten 15

Das GeoFaSC-Konzept Entwicklung Beobachtung 1: Grafische Lösungen erfordern häufig geometrische Figuren und deren Komposition, Beispiele aus [Schriek, 2006]: Pfeil und Dartscheibe Linie und Kreise Abprallende Kugeln Kreise Wolf und Rotkäppchen Polylinie und Kreis Lokomotive und Waggons Rechtecke, Kreise und Linien Beobachtung 2: Swing als Java-basierte, objektorientierte und komponentenbasierte Grafikbibliothek [Loy u.a. 2002] Beobachtung 3: Spollwigs Vorschlag einer Grafikbibliothek ugrafik für Delphi [Spollwig 2006 und 2008] C. Wolf Einführung in die OOP mit geometrischen Figuren als Komponenten 15

Das GeoFaSC-Konzept Entwicklung Beobachtung 1: Grafische Lösungen erfordern häufig geometrische Figuren und deren Komposition, Beispiele aus [Schriek, 2006]: Pfeil und Dartscheibe Linie und Kreise Abprallende Kugeln Kreise Wolf und Rotkäppchen Polylinie und Kreis Lokomotive und Waggons Rechtecke, Kreise und Linien Beobachtung 2: Swing als Java-basierte, objektorientierte und komponentenbasierte Grafikbibliothek [Loy u.a. 2002] Beobachtung 3: Spollwigs Vorschlag einer Grafikbibliothek ugrafik für Delphi [Spollwig 2006 und 2008] C. Wolf Einführung in die OOP mit geometrischen Figuren als Komponenten 15

Das GeoFaSC-Konzept Entwicklung Beobachtung 1: Grafische Lösungen erfordern häufig geometrische Figuren und deren Komposition, Beispiele aus [Schriek, 2006]: Pfeil und Dartscheibe Linie und Kreise Abprallende Kugeln Kreise Wolf und Rotkäppchen Polylinie und Kreis Lokomotive und Waggons Rechtecke, Kreise und Linien Beobachtung 2: Swing als Java-basierte, objektorientierte und komponentenbasierte Grafikbibliothek [Loy u.a. 2002] Beobachtung 3: Spollwigs Vorschlag einer Grafikbibliothek ugrafik für Delphi [Spollwig 2006 und 2008] C. Wolf Einführung in die OOP mit geometrischen Figuren als Komponenten 15

Das GeoFaSC-Konzept Entwicklung Beobachtung 1: Grafische Lösungen erfordern häufig geometrische Figuren und deren Komposition, Beispiele aus [Schriek, 2006]: Pfeil und Dartscheibe Linie und Kreise Abprallende Kugeln Kreise Wolf und Rotkäppchen Polylinie und Kreis Lokomotive und Waggons Rechtecke, Kreise und Linien Beobachtung 2: Swing als Java-basierte, objektorientierte und komponentenbasierte Grafikbibliothek [Loy u.a. 2002] Beobachtung 3: Spollwigs Vorschlag einer Grafikbibliothek ugrafik für Delphi [Spollwig 2006 und 2008] C. Wolf Einführung in die OOP mit geometrischen Figuren als Komponenten 15

Das GeoFaSC-Konzept Entwicklung Beobachtung 1: Grafische Lösungen erfordern häufig geometrische Figuren und deren Komposition, Beispiele aus [Schriek, 2006]: Pfeil und Dartscheibe Linie und Kreise Abprallende Kugeln Kreise Wolf und Rotkäppchen Polylinie und Kreis Lokomotive und Waggons Rechtecke, Kreise und Linien Beobachtung 2: Swing als Java-basierte, objektorientierte und komponentenbasierte Grafikbibliothek [Loy u.a. 2002] Beobachtung 3: Spollwigs Vorschlag einer Grafikbibliothek ugrafik für Delphi [Spollwig 2006 und 2008] C. Wolf Einführung in die OOP mit geometrischen Figuren als Komponenten 15

Das GeoFaSC-Konzept Entwicklung Beobachtung 1: Grafische Lösungen erfordern häufig geometrische Figuren und deren Komposition, Beispiele aus [Schriek, 2006]: Pfeil und Dartscheibe Linie und Kreise Abprallende Kugeln Kreise Wolf und Rotkäppchen Polylinie und Kreis Lokomotive und Waggons Rechtecke, Kreise und Linien Beobachtung 2: Swing als Java-basierte, objektorientierte und komponentenbasierte Grafikbibliothek [Loy u.a. 2002] Beobachtung 3: Spollwigs Vorschlag einer Grafikbibliothek ugrafik für Delphi [Spollwig 2006 und 2008] C. Wolf Einführung in die OOP mit geometrischen Figuren als Komponenten 15

Das GeoFaSC-Konzept Entwicklung Folgerung: Jede Figur sollte nicht Artefakt eines (Zeichen)Werkzeugs, sondern selbst ein Werkzeug sein! Anforderungen: 1. Eine Figur ist ein Objekt. 2. Eine Figur ist ohne Zeichenaufwand erzeugbar und verwaltbar. 3. Eine Figur besitzt Attribute, die sie eindeutig in einem Bezugssystem beschreiben. 4. Eine Figur besitzt Abfrage- und Änderungsdienste, mit denen man ihren Zustand lesen und schreiben kann. 5. Eine Figur ist eine (Swing) Komponente, d.h. sie kann andere Figuren und Komponenten inkludieren sowie auch selbst inkludiert werden. das GeoFaSC-Konzept C. Wolf Einführung in die OOP mit geometrischen Figuren als Komponenten 16

Das GeoFaSC-Konzept Entwicklung Folgerung: Jede Figur sollte nicht Artefakt eines (Zeichen)Werkzeugs, sondern selbst ein Werkzeug sein! Anforderungen: 1. Eine Figur ist ein Objekt. 2. Eine Figur ist ohne Zeichenaufwand erzeugbar und verwaltbar. 3. Eine Figur besitzt Attribute, die sie eindeutig in einem Bezugssystem beschreiben. 4. Eine Figur besitzt Abfrage- und Änderungsdienste, mit denen man ihren Zustand lesen und schreiben kann. 5. Eine Figur ist eine (Swing) Komponente, d.h. sie kann andere Figuren und Komponenten inkludieren sowie auch selbst inkludiert werden. das GeoFaSC-Konzept C. Wolf Einführung in die OOP mit geometrischen Figuren als Komponenten 16

Das GeoFaSC-Konzept Entwicklung Folgerung: Jede Figur sollte nicht Artefakt eines (Zeichen)Werkzeugs, sondern selbst ein Werkzeug sein! Anforderungen: 1. Eine Figur ist ein Objekt. 2. Eine Figur ist ohne Zeichenaufwand erzeugbar und verwaltbar. 3. Eine Figur besitzt Attribute, die sie eindeutig in einem Bezugssystem beschreiben. 4. Eine Figur besitzt Abfrage- und Änderungsdienste, mit denen man ihren Zustand lesen und schreiben kann. 5. Eine Figur ist eine (Swing) Komponente, d.h. sie kann andere Figuren und Komponenten inkludieren sowie auch selbst inkludiert werden. das GeoFaSC-Konzept C. Wolf Einführung in die OOP mit geometrischen Figuren als Komponenten 16

Das GeoFaSC-Konzept Entwicklung Folgerung: Jede Figur sollte nicht Artefakt eines (Zeichen)Werkzeugs, sondern selbst ein Werkzeug sein! Anforderungen: 1. Eine Figur ist ein Objekt. 2. Eine Figur ist ohne Zeichenaufwand erzeugbar und verwaltbar. 3. Eine Figur besitzt Attribute, die sie eindeutig in einem Bezugssystem beschreiben. 4. Eine Figur besitzt Abfrage- und Änderungsdienste, mit denen man ihren Zustand lesen und schreiben kann. 5. Eine Figur ist eine (Swing) Komponente, d.h. sie kann andere Figuren und Komponenten inkludieren sowie auch selbst inkludiert werden. das GeoFaSC-Konzept C. Wolf Einführung in die OOP mit geometrischen Figuren als Komponenten 16

Das GeoFaSC-Konzept Entwicklung Folgerung: Jede Figur sollte nicht Artefakt eines (Zeichen)Werkzeugs, sondern selbst ein Werkzeug sein! Anforderungen: 1. Eine Figur ist ein Objekt. 2. Eine Figur ist ohne Zeichenaufwand erzeugbar und verwaltbar. 3. Eine Figur besitzt Attribute, die sie eindeutig in einem Bezugssystem beschreiben. 4. Eine Figur besitzt Abfrage- und Änderungsdienste, mit denen man ihren Zustand lesen und schreiben kann. 5. Eine Figur ist eine (Swing) Komponente, d.h. sie kann andere Figuren und Komponenten inkludieren sowie auch selbst inkludiert werden. das GeoFaSC-Konzept C. Wolf Einführung in die OOP mit geometrischen Figuren als Komponenten 16

Das GeoFaSC-Konzept Entwicklung Folgerung: Jede Figur sollte nicht Artefakt eines (Zeichen)Werkzeugs, sondern selbst ein Werkzeug sein! Anforderungen: 1. Eine Figur ist ein Objekt. 2. Eine Figur ist ohne Zeichenaufwand erzeugbar und verwaltbar. 3. Eine Figur besitzt Attribute, die sie eindeutig in einem Bezugssystem beschreiben. 4. Eine Figur besitzt Abfrage- und Änderungsdienste, mit denen man ihren Zustand lesen und schreiben kann. 5. Eine Figur ist eine (Swing) Komponente, d.h. sie kann andere Figuren und Komponenten inkludieren sowie auch selbst inkludiert werden. das GeoFaSC-Konzept C. Wolf Einführung in die OOP mit geometrischen Figuren als Komponenten 16

Das GeoFaSC-Konzept Entwicklung Folgerung: Jede Figur sollte nicht Artefakt eines (Zeichen)Werkzeugs, sondern selbst ein Werkzeug sein! Anforderungen: 1. Eine Figur ist ein Objekt. 2. Eine Figur ist ohne Zeichenaufwand erzeugbar und verwaltbar. 3. Eine Figur besitzt Attribute, die sie eindeutig in einem Bezugssystem beschreiben. 4. Eine Figur besitzt Abfrage- und Änderungsdienste, mit denen man ihren Zustand lesen und schreiben kann. 5. Eine Figur ist eine (Swing) Komponente, d.h. sie kann andere Figuren und Komponenten inkludieren sowie auch selbst inkludiert werden. das GeoFaSC-Konzept C. Wolf Einführung in die OOP mit geometrischen Figuren als Komponenten 16

Die GeoFaSC-Bibliothek Programmierwerkzeug als Umsetzung des Konzeptes Implementierung relevanter Figuren gemäß Anforderungen: Circle, Ellipse, LineSegment, Point, Polyline (Polygon wenn geschlossen), Rectangle und Square. Als Open-Source-Software unter der GPLv3 mit umfangreicher Dokumentation und Sample-Code unter http://geofasc.de C. Wolf Einführung in die OOP mit geometrischen Figuren als Komponenten 17

Die GeoFaSC-Bibliothek Wichtige Features Figuren sind basierend auf Swing [Loy u.a. 2002] wie Elemente grafischer Benutzeroberflächen implementiert Unterstützung des in Swing üblichen Model-UI-Component-Entwurfsmuster 3 [Fowler] (Neu)Zeichnen ist gekapselt und funktioniert automatisch Model und View können vor und zur Laufzeit ausgetauscht werden Unterstützung des Composite-Entwurfsmusters Erzeugung zusammengesetzter Figuren/ Komponenten in beliebiger Tiefe durch Schachtelung 3 Eine Abwandlung des Model-View-Controller-Entwurfsmusters C. Wolf Einführung in die OOP mit geometrischen Figuren als Komponenten 18

Die GeoFaSC-Bibliothek Wichtige Features Figuren sind basierend auf Swing [Loy u.a. 2002] wie Elemente grafischer Benutzeroberflächen implementiert Unterstützung des in Swing üblichen Model-UI-Component-Entwurfsmuster 3 [Fowler] (Neu)Zeichnen ist gekapselt und funktioniert automatisch Model und View können vor und zur Laufzeit ausgetauscht werden Unterstützung des Composite-Entwurfsmusters Erzeugung zusammengesetzter Figuren/ Komponenten in beliebiger Tiefe durch Schachtelung 3 Eine Abwandlung des Model-View-Controller-Entwurfsmusters C. Wolf Einführung in die OOP mit geometrischen Figuren als Komponenten 18

Die GeoFaSC-Bibliothek Wichtige Features Figuren sind basierend auf Swing [Loy u.a. 2002] wie Elemente grafischer Benutzeroberflächen implementiert Unterstützung des in Swing üblichen Model-UI-Component-Entwurfsmuster 3 [Fowler] (Neu)Zeichnen ist gekapselt und funktioniert automatisch Model und View können vor und zur Laufzeit ausgetauscht werden Unterstützung des Composite-Entwurfsmusters Erzeugung zusammengesetzter Figuren/ Komponenten in beliebiger Tiefe durch Schachtelung 3 Eine Abwandlung des Model-View-Controller-Entwurfsmusters C. Wolf Einführung in die OOP mit geometrischen Figuren als Komponenten 18

Die GeoFaSC-Bibliothek Code-Snippet: Rechteck mit Kreis und Button Rectangle rectangle = new Rectangle(70, 190); // Breite x Höhe in Pixel rectangle.setroundedcorners(true); rectangle.setarcsize(arcwidth, archeight); rectangle.setdirection(45);... Circle circle = new Circle(); CircleModel model = circle.getmodel(); model.setradius(60); model.setfigurelocation(20, 20);... // Leerer Kreis // Zugriff übers Modell JButton button = new JButton("Click"); button.setbounds(20, 80, 60, 20) // x, y, Breite, Höhe... rectangle.add(circle); // rectangle inkludiert circle rectangle.add(button); // rectangle inkludiert button C. Wolf Einführung in die OOP mit geometrischen Figuren als Komponenten 19

Die GeoFaSC-Bibliothek Code-Snippet: Figuren sichtbar machen Beliebige Top-Level Container dürfen verwendet werden: import javax.swing.*;... JPanel canvas = new JPanel(); JFrame frame = new JFrame("Some figures..."); frame.setcontentpane(canvas); frame.setsize(640, 480); frame.setvisible(true); canvas.add(rectangle); // rectangle mit circle u. button sichtbar machen Alternativ: import geofasc.swing.tool.*;... Frame frame = new Frame("Some figures..."); frame.setvisible(true); frame.getcanvas().add(rectangle); C. Wolf Einführung in die OOP mit geometrischen Figuren als Komponenten 20

Die GeoFaSC-Bibliothek Code-Snippet: Lampe und Ampel Modell 2,,GeoFaSC-like : C. Wolf Einführung in die OOP mit geometrischen Figuren als Komponenten 21

Die GeoFaSC-Bibliothek Code-Snippet: Lampe und Ampel import java.awt.color; import geofasc.swing.circle public class Lamp extends Circle { private static Color OFF_COLOR = Color.DARK_GRAY; private Color moncolor; private boolean mison; public Lamp(int x, int y, int radius, Color oncolor, boolean ison) { super(x, y, radius); moncolor = oncolor; setfigurefilled(true); seton(ison); } public boolean ison() { return mison; } public void seton(boolean on) { mison = on; if (mison) setfigurefillcolor(moncolor); else setfigurefillcolor(off_color); } } // class Lamp C. Wolf Einführung in die OOP mit geometrischen Figuren als Komponenten 22

Die GeoFaSC-Bibliothek Code-Snippet: Lampe und Ampel import java.awt.color; import geofasc.swing.rectangle; public class TrafficLight extends Rectangle { private Lamp mredlamp, myellowlamp, mgreenlamp; // 1 = RED, 2 = RED_YELLOW, 3 = GREEN, 4 = YELLOW private int mstate; public TrafficLight() { super(70, 190); setfigurefillcolor(color.black); setfigurefilled(true); mstate = 1; mredlamp = new Lamp(10, 10, 50, Color.RED, true); myellowlamp = new Lamp(10, 70, 50, Color.YELLOW, false); mgreenlamp = new Lamp(10, 130, 50, Color.GREEN, false); add(mredlamp); add(myellowlamp); add(mgreenlamp); } public int getstate() { return mstate; } public void setnextstate() { setstate(mstate + 1); } public void setstate(int state) { mstate = state; if (mstate > 4) mstate = 1; switch (mstate) { case 1: // RED mredlamp.seton(true); myellowlamp.seton(false); mgreenlamp.seton(false); break; case 2: // RED_YELLOW... } } } // class TrafficLight C. Wolf Einführung in die OOP mit geometrischen Figuren als Komponenten 23

Kurze Demo... C. Wolf Einführung in die OOP mit geometrischen Figuren als Komponenten 24

Das GeoFaSC-Konzept Wie vermeidet GeoFaSC die Problematiken? Vs. Problematik 1 (Verleitung zu trivialen, inadäquaten OOM): Fehlendes, universales Zeichenwerkzeug und automatisches (Neu)Zeichnen von Figuren Defokussierung des Zeichnens und,,blick für Wesentliches Ermutigung zu nicht-trivialen, wirklichkeitsnäheren Modellen Vs. Problematik 2 (Fokussierung von Zeichenprimitiven): Trennung der Zuständigkeiten, insbesondere automatisches (Neu)Zeichnen der Figuren Programmierer muss nicht zuständig sein für das Zeichnen (er darf jedoch bei Bedarf) Einfachere Umsetzung der nicht-trivialen, wirklichkeitsnäheren Modelle C. Wolf Einführung in die OOP mit geometrischen Figuren als Komponenten 25

Das GeoFaSC-Konzept Wie vermeidet GeoFaSC die Problematiken? Vs. Problematik 1 (Verleitung zu trivialen, inadäquaten OOM): Fehlendes, universales Zeichenwerkzeug und automatisches (Neu)Zeichnen von Figuren Defokussierung des Zeichnens und,,blick für Wesentliches Ermutigung zu nicht-trivialen, wirklichkeitsnäheren Modellen Vs. Problematik 2 (Fokussierung von Zeichenprimitiven): Trennung der Zuständigkeiten, insbesondere automatisches (Neu)Zeichnen der Figuren Programmierer muss nicht zuständig sein für das Zeichnen (er darf jedoch bei Bedarf) Einfachere Umsetzung der nicht-trivialen, wirklichkeitsnäheren Modelle C. Wolf Einführung in die OOP mit geometrischen Figuren als Komponenten 25

Das GeoFaSC-Konzept Wie vermeidet GeoFaSC die Problematiken? Vs. Problematik 1 (Verleitung zu trivialen, inadäquaten OOM): Fehlendes, universales Zeichenwerkzeug und automatisches (Neu)Zeichnen von Figuren Defokussierung des Zeichnens und,,blick für Wesentliches Ermutigung zu nicht-trivialen, wirklichkeitsnäheren Modellen Vs. Problematik 2 (Fokussierung von Zeichenprimitiven): Trennung der Zuständigkeiten, insbesondere automatisches (Neu)Zeichnen der Figuren Programmierer muss nicht zuständig sein für das Zeichnen (er darf jedoch bei Bedarf) Einfachere Umsetzung der nicht-trivialen, wirklichkeitsnäheren Modelle C. Wolf Einführung in die OOP mit geometrischen Figuren als Komponenten 25

Das GeoFaSC-Konzept Wie vermeidet GeoFaSC die Problematiken? Vs. Problematik 1 (Verleitung zu trivialen, inadäquaten OOM): Fehlendes, universales Zeichenwerkzeug und automatisches (Neu)Zeichnen von Figuren Defokussierung des Zeichnens und,,blick für Wesentliches Ermutigung zu nicht-trivialen, wirklichkeitsnäheren Modellen Vs. Problematik 2 (Fokussierung von Zeichenprimitiven): Trennung der Zuständigkeiten, insbesondere automatisches (Neu)Zeichnen der Figuren Programmierer muss nicht zuständig sein für das Zeichnen (er darf jedoch bei Bedarf) Einfachere Umsetzung der nicht-trivialen, wirklichkeitsnäheren Modelle C. Wolf Einführung in die OOP mit geometrischen Figuren als Komponenten 25

Das GeoFaSC-Konzept Wie vermeidet GeoFaSC die Problematiken? Vs. Problematik 1 (Verleitung zu trivialen, inadäquaten OOM): Fehlendes, universales Zeichenwerkzeug und automatisches (Neu)Zeichnen von Figuren Defokussierung des Zeichnens und,,blick für Wesentliches Ermutigung zu nicht-trivialen, wirklichkeitsnäheren Modellen Vs. Problematik 2 (Fokussierung von Zeichenprimitiven): Trennung der Zuständigkeiten, insbesondere automatisches (Neu)Zeichnen der Figuren Programmierer muss nicht zuständig sein für das Zeichnen (er darf jedoch bei Bedarf) Einfachere Umsetzung der nicht-trivialen, wirklichkeitsnäheren Modelle C. Wolf Einführung in die OOP mit geometrischen Figuren als Komponenten 25

Das GeoFaSC-Konzept Wie vermeidet GeoFaSC die Problematiken? Vs. Problematik 1 (Verleitung zu trivialen, inadäquaten OOM): Fehlendes, universales Zeichenwerkzeug und automatisches (Neu)Zeichnen von Figuren Defokussierung des Zeichnens und,,blick für Wesentliches Ermutigung zu nicht-trivialen, wirklichkeitsnäheren Modellen Vs. Problematik 2 (Fokussierung von Zeichenprimitiven): Trennung der Zuständigkeiten, insbesondere automatisches (Neu)Zeichnen der Figuren Programmierer muss nicht zuständig sein für das Zeichnen (er darf jedoch bei Bedarf) Einfachere Umsetzung der nicht-trivialen, wirklichkeitsnäheren Modelle C. Wolf Einführung in die OOP mit geometrischen Figuren als Komponenten 25

Das GeoFaSC-Konzept Wie vermeidet GeoFaSC die Problematiken? Vs. Problematik 1 (Verleitung zu trivialen, inadäquaten OOM): Fehlendes, universales Zeichenwerkzeug und automatisches (Neu)Zeichnen von Figuren Defokussierung des Zeichnens und,,blick für Wesentliches Ermutigung zu nicht-trivialen, wirklichkeitsnäheren Modellen Vs. Problematik 2 (Fokussierung von Zeichenprimitiven): Trennung der Zuständigkeiten, insbesondere automatisches (Neu)Zeichnen der Figuren Programmierer muss nicht zuständig sein für das Zeichnen (er darf jedoch bei Bedarf) Einfachere Umsetzung der nicht-trivialen, wirklichkeitsnäheren Modelle C. Wolf Einführung in die OOP mit geometrischen Figuren als Komponenten 25

Das GeoFaSC-Konzept Wie vermeidet GeoFaSC die Problematiken? Vs. Problematik 1 (Verleitung zu trivialen, inadäquaten OOM): Fehlendes, universales Zeichenwerkzeug und automatisches (Neu)Zeichnen von Figuren Defokussierung des Zeichnens und,,blick für Wesentliches Ermutigung zu nicht-trivialen, wirklichkeitsnäheren Modellen Vs. Problematik 2 (Fokussierung von Zeichenprimitiven): Trennung der Zuständigkeiten, insbesondere automatisches (Neu)Zeichnen der Figuren Programmierer muss nicht zuständig sein für das Zeichnen (er darf jedoch bei Bedarf) Einfachere Umsetzung der nicht-trivialen, wirklichkeitsnäheren Modelle C. Wolf Einführung in die OOP mit geometrischen Figuren als Komponenten 25

Anwendungsmöglichkeiten Allgemein: Einführung in die OOP mit Java und Fokus Grafikorientierung sowie Vermeidung der SuM-Problematiken Unterrichtspraktische Beispiele (z.t. adaptiert aus [Schriek 2006]): Lamp, TrafficLight und DiscoLights (Beziehungen, Komponentenansatz) Bullet und FlyingBullets (Beziehungen, Animation) Pencil, Wolf und Rotkaeppchen (Eigene Klassen) Windradpark, Windrad und TwinFluegel (Kontrollstrukturen) Dictatorship (1- und 2-dim. Arrays) C. Wolf Einführung in die OOP mit geometrischen Figuren als Komponenten 26

Kurze Demo... C. Wolf Einführung in die OOP mit geometrischen Figuren als Komponenten 27

Voraussetzungen Didaktische: Lerngruppen der Sek II Mathematische Kenntnis der grundlegenden Figuren Koordinatenbegriff und Koordinatensystem (auch verschachtelte) Grundlegende Englisch-Kenntnisse (da Implementierung in Englisch) KEINE Kenntnisse in Swing und des MVC-Entwurfsmusters nötig Technische: Java Development Kit (ab Version 1.5.20) Entwicklungsumgebung (z.b. BlueJ, Eclipse, Netbeans) Zugang zur Dokumentation/ Referenz C. Wolf Einführung in die OOP mit geometrischen Figuren als Komponenten 28

Literatur [Fowler] [GI 2008] [Kmk 1989] [Loy u.a. 2002] [MfSuW 1999] Fowler, Amy: A Swing Architecture Overview. Bericht, Oracle Sun Developer Network (SDN). http://java.sun.com/products/jfc/tsc/articles/architecture/ (abgerufen: 4. März 2011). Gesellschaft für Informatik: Grundsätze und Standards für die Informatik in der Schule. Bildungsstandards Informatik für die Sekundarstufe I. Empfehlungen der Gesellschaft für Informatik e.v. erarbeitet vom Arbeitskreis Bildungsstandards. http://www.gi-ev.de/fileadmin/gliederungen/fb-iad/fa-ibs/empfehlungen/ bildungsstandards_2008.pdf (abgerufen: 24. August 2011). Kultusministerkonferenz: Einheitliche Prüfungsanforderungen Informatik. http://www.kmk.org/fileadmin/veroeffentlichungen_beschluesse/1989/1989_12_ 01-EPA-Informatik.pdf (abgerufen: 31. März 2011), 1989. i.d.f. vom 05.02.2004. Loy, Marc; Eckstein, Robert und Wood, David: Java Swing. O Reilly Media, 2002. Ministerium für Schule und Weiterbildung: Richtlinien und Lehrpläne für die Sekundarstufe II - Gymnasium/Gesamtschule in Nordrhein-Westfalen. Informatik. Ritterbach Verlag, 1999. C. Wolf Einführung in die OOP mit geometrischen Figuren als Komponenten 29

Literatur [Schriek 2006] [Spollwig 2004] [Spollwig 2006] [Spollwig 2008] [Wolf 2010] [Wolf 2011] Schriek, Bernhard: Informatik mit Java - Eine Einführung mit BlueJ und der Bibliothek Stifte und Mäuse, Bände I-III. Nili-Verlag, 2005 2007. Spollwig, Siegfried: Kritisches zu Stiften und Mäusen - Was ist objektorientierte Modellierung? LOG IN, 130, 2004. Spollwig, Siegfried: Von Stiften und Mäusen oder,,was heisst objektorientierte Modellierung? http: //oszhdl.be.schule.de/gymnasium/faecher/informatik/didaktik/sum/sum-kritik.htm (abgerufen: 4. März 2011), 2006. Spollwig, Siegfried: delphi class in a box. Cornelsen, 2008. Wolf, Christian: GeoFaSC - Geometric Figures as Swing Components. http://www.geofasc.de (abgerufen: 4. März 2011), 2010. Wolf, Christian: Praxisbericht: Objektorientierte Programmierung mit geometrischen Figuren als Komponenten. In: Weigend, M.; Thomas, M.; Otte, F. (Hrsg.): Informatik mit Kopf, Herz und Hand (INFOS 2011 14. GI-Fachtagung Informatik und Schule, Münster). Bd. 1 Münster, S. im Druck. ZfL-Verlag, 2011. C. Wolf Einführung in die OOP mit geometrischen Figuren als Komponenten 30