Folien - BlueJ

Werbung
Selbstbestimmtes Lernen
Proinformatik III
•
•
•
•
•
•
Objektorientierte
Programmierung
Michael Kölling
University of Kent
Canterbury, UK
4.0
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 EngineeringFokus…
• …mit dem Ziel, große, qualitativ gute
Softwaresysteme zu entwickeln und
zu warten.
Buzzwords
responsibility-driven design
inheritance
iterators
cohesion
encapsulation
overriding
javadoc
collection classes
coupling
interface
mutator methods
polymorphic method calls
ProInformatik III: Objektorientierte Programmierung, © David J. Barnes, Michael Kölling
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 Softwaresystem in Java zu implementieren
ProInformatik III: Objektorientierte Programmierung, © David J. Barnes, Michael Kölling
ch
Buch
u
b
t
Tex David J. Barnes & Michael Kölling
Java lernen mit BlueJ: Eine
Einführung in die objektorientierte
Programmierung
4. Auflage,
Pearson Studium, 2009
ISBN 978-3-8689-4001-5
ProInformatik III: Objektorientierte Programmierung, © David J. Barnes, Michael Kölling
BlueJ
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
Grundkonzepte
BlueJ
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
Andere Beobachtungen
•
•
•
•
•
Objekt
Klasse
Methode
Parameter
Datentyp
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
Zustand
• 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
ProInformatik III: Objektorientierte Programmierung, © David J. Barnes, Michael Kölling
Zwei Circle-Objekte
Rückgabewerte
• Methoden können ein Ergebnis
(Rückgabewert) zurückgeben.
ProInformatik III: Objektorientierte Programmierung, © David J. Barnes, Michael Kölling
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
en Buch
l
h
fo
p
EmEinführung in Java mit Greenfoot
Greenfoot
ProInformatik III: Objektorientierte Programmierung, © David J. Barnes, Michael Kölling
Michael Kölling
Klassendefinitionen verstehen
Spielerische Programmierung mit Java
Pearson Studium, August 2010
ISBN: 978-3-8689-4902-5
ProInformatik III: Objektorientierte Programmierung, © David J. Barnes, Michael Kölling
Klassenautopsie
4.0
Konzepte
•
•
•
•
ProInformatik III: Objektorientierte Programmierung, © David J. Barnes, Michael Kölling
Ticketmaschinen – Externe
Ansicht
Felder
Konstruktoren
Methoden
Parameter
ProInformatik III: Objektorientierte Programmierung, © David J. Barnes, Michael Kölling
Ticketmaschinen
• Untersuchung des Verhaltens einer
typischen Ticketmaschine.
– Siehe: naive-ticket-machine–Projekt.
– Maschinen geben Tickets zu einem festen
Preis aus.
Demo
• 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 – 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
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 InspectFunktion, um die Felder
eines Objektes zu
sehen.
Konstruktoren
public class TicketMachine
{
private int price;
private int balance;
private int total;
•
•
Weitere Details ausgelassen.
}
•
Sichtbarkeits-
Typ
Felder definieren den definition
Zustand eines Objektes.
Variablenname
•
Konstruktoren
initialisieren Objekte.
Sie haben den
gleichen Namen wie
die Klasse.
Sie speichern
Anfangswerte in
Felder.
public TicketMachine(int ticketCost)
{
price = ticketCost;
balance = 0;
total = 0;
}
Dafür bekommen sie
oft externe
Parameter.
private int price;
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.
ProInformatik III: Objektorientierte Programmierung, © David J. Barnes, Michael Kölling
ProInformatik III: Objektorientierte Programmierung, © David J. Barnes, Michael Kölling
Herunterladen