Das Lehren von objektorientierter Programmierung in Java - SH-Hill

Werbung
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
Herunterladen