Chair of Software Engineering Einführung in die Programmierung Prof. Dr. Bertrand Meyer Lektion 2: Der Umgang mit Objekten I.

Slides:



Advertisements
Ähnliche Präsentationen
Blue J.
Advertisements

Die Schulkonsole für Lehrerinnen und Lehrer
Vorlesung: 1 Betriebliche Informationssysteme 2003 Prof. Dr. G. Hellberg Studiengang Informatik FHDW Vorlesung: Betriebliche Informationssysteme Teil3.
Einführung in die Informatik: Programmierung und Software-Entwicklung
LS 2 / Informatik Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)
CPCP Institute of Clinical Pharmacology AGAH Annual Meeting, 29. Februar 2004, Berlin, Praktischer Umgang mit den Genehmigungsanträgen gemäß 12. AMG Novelle.
Modelle und Methoden der Linearen und Nichtlinearen Optimierung (Ausgewählte Methoden und Fallstudien) U N I V E R S I T Ä T H A M B U R G November 2011.
Modelle und Methoden der Linearen und Nichtlinearen Optimierung (Ausgewählte Methoden und Fallstudien) U N I V E R S I T Ä T H A M B U R G November 2011.
Perfekt, Possessivpronomen und Imperative Winterurlaub.
Christos, Kornelia, Jan Christos, Kornelia, Jan Entwicklungsumgebung Versteht unseren Java Programm Code Versteht unseren Java Programm.
Christos, Kornelia, Jan Christos, Kornelia, Jan Entwicklungsumgebung Versteht unseren Java Programm Code Versteht unseren Java Programm.
Christos, Kornelia, Jan Christos, Kornelia, Jan Entwicklungsumgebung Versteht unseren Java Programm Code Versteht unseren Java Programm.
Scratch Der Einstieg in das Programmieren. Scatch: Entwicklungsumgebung Prof. Dr. Haftendorn, Leuphana Universität Lüneburg,
Java: Objektorientierte Programmierung
© 2006 W. Oberschelp, G. Vossen Rechneraufbau & Rechnerstrukturen, Folie 2.1.
Praktikum Entwicklung und Einsatz von Geosoftware I - Sitzung 6 Model-View-Controler als Grundlage für Nutzerschnittstellen Sommersemester 2003 Lars Bernard.
Grundkurs Theoretische Informatik, Folie 2.1 © 2006 G. Vossen,K.-U. Witt Grundkurs Theoretische Informatik Kapitel 2 Gottfried Vossen Kurt-Ulrich Witt.
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Vorlesung 2 SWS WS 99/00 Gisbert Dittrich FBI Unido
Vorlesung: 1 Betriebliche Informationssysteme 2003 Prof. Dr. G. Hellberg Studiengang Informatik FHDW Vorlesung: Betriebliche Informationssysteme Teil2.
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Diskrete Mathematik I Vorlesung Listen-
Vererbung Spezialisierung von Klassen in JAVA möglich durch
PKJ 2005/1 Stefan Dissmann Rückblick auf 2005 Was zuletzt in 2005 vorgestellt wurde: Klassen mit Attributen, Methoden und Konstruktoren Referenzen auf.
PKJ 2005/1 Stefan Dissmann Zusammenfassung Bisher im Kurs erarbeitete Konzepte(1): Umgang mit einfachen Datentypen Umgang mit Feldern Umgang mit Referenzen.
PKJ 2005/1 Stefan Dissmann Klassenhierarchie Person Kunde Goldkunde Lieferant Object.
OO Analyse und Entwurf für Anwender XIII. Objektorientierte Benutzeroberfäche Dr. Michael Löwe.
Heute: Scherenzange zeichnen
Prof. Dr. Gerhard Schmidt pres. by H.-J. Steffens Software Engineering SS 2009Folie 1 Objektmodellierung Objekte und Klassen Ein Objekt ist ein Exemplar.
Bild 1.1 Copyright © Alfred Mertins | Signaltheorie, 2. Auflage Vieweg+Teubner PLUS Zusatzmaterialien Vieweg+Teubner Verlag | Wiesbaden.
20:00.
SK / , , in Hochkössen und der Wildschönau flow Ski- und Snowboardschule Intersport Menzel.
1 Fachtagung am Seniorenorientiertes Design und Marketing ThyssenKrupp Immobilien Design for all - Anpassungen im Wohnungsbestand 1.Demographie.
LS 2 / Informatik Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)
Chair of Software Engineering Einführung in die Programmierung Prof. Dr. Bertrand Meyer Lecture 13: (Container-)Datenstrukturen.
Chair of Software Engineering Einführung in die Programmierung Prof. Dr. Bertrand Meyer Lecture 13: (Container-)Datenstrukturen.
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Objektorientierte Konzepte/UML Geoinformation I Vorlesung 2 WS 2000/2001.
Chair of Software Engineering Einführung in die Programmierung Prof. Dr. Bertrand Meyer Lektion 3: Der Umgang mit Objekten II.
Chair of Software Engineering Einführung in die Programmierung Prof. Dr. Bertrand Meyer Lektion 9: Abstraktion.
Chair of Software Engineering Einführung in die Programmierung Prof. Dr. Bertrand Meyer Lektion 14: Mehrfachvererbung.
Chair of Software Engineering Einführung in die Programmierung Prof. Dr. Bertrand Meyer Lektion 2: Der Umgang mit Objekten I.
OOP-Begriffe Abstraktion Modellieren Klasse Objekt Attribute Methoden
NEU! 1 2. Wo kommt diese Art von Rezeptor im Körper vor?
Analyse von Ablaufdiagrammen
HORIZONT 1 XINFO ® Das IT - Informationssystem PL/1 Scanner HORIZONT Software für Rechenzentren Garmischer Str. 8 D München Tel ++49(0)89 / 540.
Publikation auf Knopfdruck Judith Riegelnig Michael Grüebler 19. Oktober 2010 / Statistiktage Neuenburg.
Chair of Software Engineering Einführung in die Programmierung Prof. Dr. Bertrand Meyer Lektion 4: Die Schnittstelle einer Klasse.
Chair of Software Engineering Einführung in die Programmierung Prof. Dr. Bertrand Meyer Lektion 6: Objekterzeugung.
Managemententscheidungsunterstützungssysteme (Ausgewählte Methoden und Fallstudien) ( Die Thesen zur Vorlesung 3) Thema der Vorlesung Lösung der linearen.
PARTENARIAT ÉDUCATIF GRUNDTVIG PARTENARIAT ÉDUCATIF GRUNDTVIG REPERES KULTURELLER ZUSAMMENHALT UND AUSDEHNUNG DER IDEEN AUF EUROPÄISCHEM.
EPROG Tutorium #4 Philipp Effenberger
1 (C)2006, Hermann Knoll, HTW Chur, FHO Quadratische Reste Definitionen: Quadratischer Rest Quadratwurzel Anwendungen.
Analyseprodukte numerischer Modelle
Pigmentierte Läsionen der Haut
Schutzvermerk nach DIN 34 beachten 20/05/14 Seite 1 Grundlagen XSoft Lösung :Logische Grundschaltung IEC-Grundlagen und logische Verknüpfungen.
Vortrag von Rechtsanwältin Verena Nedden, Fachanwältin für Steuerrecht zur Veranstaltung Wege zum bedingungslosen Grundeinkommen der Piratenpartei Rhein-Hessen.
1 Mathematical Programming Nichtlineare Programmierung.
Ertragsteuern, 5. Auflage Christiana Djanani, Gernot Brähler, Christian Lösel, Andreas Krenzin © UVK Verlagsgesellschaft mbH, Konstanz und München 2012.
Paul, Morten, Yannick Blue J. Entwicklungsumgebung  versteht Java Programmcode  Für die Entwicklung eigener Software  Durch die Programmierung.
Bildergalerie PRESEASON CAMP Juni 2014 Romanshorn Get ready for the Season!
Es war einmal ein Haus
Sportverletzungen Fussgelenk-Tapeverband
Kompetenztraining Jura Martin Zwickel / Eva Julia Lohse / Matthias Schmid ISBN: © 2014 Walter de Gruyter GmbH, Berlin/Boston Abbildungsübersicht.
1 10 pt 15 pt 20 pt 25 pt 5 pt 10 pt 15 pt 20 pt 25 pt 5 pt 10 pt 15 pt 20 pt 25 pt 5 pt 10 pt 15 pt 20 pt 25 pt 5 pt 10 pt 15 pt 20 pt 25 pt 5 pt Wie.
Das IT - Informationssystem
1 Medienpädagogischer Forschungsverbund Südwest KIM-Studie 2014 Landesanstalt für Kommunikation Baden-Württemberg (LFK) Landeszentrale für Medien und Kommunikation.
Monatsbericht Ausgleichsenergiemarkt Gas – Oktober
OOSE nach Jacobson Sebastian Pohl/ST7 Betreuer: Prof. Dr. Kahlbrandt.
Java-Kurs Übung Besprechung der Hausaufgabe
Chair of Software Engineering Einführung in die Programmierung Prof. Dr. Bertrand Meyer Lektion 3: Der Umgang mit Objekten II.
Chair of Software Engineering Einführung in die Programmierung Prof. Dr. Bertrand Meyer Lektion 4: Die Schnittstelle einer Klasse.
Einführung in die Programmierung Prof. Dr. Bertrand Meyer
 Präsentation transkript:

