4.0
Michael KöllingUniversity of KentCanterbury, UK
Proinformatik III
Objektorientierte Programmierung
ProInformatik III: Objektorientierte Programmierung, © David J. Barnes, Michael Kölling
Selbstbestimmtes Lernen
• Vorlesung• Tutorium• Übungen• Buch• Web-Seite• Üben, üben, üben!
ProInformatik III: Objektorientierte Programmierung, © David J. Barnes, Michael Kölling
Format
• Vorlesung: 9-12• Tutorium: 14-16 / 16-18
• Tutorium: Diskussionen, Übungen, praktische Arbeit!
ProInformatik III: Objektorientierte Programmierung, © David J. Barnes, Michael Kölling
Inhalt
• Einführung in die objektorientierte Programmierung…
• …mit starkem Software Engineering-Fokus…
• …mit dem Ziel, große, qualitativ gute Softwaresysteme zu entwickeln und zu warten.
ProInformatik III: Objektorientierte Programmierung, © David J. Barnes, Michael Kölling
Buzzwords
interfacejavadoc
encapsulation
couplingcohesion
polymorphic method calls
inheritance
mutator methodscollection classes
overridingiterators
responsibility-driven design
ProInformatik III: Objektorientierte Programmierung, © David J. Barnes, Michael Kölling
Ziele
• Gutes Beherrschen wichtiger Programmierkonzepte
• Gutes Verständnis von Objektorientierung
• In der Lage, ein (kleines) Softwaresystem kritisch zu beurteilen
• In der Lage, ein kleines Software-
system in Java zu implementieren
ProInformatik III: Objektorientierte Programmierung, © David J. Barnes, Michael Kölling
BlueJ
ProInformatik III: Objektorientierte Programmierung, © David J. Barnes, Michael Kölling
Buch
David J. Barnes & Michael Kölling
Java lernen mit BlueJ: Eine
Einführung in die objektorientierte
Programmierung
4. Auflage, Pearson Studium, 2009ISBN 978-3-8689-4001-5
Textb
uch
ProInformatik III: Objektorientierte Programmierung, © David J. Barnes, Michael Kölling
Überblick (1)
• Objekte und Klassen
• Klassendefinitionen verstehen
• Objektinteraktion
• Objektgruppen
• Fortgeschrittene Funktionalität – Libraries
• Qualität - Testen, Warten, Debugging
• Klassendesign
ProInformatik III: Objektorientierte Programmierung, © David J. Barnes, Michael Kölling
Is it hard?
ProInformatik III: Objektorientierte Programmierung, © David J. Barnes, Michael Kölling
ProInformatik III: Objektorientierte Programmierung, © David J. Barnes, Michael Kölling
BlueJ
ProInformatik III: Objektorientierte Programmierung, © David J. Barnes, Michael Kölling
Grundkonzepte
• Objekt• Klasse• Methode• Parameter• Datentyp
ProInformatik III: Objektorientierte Programmierung, © David J. Barnes, Michael Kölling
Objekte und Klassen
• Objekte– repräsentieren ‘Dinge’ aus der realen
Welt oder aus einer Problemdomäne (Beispiel: “das rote Auto dort unten auf dem Parkplatz”)
• Klassen– repräsentieren alle Objekte einer Art
(Beispiel: “Auto”)
ProInformatik III: Objektorientierte Programmierung, © David J. Barnes, Michael Kölling
Methoden und Parameter
• Objekte haben Operationen, die ausgeführt werden können (in Java: Methoden).
• Methoden können Parameter haben, um weitere Informationen to bekommen, die zur Ausführung notwendig sind.
ProInformatik III: Objektorientierte Programmierung, © David J. Barnes, Michael Kölling
Andere Beobachtungen
• Viele Instanzen können von einer einzigen Klasse erzeugt werden.
• Ein Objekt hat Attribute: Werte werden in Feldern gespeichert.
• Die Klasse definiert, welche Felder ein Objekt hat, aber jedes Objekt speichert seine eigenen Werte (der Zustand des Objektes).
ProInformatik III: Objektorientierte Programmierung, © David J. Barnes, Michael Kölling
Zustand
ProInformatik III: Objektorientierte Programmierung, © David J. Barnes, Michael Kölling
Zwei Circle-Objekte
ProInformatik III: Objektorientierte Programmierung, © David J. Barnes, Michael Kölling
Rückgabewerte
• Methoden können ein Ergebnis (Rückgabewert) zurückgeben.
ProInformatik III: Objektorientierte Programmierung, © David J. Barnes, Michael Kölling
Quelltext (Source code)
• Jede Klasse hat einen Quelltext (Java Code), der ihre Details definiert (Felder und Methoden).
ProInformatik III: Objektorientierte Programmierung, © David J. Barnes, Michael Kölling
Greenfoot
ProInformatik III: Objektorientierte Programmierung, © David J. Barnes, Michael Kölling
BuchMichael Kölling
Einführung in Java mit GreenfootSpielerische Programmierung mit Java
Pearson Studium, August 2010
ISBN: 978-3-8689-4902-5
E
mpfohlen
Klassendefinitionen verstehen
Klassenautopsie
4.0
ProInformatik III: Objektorientierte Programmierung, © David J. Barnes, Michael Kölling ProInformatik III: Objektorientierte Programmierung, © David J. Barnes, Michael Kölling
Konzepte
• Felder• Konstruktoren• Methoden• Parameter
ProInformatik III: Objektorientierte Programmierung, © David J. Barnes, Michael Kölling
Ticketmaschinen – Externe Ansicht
• Untersuchung des Verhaltens einer typischen Ticketmaschine.– Siehe: naive-ticket-machine–Projekt.– Maschinen geben Tickets zu einem festen
Preis aus.• Wie wird der Preis festgelegt?
– Wie wird ‘Geld’ eingegeben?– Wie merkt sich die Maschine, wieviel
Geld eingeworfen wurde?
ProInformatik III: Objektorientierte Programmierung, © David J. Barnes, Michael Kölling
Ticketmaschinen
Demo
ProInformatik III: Objektorientierte Programmierung, © David J. Barnes, Michael Kölling
Ticketmaschinen – Interne Ansicht
• Interaktion mit einem Objekt gibt uns Hinweise zu seinem Verhalten.
• Wenn wir den Quelltext der Klasse angucken sehen wir, wie das Verhalten implementiert wurde.
• Alle Java-Klassen haben eine ähnliche innere Struktur.
ProInformatik III: Objektorientierte Programmierung, © David J. Barnes, Michael Kölling
Grundstruktur einer Klasse
public class TicketMachine{ Innerer Teil der Klasse ausgelassen.}
public class KlassenName{ Felder Konstruktoren Methoden}
Der äußere Rahmen von TicketMachine
Inhalt der Klasse
ProInformatik III: Objektorientierte Programmierung, © David J. Barnes, Michael Kölling
Felder
• Felder speichern Werte für ein Objekt.
• Sie werden auch Instanzvariablen genannt.
• Benutze die Inspect-Funktion, um die Felder eines Objektes zu sehen.
• Felder definieren den Zustand eines Objektes.
public class TicketMachine{ private int price; private int balance; private int total; Weitere Details ausgelassen.}
private int price;
Sichtbarkeits-definition
TypVariablenname
ProInformatik III: Objektorientierte Programmierung, © David J. Barnes, Michael Kölling
Konstruktoren
• Konstruktoren initialisieren Objekte.
• Sie haben den gleichen Namen wie die Klasse.
• Sie speichern Anfangswerte in Felder.
• Dafür bekommen sie oft externe Parameter.
public TicketMachine(int ticketCost){ price = ticketCost; balance = 0; total = 0;}
ProInformatik III: Objektorientierte Programmierung, © David J. Barnes, Michael Kölling
Daten weitergeben mit Parametern
ProInformatik III: Objektorientierte Programmierung, © David J. Barnes, Michael Kölling
Zuweisung (Assignment)
• Zuweisungs-Statements speichern Werte in Felder (und andere Variablen):– variable = expression;
– price = ticketCost;
• Eine Variable speichern einen einzigen wert — vorige Werte sind verloren.