8. Exkurs in die objektorientierte Programmierung: C++

Größe: px
Ab Seite anzeigen:

Download "8. Exkurs in die objektorientierte Programmierung: C++"

Transkript

1 8. Exkurs in die objektorientierte Programmierung: C++ Inhalt: 8.1 Objektorientierung: Prinzip und Ziele 8.2 C++ - Erweiterungen 8.3 C++ - Klassen, Objekte und Methoden 8.4 C++ - Vererbung und Polymorphie Peter Sobe Objektorientierung Objektorientierte Programmierung kann auf verschiedene Weise erfolgen: Prozedurale Sprachen in Verbindung mit s.g. abstrakten Datentypen Objektorientierte Sprachen, welche die Ziele der Objektorientierung durch eine spezielle Syntaxerweiterung und Verfahren bei der Übersetzung und Laufzeitunterstützung der Programme unterstützen R. Grossmann / P. Sobe 2

2 Objektorientierung Mit dem objektorientierten Programmier-Paradigma wird ein besonderes Herangehen bei der Modellierung eines Realitätsausschnittes praktiziert. Man sucht dort Objekte (Autos, Mitarbeiter, Rechnungen, elektr. Bauelemente, mechanische Elemente,...), die bei Verarbeitungsprozessen eine Rolle spielen. Zu einer bestimmten Zeit wird jeweils eine Menge von Objekten einer bestimmten Sorte, wie Autos oder Personen vorhanden sein. Vergleich mit imperativen, prozeduralem Programmierparadigma: Bisher wurde bei der Modellierung eines Realitätsausschnittes stets nach Verarbeitungsprozessen gesucht und deren Abfolge und Verflechtung als Algorithmus (Steuerfluss) entwickelt und formal beschrieben. R. Grossmann / P. Sobe 3 Grundlagen Methodenbegriff - Elementfunktion Sind alle relevanten Objektmengen im Betrachtungsfeld identifiziert, überlegt man, welche Operationen man auf den jeweiligen Objekten (Autos, Personen, Matrizen,...) benötigt. So wird man Matrizen sicher addieren und multiplizieren wollen, von Personen vielleicht das Alter bestimmen, oder ob sie in Beziehung zu anderen Objekten stehen (Eigentümer eines Autos). Methode: ist eine wohldefinierte Operation / Funktion, die man auf Elemente einer bestimmten Objektmenge anwenden darf. Für jede Objektmenge ist eine bestimmte Menge solcher Methoden definiert und ausschließlich an die Anwendung nur auf Elemente dieser Menge gebunden. R. Grossmann / P. Sobe 4

3 Objektbegriff Objekt: ist eine über einen Bezeichner identifizierbare Zusammenfassung von Datenelementen, die auf eine Menge von Methoden zurückgreifen kann. Objekte agieren, indem sie gegenseitig Methoden anderer Objekte aufrufen. Den Bauplan eines jeden Objektes nennt man Typ oder Klasse. Die Sorte eines Objekts ist durch die Klasse bestimmt. R. Grossmann / P. Sobe 5 Ziele der Objektorientierung Datenabstraktion: Definition und Verwendung anwendungs-bezogener Datentypen und der auf ihnen möglichen Operationen. Datenkapselung: Vereinbarung von Daten und den Methoden, die diese Daten verwalten in einer Programmeinheit. Auch zur Trennung von Spezifikation und Implementierung nützlich. Vererbung: Aus einer Klasse kann eine weitere Klasse abgeleitet werden, die Erweiterungen besitzt oder zum Teil anders arbeitet. Gemeinsamkeiten werden vererbt. Senkt Programmieraufwand und Fehlerquote. Polymorphismus: Das ist in Klassenhierarchien mit Vererbung die Fähigkeit, dass dieselbe Methode bei Objekten unterschiedlicher Typen, unterschiedliche Aktionen auslösen kann. Überladen von Operatoren: Benutzung bekannter Operatoren (z.b. +,-,*,/,...) für eigene Klassen, dort aber mit einer anderen Bedeutung. R. Grossmann / P. Sobe 6

4 Ziele der Objektorientierung Spezialisierung und Generalisierung (Vererbung): Durch das Prinzip der Spezialisierung wird es möglich, aus einem Datentyp einen weiteren Datentyp abzuleiten, der viele Gemeinsamkeiten mit ersterem hat und nur in einigen Details abweicht. Der abgeleitete Datentyp erbt Datenstruktur und vererbbare Methoden vom Basisdatentyp. Es müssen folglich nur die Abweichungen (Spezialisierung) angegeben werden, was den Kodierungsaufwand und die mögliche Fehlerquote stark senkt. Polymorphismus: Das ist in Klassenhierarchien mit Vererbung die Fähigkeit, dass dieselbe Methode bei Objekten unterschiedlicher Typen, unterschiedliche Aktionen auslösen kann. R. Grossmann / P. Sobe 7 Möglichkeiten der Programmierung mit C++ Die Ziele werden durch die Sprache C++ unterstützt. Was ist jetzt möglich? Beispiel 1: Bandmatrizen als Objekte (der Klasse Bandmatrix) Beispiel 2: Klassenhierarchie geometrischer Objekte Beispiel 3: Klassen mit Operatoren am Beispiel der Klassen Person und Verein Es entsteht ein anderer Programmierstil. Dieser wird durch Festlegung der Klassen und deren Beziehungen dominiert. Objektorientierter Entwurf statt prozeduraler Entwurf. R. Grossmann / P. Sobe 8

5 Möglichkeiten der Programmierung mit C++ Beispiel 2: Klassenhierarchie geometrischer Objekte Spezielle Klassen punkt, rechteck, kreis oder dreieck sind durch Vererbung von einer allgemeinen Klasse geofigur abgeleitet. Eine abstrakte Klasse geofigur definiert die Menge gemeinsamer Methoden für alle speziellen Objekte, zum Beispiel void zeichne(hdc &hdc); als einheitliches Interface, um das Objekt in einem Fenster zu zeichnen. Objekte anlegen: figuren[0] = new punkt(100.0, 100.0); figuren[1] = new punkt(200.0, 200.0); figuren[2] = new punkt(300.0, 300.0); figuren[3] = new kreis(punkt(400.0,400.0),10.0); figuren[4] = new rechteck(450.0,250.0,80.0,150.0); figuren[5] = new kreis(punkt(400.0, 120.0), 80.0); figuren[6] = new dreieck(200.0, 100.0, 300.0, 100.0, 250.0, ); anz_figuren=7; R. Grossmann / P. Sobe 9 Möglichkeiten der Programmierung mit C++ In der Paint-Funktion einer WIN32-Anwendung: for(int i=0; i<anz_figuren; i++) figuren[i]->zeichne(hdc); // figuren[i] ist ein geofigur* Peter Sobe 10

6 Möglichkeiten der Programmierung mit C++ Beispiel 3: Klassen mit speziellen Operatoren Person schulze( Robert, Schulze,1956, Obstgehoelzveredlung ); meier( Klaus, Meier,1976, Salat und Tomaten ); gartenfreunde = gartenfreunde+meier ; gartenfreunde = gartenfreunde+schulze; gartenfreunde.aufloesung(); Peter Sobe Erweiterungen von C++ gegenüber C C++ stellte einige Erweiterungen bereit, die auch schon bei nichtobjektorientierter Programmierung benutzt werden können. streambasierte Ein- und Ausgabe: I/O-Objekte cin, cout und cerr mit Operatoren <<, >> cout<< Eingabe i= ; cin>>i; cout<< 2*i ist << i*2<< endl; Referenzen ( & vor Variablendeklaration) benutzt zur Parameterübergabe für Call-by-Reference void doppelt_und dreifach(int a, int &doppelt, int &dreifach) { doppelt = 2*a; dreifach = 3*a; } doppelt_und_dreifach(a,b,c); // Aufruf Speicherallokation und Freigabe mit new und delete Peter Sobe 12