Chair of Software Engineering Einführung in die Programmierung Prof. Dr. Bertrand Meyer Lektion 2: Der Umgang mit Objekten I

2 Unser erstes Programm! Unser Programm soll: Die Position der Stationen «Central» und «Polyterrasse» auf der Karte von Zürich markieren Einen Wagen zur Linie 24 (Polybahn) hinzufügen Die Karte animieren

3 class PREVIEW inherit ZURICH_OBJECTS feature explore -- Die Stadt erkunden. do -- (von Uns) auszufüllen end Klasse: Eine Software-Maschine Ein Klassentext Der Name der Klasse

4 Eine Konvention Verwenden Sie für zusammengesetzte Namen _ ZURICH_OBJECTS Polybahn_line_number Wir verwenden nicht den CamelCase Stil: EinKurzerAberSchwerZuLesenderName sondern Unterstriche (Manchmal auch Pascal_case genannt): Ein_viel_längerer_aber_immer_noch_perfekt_lesbarer_name

5 class PREVIEW inherit ZURICH_OBJECTS feature explore -- Die Stadt erkunden. do -- (von Uns) auszufüllen! end Software- maschine Von einer existierenden Klasse erben Operationen Feature- name Kommentar Schlüsselwörter (keywords) (class, inherit, feature, do, end) haben eine spezielle Rolle. Featuredeklaration Pseudocode Ein Klassentext

