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