Das Lehren von objektorientierter Programmierung in Java mit Dr. Axel Schmolitzky Arbeitsbereich Softwaretechnik Fachbereich Informatik Universität Hamburg Überblick Kurz zu meiner Person Objektorientierung in Softwareentwicklung und Lehre Hintergrund von BlueJ Entwurfsprinzipien für BlueJ Demo Unterstützung für BlueJ 1 Zu meiner Person Informatikstudium Uni Bremen Î Wissenschaftlicher Mitarbeiter Uni Ulm Î Î Monash University, Melbourne, Australien u.a. Mitarbeit im BlueJ-Team Wissenschaftlicher Assistent Uni Hamburg Î Dissertation 1999 DAAD Postdoc-Stipendiat, 1999-2000 Î Diplomabschluss 1993 AB Softwaretechnik, seit 1.4.2001 Senior-Entwickler bei der it-wps GmbH Î Î Schulungen, Coaching, Beratung, Entwicklung seit Anfang 2003 nur noch freiberuflich Was ist Objektorientierung? Eine Sicht auf die Welt: Î Î „Die Welt besteht aus Objekten, die miteinander interagieren. Objekte befinden sich in Zuständen, die sich über die Zeit ändern können. Objekte lassen sich klassifizieren.“ Intuitiv verständlich Gut vermittelbar Ein Verständnis von Softwaresystemen: „Ein Softwaresystem besteht aus Objekten, die miteinander über Aufrufe kommunizieren. Objekte kapseln Zustände, die über Operationen auf Objekten geändert werden können. Objekte sind Exemplare von Klassen.“ 2 Objektorientierung überall... Objektorientierte Analyse Objektorientierte Modellierung Objektorientierte Programmierung ... Objektorientierte Programmierung OOP ist eine Evolution imperativer Programmierung Î OOP ist deshalb im Kern imperativ Î Î kein grundlegend anderes Paradigma (im Gegensatz zu funktionaler und logischer Programmierung) zustandsbasiert Kontrollstrukturen: Sequenz, Selektion, Wiederholung OOP ist eine Abstraktion „oberhalb“ prozeduraler Konzepte Î Methodenrümpfe der Klassen (die das Verhalten der Objekte festlegen) bestehen aus klassisch sequenziellen Anweisungen 3 Abstraktionen imperativer Programmierung Objektorientierte Programmierung Klassen Methoden Vererbung Prozedurale Programmierung Variablen Typen Prozeduren AssemblerProgrammierung Register logische Adressierung Sprünge Hardware Thema Modellierung Informatische Modellierung „Im Informatikunterricht lernen die Schülerinnen und Schüler, eine Problemsituation zu analysieren, zu modellieren und ein den Anforderungen entsprechendes Modell auf den in der Schule vorhandenen Informatiksystemen zu implementieren. Sie klassifizieren Modelle und modifizieren gegebene Modelle. Sie erarbeiten und üben unterschiedliche Modellierungstechniken, die ihnen auch außerhalb des Informatikunterrichts die Strukturierung und Beherrschung großer und komplexer Wissensbestände ermöglichen.“ (aus dem Rahmenplan Informatik für die gymnasiale Oberstufe) 4 Der Modellbegriff Ein Modell hat drei Merkmale: Î Abbildungsmerkmal • „Modelle sind stets Modelle von etwas, nämlich Abbildungen, Repräsentationen natürlicher oder künstlicher Originale, die selbst wieder Modelle sein können.“ Î Verkürzungsmerkmal • „Modelle erfassen im allgemeinen nicht alle Attribute des durch sie repräsentierten Originals, sondern nur solche, die den jeweiligen Modellerschaffern und/oder Modellbenutzern relevant scheinen.“ Î Pragmatisches Merkmal • „Modelle sind ihren Originalen nicht per se eindeutig zugeordnet. Sie erfüllen ihre Ersetzungsfunktion a) für bestimmte – erkennende und/oder handelnde, modellbenutzende – Subjekte, b) innerhalb bestimmter Zeitintervalle und c) unter Einschränkung auf bestimmte gedankliche oder tatsächliche Operationen.“ (Nach Stachowiak: Allgemeine Modelltheorie, 1973) Modelle und Software Anwendungsbereich wirkt auf modelliert Ausschnitt Modell des Anwendungsbereichs implementiert Anwendungssystem führt aus Modell des Anwendungssystems (Programmtext) 5 Rolle der Objektorientierung Das Paradigma prägt seit langem die Softwareentwicklung: Î Î Î Î Objektorientierte Analyse hat die Strukturierte Analyse abgelöst Bruchlose Übergänge von Analyse über Entwurf zu Implementierung möglich Kernabstraktionen eines Anwendungsbereichs häufig intuitiv objektorientiert modellierbar Moderne Softwaretechniksprachen sind objektorientiert: Eiffel, C++, Java, C# Praxisnahe Schulbildung sollte Objektorientierung prominent berücksichtigen! Objektorientierung in der Lehre? Unis Anfang der 90er: ein Thema für das Hauptstudium Langsames „Hineinwachsen“ in das Grundstudium in den 90ern Heute: heterogene Hochschullandschaft Î Imperativer Einstieg Î Funktionaler Einstieg Î Objektorientierter Einstieg („Objects First“) 6 Objects First? Klassisch: imperative Grundlagen zuerst Î Erst: Variablen, Ausdrücke, Kontrollstrukturen, Basisdatentypen, Algorithmen Î Später: Klassen und Objekte, Vererbung Î Definiert Struktur der meisten Lehrbücher Objects First: Objekte als Ausgangspunkt Î „Inverted Curriculum“ Î „Opening Black Boxes“ Î Erfordert Werkzeugunterstützung... Hintergrund: Blue (ohne J) Vorgänger von BlueJ Sprache und Umgebung für OO Lehre Alternative zu C++ ... entwickelt ’94-’96 Universität Sydney seit ’97 an Sydney Uni eingesetzt geschrieben in C++: nur unter Unix ... 7 Java kommt in’s Spiel... Java löst C++ in der Lehre ab gesucht: IDE für die Lehre BlueJ: Blue-Umgebung für Java implementiert in Java auf allen Plattformen verfügbar frei erhältlich unterstützt durch Sun Microsystems Designprinzipien für Blue(J) Objektorientiert! Interaktiv Visualisieren Einfach 8 Interaktion Interaktion mit Klassen Î Konstruktoren interaktiv aufrufbar Interaktion mit Objekten Î Exemplarmethoden interaktiv aufrufbar Î Objektzustände überprüfbar beliebige Parameter übergebbar Î Objekte „zum Anfassen“ Visualisierung Klassen und Objekte sind sichtbar. Beziehungen zwischen Klassen („benutzt“ und „erbt“) sind sichtbar. Designentscheidungen werden sichtbar und diskutierbar. 9 Einfachheit Beschränkung auf OO Kernkonzepte: Î Klassen Î Objekte Î Methoden in kürzester Zeit beherrschbar kein „Feature-Overkill“ Sonstiges BlueJ bietet außerdem... Î Protokollierung von Ein-/Ausgaben Î Unterstützung für Javadoc Î einen einfachen Debugger Î Testunterstützung 10 Demo Unterstützung für BlueJ Gut betreute Homepage: www.bluej.org Englische Newsliste mit Diskussionen zu BlueJ Eigene Webseite mit Lehrmaterialien (passwortgeschützt) 11 Das Buch zu BlueJ David Barnes, Michael Kölling: Objects First with Java – A Practical Introduction using BlueJ, Prentice-Hall/Pearson Education, 2002. David Barnes, Michael Kölling: Objektorientierte Programmierung mit Java – eine praxisnahe Einführung mit BlueJ, Pearson Education Deutschland, 2003. 12