7 8.3 C++ - Klassen, Objekte und Methoden Klassen sind der Bauplan für Objekte und müssen definiert werden. Eine Klassendefinition ist vergleichbar mit einer Type-Definition. class klassenname { private: Später können Objekte aus der Klasse erzeugt werden, vergleichbar mit Variablen, die aus eine Typ erzeugt werden. klassenname objekt1; // statisch Deklaration der Datenelemente Deklaration oder Definition der Elementfunktionen objekt2 = new klassenname;.. delete objekt2; // dynamisch Peter Sobe 13 Deklaration / Definition / Aufruf von Methoden Methoden sind einer Klasse zugeordnet und bilden die Menge der Operationen, die mit den Objekten der Klasse ausführbar sind. Damit der Nutzer Methoden zur Manipulation der Objekte in seinem Anwendungsprogramm aufrufen kann, müssen diese in aller Regel in einem public-teil verfügbar sein. Methoden sind syntaktisch gesehen - Funktionen im Sinne von C/C++. Die Deklaration und Definition dieser Elementfunktionen genügt den Regeln für normale Funktionen. Durch die Bindung an die Klasse unterscheidet sich der Aufruf von Methoden gegenüber normalen Funktionen: normale Funktion f(x) Methode f(x) der Klasse T f(y); T a; a.f(y); R.Grossmann / P. Sobe 14

8 Definition von Elementfunktionen Beispiel Klasse vektor (1) Deklaration und Definition der Methoden: class vektor { private: float x; float y; float z; //Deklaration Datenelemente void init(float i,float j,float k) { x=i; y=j; z=k;} float betrag() {return sqrt(x*x+y*y+z*z);} R.Grossmann / P. Sobe 15 Definition von Elementfunktionen Beispiel Klasse vektor (2) Gewöhnliche Trennung von Deklaration und Definition: class vektor { private: float x; float y; float z; //Deklaration Datenelemente void init(float i,float j,float k) ; float betrag(); void vektor::init (float i,float j,float k) { x=i; y=j; z=k;} float vektor::betrag(){return sqrt(x*x+y*y+z*z);} R.Grossmann / P. Sobe 16

9 Konstruktor, Destruktor Konstruktor: eine ausgewählte Methode, die wie die Klasse benannt ist. kein Rückgabewert kann Parameter entgegen nehmen, die bei Erzeugung eines Objektes anzugeben sind mehrere Konstruktoren mit unterschiedlicher Parameterliste möglich einer der Konstruktoren wird bei Erzeugung einer Klasse automatisch ausgeführt Beispiel: class person { person(); person(char *vn, char *n, int gebj, char *hobbies); Person unbekannt;// hier wird der parameterlose Konstruktor aufgerufen person *bk = new person( Helmut, Schmidt,1918, Rauchen und Politik ); R.Grossmann / P. Sobe 17 Konstruktor, Destruktor Destruktor: eine ausgewählte Methode, die wie die Klasse mit vorangestelltem ~ -Zeichen benannt ist. kein Rückgabewert, ohne Parameter nur ein Destruktor möglich Destruktor wird bei Ende der Gültigkeit eines Objekts ausgeführt Beispiel: class person { ~person(); Hier wird Objekt tmp freigegeben und der Destruktor aufgerufen. void tausch(person &a, person &b) { person tmp; tmp=a; a=b; b=tmp; } R.Grossmann / P. Sobe 18

10 Konstruktor, Destruktor Am Beispiel der Klasse Person: #define MAX_MITGLIEDER 100 class person { protected: char name[strlen], vorname[strlen], hobby[strlen]; int gebjahr; person() {} person(char *vn, char *n, int gebj, char *h) { gebjahr = gebj; strcpy(vorname, vn); strcpy(name, n); strcpy(hobby, h); } ~person() {} void print() { cout << vorname << " " << name << endl; } R.Grossmann / P. Sobe 19 Speicherallokation und Objekte Operatoren new und delete zur Speicherallokation bzw. -freigabe für Objekte Mit dem Operator new wird Speicher im Heap-Speicher angefordert und der Zeigervariablen zugewiesen: Beispiele: int *iptr = new int; int *kptr = new int(64); int *jptr = new int[30]; // ein Speicherbereich für 30 int Werte // wird angefordert person *p = new person( Fritz, Fuchs,1967, Fahrradfahren ); Keine Initialisierung für Standardtypen Bei Objekten wird nach Bereitstellung des Speichers der passende Klassenkonstruktor aufgerufen. Peter Sobe 20

11 Speicherallokation und Objekte Wird der über new angeforderte Speicherbereich nicht mehr verwendet, so muss er per delete explizit wieder freigegeben werden. int *pint = new int; int *pintfeld = new int[64]; person *pp = new person( Fritz, Fuchs,1967, Fahrradfahren ); delete pint; delete [] pintfeld; delete pp; delete kann nur in Verbindung mit new eingesetzt werden. int i, *pint = new int; int *pint2 = &i; delete pint; delete pint2; // Fehler, da nicht per new erzeugt delete auf einen Null-Pointer hat keine Auswirkungen. Peter Sobe 21 Elementobjekte Der Begriff Elementobjekt wurde zur Bezeichnung von Datenelementen im private-teil einer Klasse eingeführt, die keinen Standardtyp, wie float, int, char usw. repräsentieren, sondern Objekte einer anderen Klasse sind. Beispiel: Sie haben eine Klasse Punkt und wollen jetzt eine Klasse Linie definieren, die von einem Anfangspunkt zu einem Endpunkt geht. Das wäre mit Elementobjekten leicht zu erreichen: Im Programm Punkt_1 steht die Klassendefinition für Punkt: class Punkt { private: float x,y; Punkt(float a,float b){ x=a; y=b;} Punkt(){ }... R.Grossmann / P. Sobe 22

12 Elementobjekte Wir nehmen an, es gäbe die Klasse Punkt, mit einem Konstruktor Punkt(int xpos, int ypos). Nun wird die Klassendefinition für Linie unter Nutzung von Elementobjekten hinzugefügt: class Linie { private: Punkt anfang, ende ; Linie(){ } Über sogenannte Elementobjekt-Konstruktoren können Initialisierungsparameter der Klasse an die Elementobjekte durchgereicht werden. Linie(float ax,float ay,float bx,float by) : anfang(ax,ay), ende (bx,by) { } R.Grossmann / P. Sobe 23 Elementobjekte Die Elementobjekt-Konstruktoren benutzen als Namen die Namen der Elementobjekte, in der Klasse Linie also anfang und ende. Der Konstruktor Linie muss deshalb mit Aufruf der Elementobjekt- Konstruktoren geschrieben werden: class Linie { private: Punkt anfang, ende ; Linie(float ax,float ay,float bx,float by) : anfang(ax,ay), ende (bx,by) { }... Die Elementobjekt-Konstruktoren werden automatisch bei Benutzung des Konstruktors des übergeordneten Objekts (hier Linie) aufgerufen! R.Grossmann / P. Sobe 24

13 Objekte als Parameter (1) C++ erlaubt, Objekte als Parameter von Methoden zu übergeben. Beispiel: Eine Zeichenfläche (canvas), der verschiedene geometrische Objekte übergeben werden. Die Zeichenfläche kann diese Objekte beispielsweise unter Berücksichtigung von 3D- Überdeckungen zeichnen. class geomobj { class canvas { geomobj() { } canvas() { } int register_geom_obj(geomobj &o) { } void draw_all() { } int num_vertexes(); int get_vertex( int *x, int *y, int *y); int draw_vertex { } R.Grossmann, P.Sobe 25 Objekte als Parameter (2) Bei Übergabe von Objekten an Methoden sind die Mechanismen der Parameterübergabe zu beachten. Bei der Übergabe als Wert würde der Compiler eine lokale Kopie des übergebenen Wertes erzeugen. Dazu wird der Kopierkonstruktor aufgerufen. Dies ist oft nicht wünschenswert (Ressourcenverschwendung, Nebeneffekte). Das bei der Wertübergabe erzeugte Objekt würde wie andere lokale Objekte am Ende der Funktion gelöscht und der zugehörige Destruktor aufgerufen. Das führt i.d.r. zu unerwünschten Wirkungen. Im allgemeinen ist es daher sinnvoll, Objekte als (konstante) Referenz zu übergeben. R.Grossmann, P.Sobe 26

14 Objekte als Parameter (3) Übergabe von Objekten als Referenz an Methoden: int register_geom_obj(geomobj &o) { for (int i=0; i<o.num_vertexes();i++) o.get_vertex(i, &geobj[a].v[i].x, &geobj[a].v[i].y, &geobj[a].v[i].z ); } // Kopiert Eckpunktkoordinaten von o auf lokales Objekt geobj[a] besser noch als konstante Referenz: int register_geom_obj(const geomobj &o) { R.Grossmann, P.Sobe Vererbung und Polymorphie Verschiedene Klassen sind oft in einigen grundlegenden Eigenschaften/Funktionen gleich. Gemeinsame Eigenschaften und Methoden können in einer Basisklasse definiert werden. Eine Spezialisierung erfolgt durch Erzeugung einer neuen abgeleiteten Klasse, die die Eigenschaften und Methoden der Basisklasse erbt. Die abgeleitete Klasse kann Neues hinzufügen zusätzliche Elementobjekte und zusätzliche Methoden Die abgeleitete Klasse kann Methoden und Operationen verändern (überschreiben) Objekte der Basisklasse und abgeleiteter Klassen sind zuweisungskompatibel. Es entsteht eine Klassenhierarchie Peter Sobe 28

15 Abgeleitete Klassen in C++Programmen Abgeleitete Klassen müssen in C++ Programmen durch Angabe ihrer Basisklasse gekennzeichnet werden. Beispiel: class A {... class B : public A{... class C: public B{... class D: public A{... //Basis-Klasse //abgeleitete Klasse und gleich- // zeitig Basis-Klasse für C //abgeleitete Klasse //abgeleitete Klasse Alle Datenelemente einer Klasse, sowie alle Methoden mit Ausnahme der unten angegebenen werden an die abgeleitete Klasse vererbt. Nicht vererbt werden alle Konstruktoren und der Destruktor. R.Grossmann, P. Sobe 29 Konstruktoren abgeleiteter Klassen Konstruktoren werden nicht vererbt. Konstruktoren abgeleiteter Klassen müssen den Konstruktor der Basisklasse aufrufen, der für die Initialisierung der geerbten Anteile sorgt. Beispiel: class A //Basis-Klasse { private: int i; A(int k){i=k;} //Konstruktor class B : public A //abgeleitete Klasse { private: char c; B(char s,int j): A(j) {c=s;} // : A(j) ruft Basisklassen-Konstruktor auf R.Grossmann, P. Sobe 30

16 Elementobjektkonstruktoren in Konstruktoren abgeleiteter Klassen Enthalten abgeleitete Klassen Elementobjekte, so müssen neben dem Konstruktor der Basisklasse auch der Elementobjekt- Konstruktor aufgerufen werden. Beispiel: class A { private: int i; A(int k){i=k;} //Basis-Klasse //Konstruktor class B : public A //abgeleitete Klasse { private: char c; A a; //Elementobjekt B(char s,int j,int m) //Konstruktor abgl. Klasse : a(m),a(j) {c=s;} // A(j) Basisklassen-Konstruktor // a(m) ist Aufruf Elementobjekt-Konstr. R.Grossmann, P. Sobe 31 Elementobjektkonstruktoren in Konstruktoren abgeleiteter Klassen Beachten Sie, dass unabhängig von der Notation die Rufreihenfolge festgelegt ist: 1. Ruf des Konstruktors der Basisklasse 2. Ruf des Elementobjekt-Konstruktors 3. Ruf des Konstruktors der abgeleiteten Klasse Beispiel: class A { //Basis-Klasse class B : public A //abgeleitete Klasse { private: int a, c; B(..., int m, int s, ) : a(m),a(j) {c=s;} // zuerst wird A(), dann a() und zuletzt B() ausgeführt R.Grossmann, P.Sobe 32

17 Vererbung und dynamisches Binden Durch Einfügen der Compilerdirektive virtual wird dynamisches Binden von Methoden erzwungen: class A //Basis-Klasse { virtual void Druck(){cout<< Klasse A ;} void Nachricht(){cout<< Nachricht von ; Druck() ;} class B : public A //abgeleitete Klasse { void Druck(){cout<< Klasse B ;} void main() {A a; B b; a.nachricht(); b.nachricht(); } Jetzt wird ausgegeben: Nachricht von Klasse A Nachricht von Klasse B R.Grossmann, P. Sobe 33 Beispiel für Polymorphie (1) class B { B(int n): b(n) {} virtual void f() {cout << b;} private: int b; class C: public B { C(int n1, int n2): B(n1), c(n2) {} virtual void f() {B::f(); cout << c; } private: int c; class D: public C { D(int n1, int n2, int n3): C(n1,n2), d(n3) {} virtual void f() {C::f(); cout << d;} private: int d; int main { B* b_array[3]; B b(6); C c(9,12); D d (16,18,20); b_array[0] = &b; b_array[1] = &c; b_array[2] = &d; for(int i=0;i<3;i++) b_array[i]->f(); } R.Grossmann, P. Sobe 34

18 Beispiel für Polymorphie (2) b_array Ausgabe des Programms: B b(6) C c(9,12) D d(16,18,20) Es reicht aus, den Typ der Basisklasse zu kennen und einheitliche Methodennamen für Basis- und abgleitete Klassen zu verwenden. Zur Laufzeit werden die Methoden der entsprechenden Objekte (Klassen) richtig ausgewählt, ohne dass sich der Programmierer darum kümmern muss. R.Grossmann, P. Sobe 35 Grafische Veranschaulichung von Klassen (1) Klassen können untereinander verschiedene Beziehungen eingehen: Klasse B als Elementobjekt von Klasse A allgemein kann eine Klasse viele verschiedene Elementobjekte besitzen, die möglicherweise auch Instanzen verschiedener Klassen sind. Elementobjekte können ebenfalls aus verschiedenen Elementobjekten bestehen. Es ergibt sich eine Hierarchie von Elementen, die die Beziehung enthalten sein in wiederspiegeln. Klasse B als abgeleitete Klasse von A eine Klasse wird typischerweise von einer Basisklasse abgeleitet. Die Basisklasse kann wiederum eine abgeleitete Klasse sein. Es ergibt sich eine Schichtung im Sinne von erbt von. Mehrfachvererbung ist aber auch möglich, d.h. eine Klasse kann von mehreren Basisklassen erben. Klassen können sich über Referenzen assoziieren, d.h. Beziehungen aufbauen, die nicht durch die Elementobjekt-Beziehung abgedeckt ist. Diese Assoziation ist beim Entwurf zu berücksichtigen. Die grafische Darstellung der Hierarchien und Schichtung erfolgt durch Klassendiagramme, die als Teil der UML (Unified Modeling Language) vereinheitlicht wurden. R. Grossmann, P. Sobe 36

19 Grafische Veranschaulichung von Klassen (2) Objektorientierter Entwurf als Schritt, der vor der eigentlichen Programmierung erfolgt Einzelne Klasse in UML-Notation: Name der Klasse Elementobjekte Methoden Beispiel: Person name: String vorname: String alter: unsigned int anmelden() abmelden() R.Grossmann, P.Sobe 37 Grafische Veranschaulichung von Klassen (2) Vererbung: Geometrisches Objekt X-Position: float Y-Position: float Darstellung() spezialisiert Rechteck Laenge: float Breite: float Darstellung() Ellipse Halbachse-a: float Halbachse-b: float Darstellung() Quadrat Kreis Darstellung() Darstellung() R.Grossmann, P.Sobe 38

20 Grafische Veranschaulichung von Klassen (3) Komposition (Ganzes enthält Teile) ElektrSchaltung 1 1..* Zweipol Simuliere() BerechneU() Die Komposition durch Pfeil mit ausgefüllter Raute, wobei Teile nicht ohne das Ganze existieren können. In C++ wird die Komposition z.b. durch Elementobjekte realisiert. Am Pfeil sind Multiplizitäten vermerkt, die erklären, wie viele Objekte jeweils die Beziehung eingehen. Die Aggregation ist ähnlich, wobei Teile auch ohne das Ganze existieren dürfen. Fahrgemeinschaft * Fahrgast Reise() Reise () R.Grossmann, P.Sobe 39 Grafische Veranschaulichung von Klassen (4) UML Assoziation eine inhaltliche Beziehung Konto 0.. * 1..* Kunde BucheAb() Kaufe() Klassen können Verweise (Zeiger, Referenzen) auf Objekte verwalten, um inhaltliche Beziehungen zu verwalten. R.Grossmann, P.Sobe 40

21 Vorgefertigte Klassenbibliotheken Beispiele: Klassenbibliotheken für grafische Ausgabe und Window-Systeme Microsoft MFC, Qt (Unix/Linux-Welt) Klassenbibliotheken für Datenstrukturen (Felder, Arrays, Listen), z.b. Standard Template Library.NET Klassenbibliothek, nutzbar für Programme in C#, C++, Visual Basic R.Grossmann, P. Sobe 41

8. Objektorientierung und C++

8. Objektorientierung und C++ 8. Objektorientierung und C++ Inhalt: 8.1 Objektorientierung 8.2 Abstrakte Datentypen 8.3 Ziele der Objektorientierung 8.3 C++ - Erweiterungen 8.4 C++ - Klassen, Objekte und Methoden 8.5 C++ - Vererbung

Mehr

Wintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf http://informatik.swoke.de. Seite 1 von 22

Wintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf http://informatik.swoke.de. Seite 1 von 22 Kapitel 19 Vererbung, UML Seite 1 von 22 Vererbung - Neben der Datenabstraktion und der Datenkapselung ist die Vererbung ein weiteres Merkmal der OOP. - Durch Vererbung werden die Methoden und die Eigenschaften

Mehr

Vorkurs C++ Programmierung

Vorkurs C++ Programmierung Vorkurs C++ Programmierung Klassen Letzte Stunde Speicherverwaltung automatische Speicherverwaltung auf dem Stack dynamische Speicherverwaltung auf dem Heap new/new[] und delete/delete[] Speicherklassen:

Mehr

Algorithmen und Datenstrukturen 07

Algorithmen und Datenstrukturen 07 5. Dezember 2011 1 Besprechung Blatt 6 Fragen 2 Vererbung Allgemein abstract Interfaces 3 Unified Modeling Language (UML) Ablaufdiagramme Klassendiagramme Anwendungsfalldiagramme 4 Vorbereitung Blatt 7

Mehr

C++ - Einführung in die Programmiersprache Polymorphismus und Vererbung. Eltern

C++ - Einführung in die Programmiersprache Polymorphismus und Vererbung. Eltern C++ - Einführung in die Programmiersprache Polymorphismus und Vererbung Eltern Kind Kind Vererbung Definition von Klassen auf Basis von bestehenden Klassen. Implementierung von ist ein. bildet ein hierarchisches

Mehr

4. Objektorientierte Programmierung mit C++

4. Objektorientierte Programmierung mit C++ 4. Objektorientierte Programmierung mit C++ Einführung C++ / Entwicklung/ Sprachfamilie Nicht objektorientierte Erweiterungen von C Grundlagen des Typkonzepts von C++ Ziele der Objektorientierung Objekt

Mehr

3. Konzepte der objektorientierten Programmierung

3. Konzepte der objektorientierten Programmierung 3. Konzepte der objektorientierten Programmierung 3.1 Basiskonzepte 3.2 Generalisierung / Spezialisierung 3.3 Aggregation 3.4 Assoziation 3.5 Nachrichten 3.6 Polymorphismus 3. Konzepte der Objektorientierung

Mehr

Eine Klasse beschreibt Objekte mit gleichen Attributen und Methoden.

Eine Klasse beschreibt Objekte mit gleichen Attributen und Methoden. Grundwissen Informatik Objekt Attribut Methoden Als Objekte bezeichnet man alle Gegenstände, Dinge, Lebewesen, Begriffe oder Strukturen unserer Welt ( Autos, Räume, Bakterien, Lehrer, Schüler, Kunden,

Mehr

Objektorientierte Programmierung mit C++ Zusammenfassung der wichtigsten Topics rund um die objektorientierte Programmierung mit C++11

Objektorientierte Programmierung mit C++ Zusammenfassung der wichtigsten Topics rund um die objektorientierte Programmierung mit C++11 Objektorientierte Programmierung mit C++ Zusammenfassung der wichtigsten Topics rund um die objektorientierte Programmierung mit C++11 Wozu objektorientiertes Programmieren? Die Welt besteht für den Menschen

Mehr

Objektorientierte Programmierung. Objektorientierte Programmierung. Klasse. Objekt. Beispiel: Sportfest1. Methode. Eine Einführung mit BlueJ

Objektorientierte Programmierung. Objektorientierte Programmierung. Klasse. Objekt. Beispiel: Sportfest1. Methode. Eine Einführung mit BlueJ Objektorientierte Programmierung Objektorientierte Programmierung Eine Einführung mit BlueJ stellt die Daten, ihre Struktur und ihre Beziehungen zueinander in den Vordergrund. Weniger im Blickpunkt: die

Mehr

Objektorientierte Programmiersprachen

Objektorientierte Programmiersprachen Objektorientierte Programmiersprachen 1960 Algol 1970 Simula Pascal 1980 Smalltalk C Ada 1990 C++ Eiffel Eine ovale Box symbolisiert eine objektorientierte Programmiersprache. Eine rechteckige Box steht

Mehr

Kapitel 6. Vererbung

Kapitel 6. Vererbung 1 Kapitel 6 2 Ziele Das sprinzip der objektorientierten Programmierung verstehen Und in Java umsetzen können Insbesondere folgende Begriffe verstehen und anwenden können: Ober/Unterklassen Subtyping Überschreiben

Mehr

Programmieren - Vererbung & Polymorphie

Programmieren - Vererbung & Polymorphie Programmieren - Vererbung & Polymorphie Reiner Nitsch r.nitsch@fbi.h-da.de Vererbung - Was ist das? Vererbung ist ein wichtiges Konzept zur Unterstützung der Wiederverwendbarkeit, wenn auch nicht das Wichtigste.

Mehr

Von der UML nach C++

Von der UML nach C++ 22 Von der UML nach C++ Dieses Kapitel behandelt die folgenden Themen: Vererbung Interfaces Assoziationen Multiplizität Aggregation Komposition Die Unified Modeling Language (UML) ist eine weit verbreitete

Mehr

Kapitel 6. Vererbung

Kapitel 6. Vererbung 1 Kapitel 6 2 Ziele Das sprinzip der objektorientierten Programmierung verstehen Und in Java umsetzen können Insbesondere folgende Begriffe verstehen und anwenden können: Ober/Unterklassen Subtyping Überschreiben

Mehr

5.4 Klassen und Objekte

5.4 Klassen und Objekte 5.4 Klassen und Objekte Zusammenfassung: Projekt Figuren und Zeichner Figuren stellt Basisklassen für geometrische Figuren zur Verfügung Zeichner bietet eine übergeordnete Klasse Zeichner, welche die Dienstleistungen

Mehr

1. Von der Idee zur Software 2. Funktionen und Datenstrukturen Lehrbuch: 4.3 3. Organisation des Quellcodes 4. Werte- und Referenzsemantik

1. Von der Idee zur Software 2. Funktionen und Datenstrukturen Lehrbuch: 4.3 3. Organisation des Quellcodes 4. Werte- und Referenzsemantik Software-Technik: Vom Programmierer zur erfolgreichen Software-Technik: Vom Programmierer zur erfolgreichen 1. Von der Idee zur Software 2. Funktionen und Datenstrukturen Lehrbuch: 4.3 3. Organisation

Mehr

Einführung in die Programmierung mit Java. Hörsaalübung

Einführung in die Programmierung mit Java. Hörsaalübung Einführung in die Programmierung mit Java Hörsaalübung Folie 1 Grundlagen der Objektorientierung Seit Anfang der Neunzigerjahre Standardmethode der Softwareentwicklung. Die OOP Objektorientierte Programmierung

Mehr

3 Objektorientierte Konzepte in Java

3 Objektorientierte Konzepte in Java 3 Objektorientierte Konzepte in Java 3.1 Klassendeklarationen Fragen an die Klassendeklaration: Wie heißt die Klasse? Wer darf auf die Klasse und ihre Attribute/Methoden zugreifen? Ist die Klasse eine

Mehr

Kapitel 6. Vererbung

Kapitel 6. Vererbung Kapitel 6 Vererbung Vererbung 1 Ziele Das Vererbungsprinzip der objektorientierten Programmierung verstehen Und in Java umsetzen können Insbesondere folgende Begriffe verstehen und anwenden können: Ober/Unterklassen

Mehr

Objektorientierte Programmierung mit Python Polymorphismus und Vererbung. Eltern

Objektorientierte Programmierung mit Python Polymorphismus und Vererbung. Eltern Objektorientierte Programmierung mit Python Polymorphismus und Vererbung Eltern Kind Kind Kind Kind Prinzipien der objektorientierten Programmierung Vererbung Strukturierung von Klassen. Oberbegriffe beschreiben

Mehr

Java Einführung Methoden in Klassen

Java Einführung Methoden in Klassen Java Einführung Methoden in Klassen Lehrziel der Einheit Methoden Signatur (=Deklaration) einer Methode Zugriff/Sichtbarkeit Rückgabewerte Parameter Aufruf von Methoden (Nachrichten) Information Hiding

Mehr

Software Engineering Klassendiagramme Einführung

Software Engineering Klassendiagramme Einführung Software Engineering Klassendiagramme Einführung Prof. Adrian A. Müller, PMP, PSM 1, CSM Fachbereich Informatik und Mikrosystemtechnik 1 Aufgabe Erstellen Sie eine Klasse Person in Java. Jede Person verfügt

Mehr

GetName(), GetName(), GetGeschlecht() und AelterWerden().

GetName(), GetName(), GetGeschlecht() und AelterWerden(). 11. Vererbung Vererbung ist eine der mächtigsten Funktionalitäten der objektorientierten Programmiersprachen. Man versteht unter Vererbung die Tatsache, dass eine Klasse alle Methoden und Variablen einer

Mehr

4 Vererbung, Polymorphie

4 Vererbung, Polymorphie 4 Vererbung, Polymorphie Jörn Loviscach Versionsstand: 21. März 2014, 22:57 Die nummerierten Felder sind absichtlich leer, zum Ausfüllen beim Ansehen der Videos: http://www.j3l7h.de/videos.html This work

Mehr

C++-Zusammenfassung. H. Schaudt. August 18, 2005

C++-Zusammenfassung. H. Schaudt. August 18, 2005 C++-Zusammenfassung H. Schaudt August 18, 2005 1 Datentypen 1.1 Grunddatentypen int (-32xxx bis +32xxx, implementerungs-abhängig) char -128 bis +128 float double bool (C++) int und char sind austauschbar:

Mehr

einkonto.zahle(+100); //Transaktion Einzahlung einkonto.zahle(-20); //Transaktion Auszahlung einkonto.zahle(+30); //Transaktion Einzahlung

einkonto.zahle(+100); //Transaktion Einzahlung einkonto.zahle(-20); //Transaktion Auszahlung einkonto.zahle(+30); //Transaktion Einzahlung PIWIN I Kap. 7 Objektorientierte Programmierung - Einführung 28 Testklasse public class TestGirokonto { public static void main(string[] args) { // erzeuge neues Konto Girokonto einkonto = new Girokonto();

Mehr

PIWIN I. Praktische Informatik für Wirtschaftsmathematiker, Ingenieure und Naturwissenschaftler I. Vorlesung 3 SWS WS 2007/2008

PIWIN I. Praktische Informatik für Wirtschaftsmathematiker, Ingenieure und Naturwissenschaftler I. Vorlesung 3 SWS WS 2007/2008 PIWIN I Kap. 7 Objektorientierte Programmierung - Einführung 1 PIWIN I Praktische Informatik für Wirtschaftsmathematiker, Ingenieure und Naturwissenschaftler I Vorlesung 3 SWS WS 2007/2008 FB Informatik

Mehr

Methoden. von Objekten definiert werden, Methoden,, Zugriffsmethoden und Read-Only

Methoden. von Objekten definiert werden, Methoden,, Zugriffsmethoden und Read-Only Methoden Wie Konstruktoren und Destruktoren zum Auf- und Abbau von Objekten definiert werden, Wie inline-methoden Methoden,, Zugriffsmethoden und Read-Only Only- Methoden einzusetzen sind, Der this-pointer

Mehr

Objektorientierte Programmierung

Objektorientierte Programmierung Programmierkurs C++ Kapitel 7:Objektorientierte Programmierung Seite 1 Objektorientierte Programmierung If programming in PASCAL is like put in a straightjacket, then programming in C is like playing with

Mehr

Objektorientierte Programmierung OOP

Objektorientierte Programmierung OOP Objektorientierte Programmierung OOP Objektorientierte Programmierung OOP Ronja Düffel WS2012/13 08. Oktober 2013 Objektorientierte Programmierung OOP Objektorientierte Programmierung Objektorientierte

Mehr

1. Grundlegende Eigenscha5en 2. Redefini+on 3. Polymophie 4. Mehrfachvererbung

1. Grundlegende Eigenscha5en 2. Redefini+on 3. Polymophie 4. Mehrfachvererbung K05 Vererbung & Polymorphie in C++ 1. Grundlegende Eigenscha5en 2. Redefini+on 3. Polymophie 4. Mehrfachvererbung 2 Vererbung in C++: Grundlagen Analog zu Java unterstützt C++ das Konzept der Vererbung:

Mehr

Vererbung & Schnittstellen in C#

Vererbung & Schnittstellen in C# Vererbung & Schnittstellen in C# Inhaltsübersicht - Vorüberlegung - Vererbung - Schnittstellenklassen - Zusammenfassung 1 Vorüberlegung Wozu benötigt man Vererbung überhaubt? 1.Um Zeit zu sparen! Verwendung

Mehr

Übersicht. Informatik 2 Teil 3 Anwendungsbeispiel für objektorientierte Programmierung

Übersicht. Informatik 2 Teil 3 Anwendungsbeispiel für objektorientierte Programmierung Übersicht 3.1 Modell Konto 3.2 Modell Konto - Erläuterungen 3.3 Benutzer Ein- und Ausgabe mit Dialogfenster I 3.4 Benutzer Ein- und Ausgabe mit Dialogfenster II 3.5 Klassen- und Objekteigenschaften des

Mehr

C vs. C++ Sebastian Meyer. Proseminar C - Grundlagen und Konzepte. Universität Hamburg

C vs. C++ Sebastian Meyer. Proseminar C - Grundlagen und Konzepte. Universität Hamburg C vs. C++ Sebastian Meyer Universität Hamburg Proseminar C - Grundlagen und Konzepte 2013 1 / 31 Gliederung 1 Einführung 2 Vergleich der Spracheigenschaften 3 Neue Sprachelemente in C++ 4 Fazit 5 Zusammenfassung

Mehr

Klassendiagramm. Kurzer Überblick über UML - Stand 2006. BlaBla

Klassendiagramm. Kurzer Überblick über UML - Stand 2006. BlaBla BlaBla Diese Kennzeichnungen sind nur Erläuterungen und nicht Bestandteil des Diagramms Quelle: P.Grässle, H.Baumann, P.Baumann, UML projektorientiert, Galileo Verlag, 2003 21 Primäre Begriffe Kapselung

Mehr

Test zu Grundlagen der Programmierung Leitung: Michael Hahsler. 21. November 2003

Test zu Grundlagen der Programmierung Leitung: Michael Hahsler. 21. November 2003 Test zu Grundlagen der Programmierung Leitung: Michael Hahsler 1. November 00 Name Martrikelnummer Unterschrift Bitte kreuzen Sie das Studium an, für das Sie diese Prüfung ablegen: O Bakkalaureat Wirtschaftsinformatik

Mehr

Objektorientiertes Programmieren für Ingenieure

Objektorientiertes Programmieren für Ingenieure Uwe Probst Objektorientiertes Programmieren für Ingenieure Anwendungen und Beispiele in C++ 18 2 Von C zu C++ 2.2.2 Referenzen und Funktionen Referenzen als Funktionsparameter Liefert eine Funktion einen

Mehr

C++ - Einführung in die Programmiersprache Objektorientierte Programmierung

C++ - Einführung in die Programmiersprache Objektorientierte Programmierung C++ - Einführung in die Programmiersprache Objektorientierte Programmierung hat Kanten hat eine Farbe hat eine Kantenfarbe Rechteck zeichnen Rechteck einfärben Rechteck drehen Modulare Programmierung Projekt

Mehr

7. Objektorientierte Softwareentwicklung/3. Informatik II für Verkehrsingenieure

7. Objektorientierte Softwareentwicklung/3. Informatik II für Verkehrsingenieure 7. Objektorientierte Softwareentwicklung/3 Informatik II für Verkehrsingenieure Überblick FOLGENDE BEGRIFFE/PRINZIPIEN SOLLTEN BEKANNT SEIN Objekte Klasse Attribute Fähigkeiten ZIEL DER HEUTIGEN LEHRVERANSTALTUNG

Mehr

Einführung in die. objektorientierte Programmierung

Einführung in die. objektorientierte Programmierung Einführung in die objektorientierte Programmierung Teil 3 Vererbung Modul WI111: Objektorientierte Programmierung Fachrichtung Wirtschaftsinformatik Prof. Dr. Gert Faustmann Fachbereich Berufsakademie

Mehr

Angewandte Mathematik und Programmierung

Angewandte Mathematik und Programmierung Angewandte Mathematik und Programmierung Einführung in das Konzept der objektorientierten Anwendungen zu mathematischen Rechnens WS 2013/14 Die Vererbung ermöglicht es, neue Klassen auf der Basis von schon

Mehr

PIWIN I. Praktische Informatik für Wirtschaftsmathematiker, Ingenieure und Naturwissenschaftler I. Vorlesung 3 SWS WS 2008/2009

PIWIN I. Praktische Informatik für Wirtschaftsmathematiker, Ingenieure und Naturwissenschaftler I. Vorlesung 3 SWS WS 2008/2009 PIWIN I Kap. 8 Objektorientierte Programmierung - Vererbung 1 PIWIN I Praktische Informatik für Wirtschaftsmathematiker, Ingenieure und Naturwissenschaftler I Vorlesung 3 SWS WS 2008/2009 FB Informatik

Mehr

C++ - Operatoren. Eigene Klassen mit neuen Funktionen

C++ - Operatoren. Eigene Klassen mit neuen Funktionen C++ - Operatoren Eigene Klassen mit neuen Funktionen Übersicht Klassen bisher Eigene Operatoren definieren 2 Bisher Durch Kapselung, Vererbung und Polymorphy können nun eigene Klassen definiert werden,

Mehr

(allgemeine) OOP in C++ Klassen und header-files Konstruktorn / Destruktoren Speicherverwaltung C++ Standard Library / SLT

(allgemeine) OOP in C++ Klassen und header-files Konstruktorn / Destruktoren Speicherverwaltung C++ Standard Library / SLT Architektur Übersicht (allgemeine) OOP in C++ Polymorphie Virtuelle Funktionen Kompilieren Linken dynamische/statische Bibliotheken Tutorial: vs2008+ogre+(campus modell) Architektur (allgemeine) OOP in

Mehr

Programmieren II Vererbung. Programmieren II Vererbung. Programmieren II Vererbung. Programmieren II Vererbung. Einleitende Bemerkungen

Programmieren II Vererbung. Programmieren II Vererbung. Programmieren II Vererbung. Programmieren II Vererbung. Einleitende Bemerkungen Einleitende Bemerkungen Einleitende Bemerkungen Ideen hinter der objektorientierten Programmierung Objekte (/* Instanzen einer Klasse */) im Mittelpunkt Objekte bilden Einheit aus Daten (/* Attributen,

Mehr

1 Polymorphie (Vielgestaltigkeit)

1 Polymorphie (Vielgestaltigkeit) 1 Polymorphie (Vielgestaltigkeit) Problem: Unsere Datenstrukturen List, Stack und Queue können einzig und allein int-werte aufnehmen. Wollen wir String-Objekte, andere Arten von Zahlen oder andere Objekttypen

Mehr

Klassenbeziehungen & Vererbung

Klassenbeziehungen & Vererbung Klassenbeziehungen & Vererbung VL Objektorientierte Programmierung Raimund Kirner teilweise nach Folien von Franz Puntigam, TU Wien Überblick Arten von Klassenbeziehungen Untertypen versus Vererbung in

Mehr

10 Objektorientierte Programmierung, Teil 1

10 Objektorientierte Programmierung, Teil 1 10 Objektorientierte Programmierung, Teil 1 Wir lernen nun eine andere Technik (vor allem: eine andere Sichtweise) kennen, um unsere Programm zu organisieren, nämlich mittels Klassen und Objekten 184 Objekte,

Mehr

5.5.8 Öffentliche und private Eigenschaften

5.5.8 Öffentliche und private Eigenschaften 5.5.8 Öffentliche und private Eigenschaften Schnittstellen vs. Implementierungen: Schnittstelle einer Klasse beschreibt, was eine Klasse leistet und wie sie benutzt werden kann, ohne dass ihre Implementierung

Mehr

Deklarationen in C. Prof. Dr. Margarita Esponda

Deklarationen in C. Prof. Dr. Margarita Esponda Deklarationen in C 1 Deklarationen Deklarationen spielen eine zentrale Rolle in der C-Programmiersprache. Deklarationen Variablen Funktionen Die Deklarationen von Variablen und Funktionen haben viele Gemeinsamkeiten.

Mehr

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen Algorithmen und Datenstrukturen Tafelübung 04 Referenzen, Overloading, Klassen(hierarchien) Clemens Lang T2 18. Mai 2010 14:00 16:00, 00.152 Tafelübung zu AuD 1/13 Organisatorisches Nächster Übungstermin

Mehr

Probeklausur: Programmierung WS04/05

Probeklausur: Programmierung WS04/05 Probeklausur: Programmierung WS04/05 Name: Hinweise zur Bearbeitung Nimm Dir für diese Klausur ausreichend Zeit, und sorge dafür, dass Du nicht gestört wirst. Die Klausur ist für 90 Minuten angesetzt,

Mehr

Software Engineering Klassendiagramme weiterführende Konzepte

Software Engineering Klassendiagramme weiterführende Konzepte Software Engineering Klassendiagramme weiterführende Konzepte Prof. Adrian A. Müller, PMP, PSM 1, CSM Fachbereich Informatik und Mikrosystemtechnik 1 Klassenattribut: static Implementierung in Java public

Mehr

Objektorientierung: Klassen und Objekte

Objektorientierung: Klassen und Objekte Objektorientierung: Klassen und Objekte Klasse: Beschreibung für eine Menge von Objekten Schablone, Bauplan abstrakte Form Objekt: Instanz einer Klasse konkreter Inhalt (Werte) Klassen bestehen aus Attributen

Mehr

Verhindert, dass eine Methode überschrieben wird. public final int holekontostand() {...} public final class Girokonto extends Konto {...

Verhindert, dass eine Methode überschrieben wird. public final int holekontostand() {...} public final class Girokonto extends Konto {... PIWIN I Kap. 8 Objektorientierte Programmierung - Vererbung 31 Schlüsselwort: final Verhindert, dass eine Methode überschrieben wird public final int holekontostand() {... Erben von einer Klasse verbieten:

Mehr

Angewandte Mathematik und Programmierung

Angewandte Mathematik und Programmierung Angewandte Mathematik und Programmierung Einführung in das Konzept der objektorientierten Anwendungen zu mathematischen Rechnens WS2013/14 Inhalt Übung(Aufklärung) Vererbung(wdh.) Initilisierung bei Vererbung

Mehr

Ulla Kirch Peter Prinz C+ + Lernen und professionell anwenden. mitp

Ulla Kirch Peter Prinz C+ + Lernen und professionell anwenden. mitp Ulla Kirch Peter Prinz C+ + Lernen und professionell anwenden mitp Inhaltsverzeichnis Einleitung 19 Grundlagen 21 Entwicklung und Eigenschaften von C++ 22 Objektorientierte Programmierung 24 Erstellen

Mehr

Repetitorium Informatik (Java)

Repetitorium Informatik (Java) Repetitorium Informatik (Java) Tag 8 Lehrstuhl für Informatik 2 (Programmiersysteme) Übersicht 1 Vererbung Vererbung Statischer Typ Dynamischer Typ 2 Polymorphie Overloading: Methoden überladen Overriding:

Mehr

Java Schulung (Java 2 Java Development Kit 5 / 6)

Java Schulung (Java 2 Java Development Kit 5 / 6) 2. Grundlagen der Objektorientierung 2.1 Klassen, Attribute, Methoden Klassen Eine Klasse beschreibt als Bauplan Gemeinsamkeiten einer Menge von Objekten ist also ein Modell, auf dessen Basis Objekte erstellt

Mehr

Klassendiagramm. (class diagram)

Klassendiagramm. (class diagram) : Klassendiagramm http:///topic95.html Klassendiagramm (class diagram) Klassendiagramm Objektdiagramm Komponentendiagramm Kompositionsstrukturdiagramm Verteilungsdiagramm Einstieg Paketdiagramm Aufbau

Mehr

2. Programmierung in C

2. Programmierung in C 2. Programmierung in C Inhalt: Überblick über Programmiersprachen, Allgemeines zur Sprache C C: Basisdatentypen, Variablen, Konstanten Operatoren, Ausdrücke und Anweisungen Kontrollstrukturen (Steuerfluss)

Mehr

Einführung in C++ mit Microsoft VS

Einführung in C++ mit Microsoft VS Einführung in C++ mit Microsoft VS Gliederung Allgemeines zu C++ und Unterschiede zu Java Header-Files Zeiger/Strukturen Namespaces Programmierstil Einführung in Microsoft VS Projekte und Solutions Debugger

Mehr

Programmieren in Java

Programmieren in Java Programmieren in Java objektorientierte Programmierung 2 2 Zusammenhang Klasse-Datei In jeder *.java Datei kann es genau eine public-klasse geben wobei Klassen- und Dateiname übereinstimmen. Es können

Mehr

2. Semester, 2. Prüfung, Lösung

2. Semester, 2. Prüfung, Lösung 2. Semester, 2. Prüfung, Lösung Name Die gesamte Prüfung bezieht sich auf die Programmierung in C++! Prüfungsdauer: 90 Minuten Mit Kugelschreiber oder Tinte schreiben Lösungen können direkt auf die Aufgabenblätter

Mehr

Objektorientierte Programmierung mit C++ Vector und List

Objektorientierte Programmierung mit C++ Vector und List Vector und List Ziel, Inhalt Wir lernen die Klassen vector und list aus der Standard-C++ Library kennen und anwenden. In einer Übung wenden wir diese Klassen an um einen Medienshop (CD s und Bücher) zu

Mehr

PIWIN 1 Übung Blatt 5

PIWIN 1 Übung Blatt 5 Fakultät für Informatik Wintersemester 2008 André Gronemeier, LS 2, OH 14 Raum 307, andre.gronemeier@cs.uni-dortmund.de PIWIN 1 Übung Blatt 5 Ausgabedatum: 19.12.2008 Übungen: 12.1.2009-22.1.2009 Abgabe:

Mehr

Teil 9: Vererbung. Prof. Dr. Herbert Fischer Fachhochschule Deggendorf Prof. Dr. Manfred Beham Fachhochschule Amberg-Weiden

Teil 9: Vererbung. Prof. Dr. Herbert Fischer Fachhochschule Deggendorf Prof. Dr. Manfred Beham Fachhochschule Amberg-Weiden Teil 9: Vererbung Prof. Dr. Herbert Fischer Fachhochschule Deggendorf Prof. Dr. Manfred Beham Fachhochschule Amberg-Weiden Inhaltsverzeichnis 9 Vererbung... 3 9.1 Motivation... 3 9.2 Deklaration und Zugriffsrechte...

Mehr

Klassen in Java. Klassen

Klassen in Java. Klassen Klassen in Java Klassen Klassen beschreiben Objekte, die abstakte oder konkrete Sachverhalte modellieren. Objekte sind durch einen Status gekennzeichnet (State). Der Status eines Objektes ergibt sich aus

Mehr

Objektorientierte Programmierung mit Python Objekt und Klassen

Objektorientierte Programmierung mit Python Objekt und Klassen Objektorientierte Programmierung mit Python Objekt und Klassen hat Kanten hat eine Farbe hat eine Kantenfarbe Rechteck zeichnen Rechteck einfärben Rechteck drehen Modulare Programmierung Eine Aufgabe wird

Mehr

Vorlesung Modellierung und Programmierung I Inhaltsverzeichnis

Vorlesung Modellierung und Programmierung I Inhaltsverzeichnis Vorlesung Modellierung und Programmierung I Inhaltsverzeichnis Teil I Imperative Programmierung 0 Maschinenzahlen... 2 0.1 Additionssysteme...2 0.2 Positionssysteme...2 0.3 Dezimal- und Dualsystem...3

Mehr

Meeting C++ C++11 R-Value Referenzen

Meeting C++ C++11 R-Value Referenzen Meeting C++ Detlef Wilkening http://www.wilkening-online.de 09.11.2012 Inhalt Motivation L-Values und R-Values R-Value Referenzen Move Semantik std::move Funktionen mit R-Value-Referenz Parametern Fazit

Mehr

Javakurs für Anfänger

Javakurs für Anfänger Javakurs für Anfänger Einheit 02: Klassen & Objekte Lorenz Schauer Lehrstuhl für Mobile und Verteilte Systeme Heutige Agenda 1. Teil: Klassen Grundstruktur einer Java-Klasse Eigenschaften (Attribute) Variablen

Mehr

Alltagsnotizen eines Softwareentwicklers

Alltagsnotizen eines Softwareentwicklers Alltagsnotizen eines Softwareentwicklers Entkoppeln von Objekten durch Callbacks mit c++-interfaces oder boost.function und boost.bind Tags: c++, entkoppeln, objekt, oop, callback, boost.bind, boost.function,

Mehr

Abschnitt 9: Schnittstellen: Interfaces

Abschnitt 9: Schnittstellen: Interfaces Abschnitt 9: Schnittstellen: Interfaces 9. Schnittstellen: Interfaces 9.1 Die Idee der Schnittstellen 9.2 Schnittstellen in Java 9.3 Marker-Interfaces 9.4 Interfaces und Hilfsklassen 9.5 Zusammenfassung

Mehr

Unified Modeling Language (UML)

Unified Modeling Language (UML) Kirsten Berkenkötter Was ist ein Modell? Warum Modellieren? Warum UML? Viele, viele Diagramme UML am Beispiel Was ist ein Modell? Ein Modell: ist eine abstrakte Repräsentation eines Systems, bzw. ist eine

Mehr

Objektorientierte Programmierung

Objektorientierte Programmierung Objektorientierte Programmierung 1 Geschichte Dahl, Nygaard: Simula 67 (Algol 60 + Objektorientierung) Kay et al.: Smalltalk (erste rein-objektorientierte Sprache) Object Pascal, Objective C, C++ (wiederum

Mehr

Lösungen zu Übung 3 Objektorientierte Modellierung - Statisches Modell

Lösungen zu Übung 3 Objektorientierte Modellierung - Statisches Modell Universität Stuttgart Institut für Automatisierungs- und Softwaretechnik Prof. Dr.-Ing. Dr. h. c. P. Göhner Lösungen zu Übung 3 Objektorientierte Modellierung - Statisches Modell Aufgabe 3. Assoziation

Mehr

3 Objektorientierte Konzepte in Java

3 Objektorientierte Konzepte in Java 3 Objektorientierte Konzepte in Java Bisherige Beobachtungen zu Objekten: werden in Klassen zusammengefasst besitzen Eigenschaften und Verhalten verbergen private Informationen werden geboren, leben und

Mehr

Willkommen zur Vorlesung. Objektorientierte Programmierung Vertiefung - Java

Willkommen zur Vorlesung. Objektorientierte Programmierung Vertiefung - Java Willkommen zur Vorlesung Objektorientierte Programmierung Vertiefung - Java Zum Dozenten Mein Name: Andreas Berndt Diplom-Informatiker (TU Darmstadt) Derzeit Software-Entwickler für Web- Applikationen

Mehr

1. Übung zu "Numerik partieller Differentialgleichungen"

1. Übung zu Numerik partieller Differentialgleichungen 1. Übung zu "Numerik partieller Differentialgleichungen" Simon Gawlok, Eva Treiber Engineering Mathematics and Computing Lab 22. Oktober 2014 1 / 15 1 Organisatorisches 2 3 4 2 / 15 Organisatorisches Ort:

Mehr

Objekt-Orientierte Programmierung

Objekt-Orientierte Programmierung Objekt-Orientierte Programmierung Ein OO-Programm modelliert eine Anwendung als eine Welt von Objekten, die miteinander in Beziehung stehen ( später). Ein Objekt kann andere Objekte erzeugen. Ein Objekt

Mehr

Drei-Schichten-Architektur. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 16: 3-Schichten-Architektur 1 Fachkonzept - GUI

Drei-Schichten-Architektur. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 16: 3-Schichten-Architektur 1 Fachkonzept - GUI Universität Osnabrück Drei-Schichten-Architektur 3 - Objektorientierte Programmierung in Java Vorlesung 6: 3-Schichten-Architektur Fachkonzept - GUI SS 2005 Prof. Dr. F.M. Thiesing, FH Dortmund Ein großer

Mehr

Programmieren I. Strategie zum Entwurf von Klassen. Beispiele. Design von Klassen. Dr. Klaus Höppner. Beispiel: Bibliothek

Programmieren I. Strategie zum Entwurf von Klassen. Beispiele. Design von Klassen. Dr. Klaus Höppner. Beispiel: Bibliothek Programmieren I Dr. Klaus Höppner Hochschule Darmstadt Wintersemester 2008/2009 1 / 22 2 / 22 Strategie zum Entwurf von Klassen Beispiele Objektorientierte Sichtweise: Mit welchen Objekten habe ich es

Mehr

5. Abstrakte Klassen. Beispiel (3) Abstrakte Klasse. Beispiel (2) Angenommen, wir wollen die folgende Klassenhierarchie implementieren:

5. Abstrakte Klassen. Beispiel (3) Abstrakte Klasse. Beispiel (2) Angenommen, wir wollen die folgende Klassenhierarchie implementieren: 5. Abstrakte Klassen Beispiel 5. Abstrakte Klassen 5. Abstrakte Klassen Beispiel Beispiel (3) Angenommen, wir wollen die folgende Klassenhierarchie implementieren: Probleme des Implementierungsvorschlags:

Mehr

OO Softwareentwicklung

OO Softwareentwicklung OO Softwareentwicklung Objektorientierung Prof. Dr. Bernhard Schiefer 1 OO als Ansatz zur Verbesserung der Software-Qualität Modellierung der Welt als selbständig agierende Objekte. Gemeinsame Beschreibung

Mehr

Zum Abschluss wird gezeigt, wie aus einem C++ Quell-Programm ein ausführbares Programm erzeugt wird. 1. Installation von NetBeans...

Zum Abschluss wird gezeigt, wie aus einem C++ Quell-Programm ein ausführbares Programm erzeugt wird. 1. Installation von NetBeans... Erste Schritte Dieser Teil der Veranstaltung gibt einen ersten Eindruck der Programmierung mit C++. Es wird ein erstes Gefühl von Programmiersprachen vermittelt, ohne auf die gezeigten Bestandteile genau

Mehr

Programmieren in C++ Arrays, Strings und Zeigerarithmetik

Programmieren in C++ Arrays, Strings und Zeigerarithmetik Programmieren in C++ Arrays, Strings und Zeigerarithmetik Inhalt Eindimensionale C-Arrays C-Strings und Strings (Mehrdimensionale C-Arrays) Arrays und Vektoren (C++) Unique Pointers (C++11) Zeigerarithmetik

Mehr

Klausur C++ #1 Jahr: 2001; Dozent: Dipl.Ing. Sorber

Klausur C++ #1 Jahr: 2001; Dozent: Dipl.Ing. Sorber Klausur C++ #1 Jahr: 2001; Dozent: Dipl.Ing. Sorber 1) Welche Antworten zur Operatorüberladung sind richtig? (1) a) C++ - Operatoren können zusammen mit Objekten funktionieren b) C++ - Operatoren wird

Mehr

Programmierkurs Java

Programmierkurs Java Programmierkurs Java Konstruktor, Statische Methoden Packages Prof. Dr. Stefan Fischer Institut für Telematik, Universität zu Lübeck http://www.itm.uni-luebeck.de/people/fischer Initialisierung von Datenstrukturen

Mehr

Tutorium Java Ein Überblick. Helge Janicke

Tutorium Java Ein Überblick. Helge Janicke Tutorium Java Ein Überblick Helge Janicke 26. Oktober 2000 1 VORRAUSSETZUNGEN ZUM PROGRAMMIEREN MIT JAVA. 1 1 Vorraussetzungen zum Programmieren mit Java. Was braucht man, wenn man mit Java programmieren

Mehr

Objektorientierung: Klassen und Objekte

Objektorientierung: Klassen und Objekte Vorlesung und Übung Universität Paderborn Wintersemester 2015/2016 Dr. Peter Pfahler Objektorientierung: Klassen und Objekte EWS, WS 2015/16, Pfahler L-1 Objektorientierung behandelt in "Einführung in

Mehr

Objektorientierte Programmierung. Kapitel 12: Interfaces

Objektorientierte Programmierung. Kapitel 12: Interfaces 12. Interfaces 1/14 Objektorientierte Programmierung Kapitel 12: Interfaces Stefan Brass Martin-Luther-Universität Halle-Wittenberg Wintersemester 2012/13 http://www.informatik.uni-halle.de/ brass/oop12/

Mehr

5.6 Vererbung. Vererbung

5.6 Vererbung. Vererbung 5.6 Vererbung Klassen können zueinander in einer "ist ein"- Beziehung stehen Beispiel: Jeder PKW ist ein Kraftfahrzeug, jedes Kraftfahrzeug ist ein Transportmittel aber: auch jeder LKW ist ein Kraftfahrzeug

Mehr

10. Klassen. Prof. Dr. Markus Gross Informatik I für D-ITET (WS 03/04)

10. Klassen. Prof. Dr. Markus Gross Informatik I für D-ITET (WS 03/04) 10. Klassen Prof. Dr. Markus Gross Informatik I für D-ITET (WS 03/04)!Objektorientierte Programmierung!Das Konzept der Klassen!Members!Objekte!Konstruktoren und Destruktoren!this-Pointer!Public und Private

Mehr

Programmieren II Klassen. Programmieren II Klassen. Programmieren II Klassen. Programmieren II Klassen. Zur Erinnerung.

Programmieren II Klassen. Programmieren II Klassen. Programmieren II Klassen. Programmieren II Klassen. Zur Erinnerung. Vorbemerkungen Zur Erinnerung aktueller Standpunkt: Entwickler von (bibliotheken) jetzt sind wichtig interne Repräsentation der Daten Realisierung der gewünschten Funktionalität Bereitstellung geeigneter

Mehr

Lösungen zu Übung 3 Objektorientierte Modellierung - Statisches Modell

Lösungen zu Übung 3 Objektorientierte Modellierung - Statisches Modell Universität Stuttgart Institut für Automatisierungstechnik und Softwaresysteme Prof. Dr.-Ing. M. Weyrich Lösungen zu Übung 3 Objektorientierte Modellierung - Statisches Modell Aufgabe 3. Assoziation zwischen

Mehr

Vererbung. Vererbung von Methoden und Instanzvariablen. Vererbung als Realisierung einer is-a Beziehung.

Vererbung. Vererbung von Methoden und Instanzvariablen. Vererbung als Realisierung einer is-a Beziehung. Vererbung Unterklassen einer Klasse Vererbung von Methoden und Instanzvariablen Überschreiben von Methoden Vererbung als Realisierung einer is-a Beziehung. Informatik II: Objektorientierte SW-Entwicklung,

Mehr

Von Java nach C++ Dr. Frank Weichert Lehrstuhl Informatik VII Technische Universität Dortmund http://ls7-www.cs.uni-dortmund.de

Von Java nach C++ Dr. Frank Weichert Lehrstuhl Informatik VII Technische Universität Dortmund http://ls7-www.cs.uni-dortmund.de Von Java nach C++ Dr. Frank Weichert Lehrstuhl Informatik VII Technische Universität Dortmund http://ls7-www.cs.uni-.de Von Java nach C++, Lehrstuhl Informatik VII, TU Dortmund 1 Übersicht Einleitung Literatur

Mehr

EINI WiMa/LW. Einführung in die Informatik für Naturwissenschaftler und Ingenieure. Vorlesung 2 SWS WS 11/12

EINI WiMa/LW. Einführung in die Informatik für Naturwissenschaftler und Ingenieure. Vorlesung 2 SWS WS 11/12 EINI WiMa/LW Einführung in die Informatik für Naturwissenschaftler und Ingenieure Vorlesung 2 SWS WS 11/12 Fakultät für Informatik Technische Universität Dortmund lars.hildebrand@udo.edu http://ls1-www.cs.uni-dortmund.de

Mehr