Konzepte objektorientierter Systeme

Slides:



Advertisements
Ähnliche Präsentationen
Ziele von EINI I + II Einführen in „Informatik“
Advertisements

der Universität Oldenburg
Abstrakte Klassen Basisklassen sollten in der Regel sehr allgemein sein. Oft ist es nicht notwendig, dass Objekte dieser generellen Basisklassen angelegt.
Objektorientierte Programmierung
DVG Einfache Klassen Einfache Klassen. DVG Einfache Klassen 2 Strukturen Beispiel: Personendaten bestehen aus –String name –String vorname.
Universität Dortmund, Lehrstuhl Informatik 1 EINI II Einführung in die Informatik für Naturwissenschaftler und Ingenieure.
Einführung in die Programmierung Ausführbare Klassen
Objektorientierte Programmierung Definition von Klassen
Threads Richard Göbel.
Java: Objektorientierte Programmierung
Java: Grundlagen der Objektorientierung
Klassenvariable (auch Klassendaten bzw. statische Attribute genannt) und statische Methoden.
Erweiterte Zuweisungskompatibilität
Konstruktoren.
WHILE - Anweisung. Aufgabe : Ausgabe aller ganzen Zahlen von 0 bis 100 auf dem Bildschirm.
FOR Anweisung. Aufgabe : Ausgabe aller ganzen Zahlen von 0 bis 100 auf dem Bildschirm.
DO...WHILE Anweisung.
Universität Dortmund, Lehrstuhl Informatik 1 EINI II Einführung in die Informatik für Naturwissenschaftler und Ingenieure.
Universität Dortmund, Lehrstuhl Informatik 1 EINI II Einführung in die Informatik für Naturwissenschaftler und Ingenieure.
Programmieren mit JAVA
PKJ 2005/1 Stefan Dissmann Zusammenfassung Bisher im Kurs erarbeitete Konzepte(1): Umgang mit einfachen Datentypen Umgang mit Feldern Umgang mit Referenzen.
Abstrakter Datentyp in C++ I - Klasse -
Objektorientierte Programmierung
C++ Vererbung und Polymorphie
DVG Einfache Klassen 1 Einfache Klassen. 2DVG Einfache KlassenStrukturen Beispiel: Personendaten bestehen aus String name String name.
Informatikunterricht mit Java
FH-Hof Java2D - Grundlagen Richard Göbel. FH-Hof Java2D - Funktionen Java2D unterstützt: das Zeichnen von Grafiken die Darstellung von Texten die Darstellung.
Seite 1 Interface - Konzept Ein Interface führt einen neuen Datentyp ein: interface Frau {... } Das Interface enthält Deklarationen ( keine Definitionen.
Einführung in die Programmierung Wintersemester 2013/14 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund.
Ham EST Das Schwein Schmatz.. Fressen Beginnen wir.... mit einer Geschichte:
1.2 Attribute und Methoden Aufbau einer Java-Klasse:
Einführung in die Programmierung Wintersemester 2008/09 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund.
Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fachbereich.
Einführung in die Programmierung Wintersemester 2008/09 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund.
Einführung in die Programmierung Wintersemester 2010/11 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund.
Einführung in die Programmierung Wintersemester 2011/12 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund.
Informatik 1 Letzte Übung.
Informatik Objekte und Klassen 1. Objektorientiertes Modellieren und Programmieren 1.1 Objekte und Klassen.
1.3 Klassen und Beziehungen
1.3 Klassen und Beziehungen
1.4 Objekte kommunizieren miteinander
Aufruf einer Methode eines Objektes vom Typ „Bruch“
Variablen in Programmiersprachen
EPROG Tutorium #6 Philipp Effenberger
Objektorientierte Modellierung mit UML
Programmiervorkurs WS 2014/15 Methoden
Polymorphie (Vielgestaltigkeit). Wenn eine Methode, wie z.B. print für verschiedene Programmteile steht (und z.B. einmal Objekte verschiedener Klassen.
3. Beschreibung von Abläufen durch Algorithmen 3.4 Zufall
Java-Kurs Übung Besprechung der Hausaufgabe
Java-Kurs Übung Besprechung der Hausaufgabe Vererbung
Java-Kurs - 9. Übung Besprechung der Hausaufgabe
Erweiterte Zuweisungskompatibilität. Wie kann man Objekte verschiedener Klassen einer Klassenhierarchie einander zuweisen ?
Abstrakte Klassen und das Interface-Konzept
Objektorientierte (OO) Programmierung
Gehe in Arbeitsplatz company Schuljahr 15/16 Klasse 6 Aufgaben Ganze umrechnen.
Java Programme nur ein bisschen objektorientiert.
Tutorium Software-Engineering SS14 Florian Manghofer.
Tutorium Software-Engineering SS14 Florian Manghofer.
Tutorium Software-Engineering SS14 Florian Manghofer.
Tutorium Software-Engineering SS14 Florian Manghofer.
Vererbung in Java. public abstract class Form { protected int breite; protected int hoehe; protected String farbe; /** * Erzeuge eine Form der Breite.
Konstruktoren.
Venusspiegel und Marsschild
Aufgaben zu Rückgabewerten
Der Abschluss einer Schlange
Java-Kurs - 8. Übung Klassen und Objekte: Vererbung
Java-Kurs Übung Klassen und Objekte: Vererbung (Fortsetzung)
Programmierung und Vererbung in Java
OO-Programmierung & Vererbung
Grundkurs Informatik 11-13
 Präsentation transkript:

Konzepte objektorientierter Systeme objektorientiertes Programmieren

Objektorientierte Konzepte Klassen und Objekte Unterklassen und Klassenhierarchien Aggregate, zusammengesetzte Objekte Methoden Objektidentität Abstrakte Datentypen

Klassen und Objekte: Beispiel in C++ Gleichartige Objekte bilden eine Klasse class Brüche {private: long zähler; long nenner; kürze(); public: Brüche(long z, long n = 1) {zähler = z; nenner = n; kürze();} Brüche& plus(const Brüche &x) {zähler = zähler * x.nenner + nenn ... nenner = nenner * x.nenner; kürze();}

Objekte statt Variable void ausgabe () { cout << zähler << "/" << nenner;} }; // Ende der Klassendefinition Brüche zahl1 (3, 4); Brüche zahl2 (1, 7); zahl1.plus(zahl2); zahl1.ausgabe (); 25/28 wird ausgegeben. Zunächst keine Datenbank: "Suche alle Objekte der Klasse Brüche > 1/4" nicht möglich.

Spezialisierung: Klassen mit Unterklassen class Punkte {private: int x, y; public: Punkte (int px = 0, int py = 0) {x=px; y=py;} move (int dx, int dy) {x+=dx; y+=dy;} int draw (); } class Rechtecke: public Punkte {private: int höhe, breite; public: Rechtecke (int x, int y, int höhe, int breite); int draw (); }

Aggregate Objekte können aus Teilobjekten bestehen class Strecken {private: Punkte anfang, ende; int linienstärke; public: Strecken(int xa, int ya, int xe, int ye, int ls); int draw (); } Rechtecke ist Unterklasse von Punkte, d. h. der linke untere Punkt und zusätzlich Höhe und Breite. Strecken ist keine Unterklasse von Punkte, sondern ist zusammengesetzt aus Anfangs- und Endpunkt.

Unterklasse und Aggregeation Linie s: Anfangspunkt Punkt a: 2; 15 15;12 Endpunkt 18;9 Linienstärke: 2 richtig: a.x, w.x s.Endpunkt.x falsch: s.x ein spezieller Punkt mit Höhe und Breite Rechteck w: 2; 3; 5; 3

Methoden Methoden sind Funktionen, die zu einer Klasse gehören. Sei a Objekt der Klasse k und m Methode von k. Mit a.m(Parameter) wird eine Botschaft an a gesendet, die Methode m auszuführen. Weniger Seiteneffekte Attribute erfragen und Methoden aufrufen ist gleich  Wechsel der Implementierung einfach, z. B. Attribut Alter oder Methode Alter: Berechnung aus Geburtsdatum Schnittstellendefinition und Implementierung trennen

Objektidentität Jedes Objekt bekommt eindeutigen Identifikator: OID Diese OID ändert sich nicht während der gesamten Lebensdauer des Objekts. Die OID bleibt gleich, auch wenn Inhalte sich ändern. Der Benutzer braucht die OID nicht explizit definieren. Der Benutzer kann die OID nicht ungewollt ändern.

Klassen implementieren abstrakte Datentypen (ADT) Abstrakte Datentypen beschreiben Verhalten von Daten nach außen, die Implementierung wird verborgen. Mit Klassen kann man ADTn definieren. Insbesondere generische Klassen sind dafür geeignet Beispiel: ADT Kellerspeicher (= stack) Es werden Keller für beliebige Grunddatentypen erzeugt: Keller für integer Keller für float Keller für Personen

Beispiel ADT Kellerspeicher TYP Keller [e_Typ] FUNKTIONEN: leer?: Keller [e_Typ]  BOOLEAN neu: Keller [e_Typ] rein: e_Typ  Keller [e_Typ]  Keller [e_Typ] raus: Keller [e_Typ]  Keller [e_Typ] lies: Keller [e_Typ]  e_Typ VORBEDING.: raus (k  Keller[e_Typ]): NOT leer? (k) lies (k  Keller[e_Typ]): NOT leer? (k) GESETZE: e  e_Typ, k  Keller[e_Typ]: leer? (Neu()); NOT leer? (rein (e,k)); lies (rein (e,k)) = e; raus (rein (e,k)) = k.