6 Zauberei? Die Klasse ZURICH_OBJECTS ist ein Teil der unterstützenden Software Sie unterstützt Sie durch vordefinierte Funktionalität (Zauberei) Der Anteil an Zauberei wird Stück für Stück abnehmen und schlussendlich ganz verschwunden sein

7 class PREVIEW inherit ZURICH_OBJECTS feature explore -- Die Stadt erkunden. do Central highlight Polyterrasse highlight Polybahn add_transport Zurich_map animate end Den Featurerumpf ausfüllen

8 Formatierung des Programmtextes Zwischen angrenzenden Elementen: Trennungen: ein oder mehrere Leerschläge, Tabs, Zeilenumbrüche Alle Arten von Trennungen sind äquivalent Typographische Änderungen (fett, kursiv, farbig) haben keinen Einfluss auf die Semantik des Programmes class PREVIEW inherit ZURICH_OBJECTS feature explore -- Die Stadt erkunden. do Central highlight Polyterrasse highlight Polybahn add_transport Zurich_map animate end Trennungen

9 Stilregel Verwenden Sie Tabs, um den Code einzurücken, nicht Leerschläge Nützen Sie Einrückungen, um die Struktur des Programmes hervorzuheben class PREVIEW inherit ZURICH_OBJECTS feature explore -- Die Stadt erkunden. do Central highlight Polyterrasse highlight Polybahn add_transport Zurich_map animate end Tabs

10 Vordefinierte Objekte Central, Polyterrasse, Polybahn und Zurich_map sind Namen vordefinierter Objekte Die Objekte sind in der Klasse ZURICH_OBJECTS, der Elternklasse von PREVIEW, definiert highlight, add_transport und animate sind Features obiger Objekte, die man auf sie aufrufen kann

11 Klassennamen: GROSS Punkt des Featureaufrufs: Kein Leerschlag, weder davor noch danach Namen vordefinierter Objekte beginnen mit einem Grossbuchstaben Neue Namen (für Objekte, die Sie definieren) sind kleingeschrieben class PREVIEW inherit ZURICH_OBJECTS feature explore -- Die Stadt erkunden. do Central highlight Polyterrasse highlight Polybahn add_transport Zurich_map animate end Mehr Stilregeln

12 Objekttechnologie Wir arbeiten mit Objekten. Unser Programmierstil: Objektorientierte Programmierung Abkürzung: O-O Allgemeiner Objekttechnologie: Beinhaltet O-O Datenbanken, O-O Analyse, O-O Design,... Die Ausführung der Software besteht aus Operationen auf Objekten: feature-Aufrufen ihr_objekt. ihr_feature

