Selbstbestimmtes Lernen Objektorientierte Programmierung · für ein Objekt. • Sie werden auch...

6
4.0 Michael Kölling University of Kent Canterbury, 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 interface javadoc encapsulation coupling cohesion polymorphic method calls inheritance mutator methods collection classes overriding iterators responsibility-driven design

Transcript of Selbstbestimmtes Lernen Objektorientierte Programmierung · für ein Objekt. • Sie werden auch...

Page 1: Selbstbestimmtes Lernen Objektorientierte Programmierung · für ein Objekt. • Sie werden auch Instanzvariablen genannt. • Benutze die Inspect-Funktion, um die Felder eines Objektes

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

Page 2: Selbstbestimmtes Lernen Objektorientierte Programmierung · für ein Objekt. • Sie werden auch Instanzvariablen genannt. • Benutze die Inspect-Funktion, um die Felder eines Objektes

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

Page 3: Selbstbestimmtes Lernen Objektorientierte Programmierung · für ein Objekt. • Sie werden auch Instanzvariablen genannt. • Benutze die Inspect-Funktion, um die Felder eines Objektes

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

Page 4: Selbstbestimmtes Lernen Objektorientierte Programmierung · für ein Objekt. • Sie werden auch Instanzvariablen genannt. • Benutze die Inspect-Funktion, um die Felder eines Objektes

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

Page 5: Selbstbestimmtes Lernen Objektorientierte Programmierung · für ein Objekt. • Sie werden auch Instanzvariablen genannt. • Benutze die Inspect-Funktion, um die Felder eines Objektes

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

Page 6: Selbstbestimmtes Lernen Objektorientierte Programmierung · für ein Objekt. • Sie werden auch Instanzvariablen genannt. • Benutze die Inspect-Funktion, um die Felder eines Objektes

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.