13 Eine eigene Ausdrucksweise Zurich_map animate nächste_nachricht senden-- next_message send computer auschalten-- computer shut_down telefon läuten-- telephone ring Objekt-Orienterte Programmierung hat einen bezeichnenden Stil Jede Operation wird auf ein Objekt (das Ziel (target) des Aufrufs) angewendet

14 Was ist ein Objekt? Softwarebegriff: Eine Maschine, definiert durch auf sie anwendbare Operationen Drei Arten von Objekten: Physikalische Objekte: widerspiegeln materielle Objekte der modellierten Welt Beispiele: die Polyterrasse, eine Bahn des Trams… Abstrakte Objekte: abstrakte Begriffe aus der modellierten Welt Beispiele: eine (Tram-) Linie, eine Route… Softwareobjekte: reine Softwarebegriffr Beispiele: Datenstrukturen wie Arrays oder Hash-Tabellen Ein grosser Reiz der Objekttechnologie ist ihr Modellierungsvermögen: Verbinden von Softwareobjekten mit Objekten des Modells Aber: Verbinden, nicht verwechseln! In diesem Kurs bezieht sich Objekt auf ein Softwareobjekt

15 Zwei Auffassungen von Objekten Zwei Gesichtspunkte: 1. Ein Objekt hat Daten, abgelegt im Speicher. 2. Ein Objekt ist eine Maschine, die Operationen anbietet (Features) Die Verbindung: Die Operationen (2), die die Maschine anbietet, greifen auf die Daten (1) des Objektes zu und verändern sie. Central Polyterrasse 24 2 West-Endstation Nummer Anzahl Stationen Ost-Endstation

16 Features: Befehle und Abfragen Feature: Eine Operation, die von gewissen Klassen zur Verfügung gestellt wird. 3 Arten: Befehl (Command) Abfrage (Query) Erzeugungsprozedur (creation procedure) (später studiert)

17 Ein Befehl

18 Eine Abfrage

19 Abfragen Ziel: die Eigenschaften eines Objekts zu erhalten. Sollte weder das Zielobjekt noch andere Objekte ändern! Beispiele anhand eines Linie Objektes (Polybahn): Was ist die West-Endstation von Polybahn? Was ist die Ost-Endstation von Polybahn? Wieviele Stationen hat Polybahn? Ist Polybahn eine lange Linie ( 5 Stationen)? Central Polyterrasse 24 2

20 Befehle Ziel: Ein oder mehrere Objekte zu verändern. Beispiele anhand eines Linie Objektes: Setze die Farbe der Polybahn Füge einen neuen Wagen zur Polybahn hinzu

21 Das Befehl-Abfrage-Separationsprinzip (*) Das Stellen einer Frage soll die Antwort nicht verändern (*) engl.: Command-Query Separation principle

22 Ein Objekt ist eine Maschine Ein laufendes Programm ist eine Maschine. Es besteht aus kleineren Maschinen: Objekten Während einer Programmausführung können sehr viele Objekte zum Einsatz kommen (auch mehrere Millionen!)

23 Ein Objekt ist eine Maschine Eine Maschine, Hardware oder Software, ist charakterisiert durch die Operationen (Features), die ein Benutzer auf sie anwenden kann. prepend animate append count stations first last

24 Zwei Auffassungen von Objekten Zwei Gesichtspunkte: 1. Ein Objekt hat Daten, abgelegt im Speicher. 2. Ein Objekt ist eine Maschine, die Operationen anbietet (Features: Befehle und Abfragen) Die Verbindung: Die Operationen (2), die die Maschine anbietet, greifen auf die Daten (1) des Objektes zu und verändern sie. Central Polyterrasse 24 2 West-Endstation Nummer Anzahl Stationen Ost-Endstation

25 Objekte: eine Definition Ein Objekt ist eine Softwaremaschine, die es Programmen erlaubt, auf eine Ansammlung von Daten zuzugreifen und diese zu verändern AbfragenBefehle

26 Definition und Klassifizierung von Features Ein Feature ist eine Operation, die Programme auf bestimmte Arten von Objekten aufrufen können. Ein Feature, welches (nur) auf ein Objekt zugreift, ist eine Abfrage. Ein Feature, welches ein Objekt modifizieren kann, ist ein Befehl.

27 Der Gebrauch von Abfragen Abfragen sind genauso wichtig wie Befehle! Abfragen machen nichts, aber sie geben einen Wert zurück. So gibt z.B. Polybahn west_terminal die West- Endstation von Polybahn zurück Sie dürfen mit den Rückgabewerten von Abfragen arbeiten, z.B. die Startstation ermitteln und anschliessend auf dem Bildschirm hervorheben

28 Features können Argumente haben… Aufgabe: Geben Sie die West-Endstation von Polybahn auf dem Konsolenfenster aus. Sie brauchen: Das Objekt console Das auf console aufrufbare Feature output Das Objekt Polybahn Das auf Polybahn aufrufbare Feature west_terminal, welches die West-Endstation zurückgibt console output ( Polybahn west_terminal )

29 class PREVIEW inherit ZURICH_OBJECTS feature explore -- Die Stadt erkunden und die -- West-Endstation der Polybahn anzeigen. do Central highlight Polyterrasse highlight Polybahn add_transport Zurich_map.animate end Den Featurerumpf ausbauen console output ( Polybahn west_terminal )

30 Features mit Argumenten ein_argument ist ein Wert, welcher ihr_feature braucht Beispiel: Feature output muss wissen, was es anzeigen soll Es ist das gleiche Konzept wie Argumente in der Mathematik: cos (x) Features können mehrere Argumente haben: x f (a, b, c, d ) -- Getrennt durch Kommas In gut geschriebener O-O software haben die meisten features gar kein oder 1 Argument ihr_objekt ihr_feature (ein_argument)

31 Eine eigene Ausdrucksweise Zurich_map animate next_message send computer shut_down telephone ring Jede Operation wird auf ein Objekt angewendet

32 Eine eigene Ausdrucksweise Zurich_map animate next_message send_to (recipient ) computer shut_down_after (3) telephone ring_several (10, Loud ) Jede Operation wird auf ein Objekt angewendet und kann Argumente benötigen.

33 Skalierbarkeit Eine der schwierigsten Aufgaben im Lernen von Software ist das Finden von guten Lösungen, die sowohl im Kleinen als auch im Grossen gut funktionieren Genau das ist das Ziel für die Techniken, die wir in diesem Kurs lehren

34 prepend animate append Ein Objekt hat eine Schnittstelle (interface) count stations first last

35 prepend animate append count first Ein Objekt hat eine Implementation count stations first last

36 Das Geheimnisprinzip (Information Hiding) prepend animate append count stations first last

37 Das Geheimnisprinzip (Information Hiding) Der Designer jedes Moduls muss spezifizieren, welche Eigenschaften für Clients abrufar sind (öffentlich) und welche intern (geheim) sind. Die Programmiersprache muss sicherstellen, dass Kunden nur öffentliche Eigenschaften nützen können.

38 class PREVIEW inherit ZURICH_OBJECTS feature explore -- Die Stadt erkunden. do Central highlight Polyterrasse highlight Polybahn add_transport Zurich_map animate end Mehr über unseres erste Beispiel Physikalische Objekte

39 Drei Arten von Objekten (Erinnerung) Drei Arten von Objekten: Physikalische Objekte: widerspiegeln materielle Objekte der modellierten Welt. Beispiele: die Polyterrasse, eine Bahn des Trams… Abstrakte Objekte: abstrakte Begriffe aus der modellierten Welt. Beispiele: eine (Tram-) Linie, eine Route… Softwareobjekte: ein reiner Softwarebegriff. Beispiele: Datenstrukturen wie Arrays oder Listen

40 class PREVIEW inherit ZURICH_OBJECTS feature explore -- Die Stadt erkunden. do Central highlight Polyterrasse highlight Polybahn add_transport Zurich_map animate end Mehr über unseres erste Beispiel Physikalische Objekte

41 class PREVIEW inherit ZURICH_OBJECTS feature explore -- Die Stadt erkunden. do Central_view highlight Polyterrasse_view highlight Polybahn add_transport Zurich_map animate end Eine bessere Version

42 Modell und Präsentation (Model and View) Modell-Objekte beschreiben Elemente von einem Modell der externen Welt Beispiel: Polyterrasse View-Objekte beschreiben Elemente von der Benutzer- Schnittstelle Beispiel: Polyterrasse_view

43 Model-View-Controller (Modell/Präsentation/Steuerung) (Trygve Reenskaug, 1979)

44 Was bisher geschah… Grundkonzepte und –konstruktionen der Objekttechnologie: Klassen (eine erste Sicht) Grundstruktur von Programmtext Objekte Features Befehle und Abfragen Featureaufrufe Features mit Argumenten Methodologische Prinzipien: Befehl-Abfrage-Separation Geheimnisprinzip (Information Hiding) Modell-Präsentation-Trennung (Model-View Separation)

45 Bis nächste Woche Lesen Sie Kapitel 1 bis 3 von Touch of Class Schauen Sie sich die Folien der nächsten zwei Vorlesungen an