I Aufwand = Anzahl benötigter Operationen. I programmspezifische Operationen nicht gezählt. I Aufwand wird durch einfaches Zählen ermittelt

Größe: px
Ab Seite anzeigen:

Download "I Aufwand = Anzahl benötigter Operationen. I programmspezifische Operationen nicht gezählt. I Aufwand wird durch einfaches Zählen ermittelt"

Transkript

1 Aufwand eines Algorithmus Aufwand I Aufwand von Algorithmen I Landau-Symbol O I time.h, clock t, clock() I Aufwand = Anzahl benötigter Operationen Zuweisungen Vergleiche arithmetische Operationen I programmspezifische Operationen nicht gezählt Deklarationen & Initialisierungen Schleifen, Verzweigungen etc. Zählvariablen I Aufwand wird durch einfaches Zählen ermittelt I Konventionen zum Zählen nicht einheitlich I in der Regel ist Aufwand für worst case interessant d.h. maximaler Aufwand im schlechtesten Fall 83 8 Landau-Symbol O (= groß-o) I oft nur Größenordnung des Aufwands interessant Beispiel: Maximum suchen 1 double maximum(vector<double> &v) { 2 int i = 0; 3 double max = 0; 5 int n = (int) v.size(); max = v[0]; 7 for (i=1; i<n; ++i) { 8 if (v[i] > max) { 9 max = v[i]; 10 } 12 return max; 13 } I Aufwand: 2 Zuweisung n 1 Schritte mit jeweils 1 Vergleich 1 Zuweisung (worst case!) I insgesamt 2 + 2(n 1) = 2n Operationen I Schreibweise f = O(g) für x! x 0 heißt lim sup x!x0 f(x) g(x) < 1 d.h. f(x) apple C g(x) für x! x 0. d.h. f wächst höchstens so schnell wie g I Beispiel: Maximum suchen Aufwand 2n = O(n) für n!1 I häufig entfällt für x! x 0 dann Grenzwert x 0 kanonisch z.b. 2n = O(n) I Sprechweise: Algorithmus hat linearen Aufwand, falls Aufwand O(n) bei Problemgröße n Maximumssuche hat linearen Aufwand Algorithmus hat fastlinearen Aufwand, falls Aufwand O(n log n) bei Problemgröße n Algorithmus hat quadratischen Aufwand, falls Aufwand O(n 2 ) bei Problemgröße n Algorithmus hat kubischen Aufwand, falls Aufwand O(n 3 ) bei Problemgröße n 85 8

2 Minsort Matrix-Vektor Multiplikation 1 void MVM(vector<vector<double> > &A, 2 vector<double> &x, 3 vector<double> &y, int m, int n) { 5 int i = 0; int j = 0; 7 8 for(i=0; i<m; ++i) { 9 y[i] = 0.; 10 for(j=0; j<n; ++j) { 11 y[i] = y[i] + A[i][j]*x[j]; 12 } 13 } 1 } I m Schritte 1 Zuweisung jeweils n mal 1 Multiplikation 1 Addition 1 Zuweisung I Insgesamt 3mn + m Operationen I Aufwand O(mn) bzw. Aufwand O(n 2 ) für m = n d.h. quadratischer Aufwand für m = n 87 1 void minsort(vector<double> &vec){ 2 int j,k,argmin; 3 double tmp; int n = vec.size(); 5 for (j=0; j<n-1; ++j) { 7 argmin = j; 8 for (k=j+1; k<n; ++k) { 9 if (vec[argmin] > vec[k]) { 10 argmin = k; 12 } 13 if (argmin > j) { 1 tmp = vec[argmin]; 15 vec[argmin] = vec[j]; 1 vec[j] = tmp; 17 } 18 } 19 } I n-1 Schritte 1 Zuweisung jeweils n (j + 1) = n j 1 mal 1 Vergleich 1 Zuweisung (worst case!) jeweils 1 Vergleich jeweils 3 Zuweisungen (worst case!) I Insgesamt 5(n 1) + P n 1 j=1 (n j 1)2 = 5(n 1) + 2 P n 2 k=0 k (n 2)(n 1) = 5(n 1) = n 2 +2n 3, d.h. quadratischer Aufwand O(n 2 ) 88 Zeitmessung I Wozu Zeitmesssung? Vergleich von Algorithmen Vergleich von Implementierungen überprüfen theoretischer Voraussagen I theoretische Voraussagen linearer Aufwand 2 Problemgröße ) 2 Rechenzeit quadratischer Aufwand 2 Problemgröße ) Rechenzeit etc. I Bibliothek time.h Datentyp clock t für Zeitvariablen für Ausgabe Typecast nicht vergessen! Funktion clock() liefert Rechenzeit seit Programmbeginn Konstante CLOCKS PER SEC zum Umrechnen: Zeitvariable/CLOCKS PER SEC liefert Angabe in Sekunden 89 Vergleich von Laufzeit 2 #include <time.h> 3 double maximum(vector<double> &vec); 5 void minsort(vector<double> &vec); 7 int main() 8 { 9 clock_t t1,t2; 10 int i = 0; 11 double max = 0; 12 int n = 0; 13 1 cout << "Geben Sie die Dimension ein: " << endl; 15 cin >> n; 1 vector<double> v(n,0); 17 for(i=0; i<n; ++i) { 18 cout << "v[" << i << "]= "; 19 cin >> v[i]; 20 cout << endl; 21 } t1 = clock(); 2 max = maximum(v); 25 t2 = clock(); 2 cout << "Maximum: " << 27 ((double)(t2-t1)/clocks_per_sec) 28 << endl; t1 = clock(); 31 minsort(v); 32 t2 = clock(); 33 cout << "Minsort: " << 3 ((double)(t2-t1)/clocks_per_sec) 35 << endl; 3 } 90

3 Vergleich von Laufzeit n t max t minsort Vererbung I was ist Vererbung? I geerbte Felder und Methoden I Methoden redefinieren I Aufruf von Basismethoden I Linearer Aufwand liefert sehr gute Rechenzeit I Quadratischer Aufwand für große N spürbar I Fazit: Algorithmen sollen kleinen Aufwand haben Ziel der numerischen Mathematik nicht immer möglich Was ist Vererbung Was ist Vererbung 2 I im Alltag klassifizieren wir Objekte I wir teilen unsere Umgebung in Kategorien ein ein Auto ist ein Fortbewegungsmittel ein Hund ist ein Säugetier eine SPD-Matrix ist immer noch eine Matrix I alle Säugetiere können sich bewegen und atmen Hunde haben zusätzlich spezielle Eigenschaften... bellen, mit dem Schwanz wedeln... I Die Kategorien lassen sich weiter unterteilen Ferrari und Porsche beschreiben spezielle Autos I ganze Hierarchien entstehen Unterkategorien sind jeweils Erweiterungen Eigenschaften der Basiskategorie haben alle ) ist-ein-beziehung I C++ stellt Kategorien durch Klassen dar I spezielle werden von allgemeineren abgeleitet I diesen Vorgang nennt man Vererbung 93 9

4 Was ist Vererbung 3 Die Syntax der Vererbung I Vererbung in C++ bildet Wirklichkeit ab Spezialisierung durch zusätzliche Methoden allgemeine Methoden sind direkt verfügbar Fähigkeit bewegen muss bei Auto nicht separat implementiert werden I Syntax: ) das wurde von Fortbewegungsmittel geerbt class Car : public Fortbewegungsmittel I Ableitung erfolgt durch (:) I auto erbt alle Methoden und Felder von fortbewegungsmittel auto ist eine abgeleitete Klasse fortbewegungsmittel ist die Basisklasse I Alle Matrizen haben Einträge I reguläre Matrizen sind invertierbar I für SPD bietet sich zusätzlich Cholesky an Ein Beispiel - ctn d Ein Beispiel 2 #include <string.h> 3 using namespace std; 5 class Fortbewegungsmittel { 7 protected: 8 double speed; 9 public: 10 Fortbewegungsmittel(){}; 11 ~Fortbewegungsmittel(){}; 12 Fortbewegungsmittel(double s){speed = s;}; 13 double getspeed(){return speed;}; 1 void setspeed(double s){speed = s;}; 15 void move(); 1 }; class Car : public Fortbewegungsmittel 19 { 20 private: 21 string color; 22 public: 23 Car(){}; 2 void fahren(); 25 string getcolor(){return color;}; 2 void setcolor(string c){color = c;}; 27 }; 1 /* class definitions */ 2 3 void Fortbewegungsmittel::print() { 5 cout << "Geschwindigkeit: " << getspeed() << endl; 7 } 8 9 void Fortbewegungsmittel::move() 10 { 11 cout << "Ich habe mich bewegt" << endl; 12 } 13 1 void Car::fahren() 15 { 1 cout << "Ich bin gefahren" << endl; 17 } int main() 20 { 21 Fortbewegungsmittel fahrrad(10); 22 Car mycar; 23 mycar.setspeed(50); 2 mycar.setcolor("rot"); 25 fahrrad.move(); 2 mycar.fahren(); 27 mycar.move(); 28 } I Ausgabe:Ich habe mich bewegt Ich bin gefahren Ich habe mich bewegt 97 98

5 Das Schlüsselwort protected I Problem: private Daten sind bei abgeleiteten Klassen nicht verfürbar Deklaration als public nicht sinnvoll I Lösung: protected I Daten sind für alle abgeleiteten Klassen sichtbar für alle anderen jedoch wie private 1 class Basis 3 private: int privat; 5 protected: int protect; 7 public: 8 int publik; 9 }; class Abgelitten : public Basis 1 13 void zugriff() 1 { 15 a = privat; // Das gibt Ärger! 1 a = protect; // Das funktioniert. 17 a = publik; // Das funktioniert sowieso. 18 } 19 }; int main(){ 22 Basis myvar; 23 int a; 2 a = myvar.privat; // Das läuft nicht. 25 a = myvar.protect; // Das auch nicht. 2 a = myvar.publik; // Das funktioniert. 27 } 99 Konstruktoren der Basisklasse aufrufen I Vererbung bedeutet eine ist-ein-beziehung Jedes Auto ist ein Fortbewegungsmittel I Das merkt man am Aufruf Zuerst wird der Konstruktor der Basisklasse aufgerufen Danach der Konstruktor der abgeleiteten Klasse Bei Destruktoren anders herum I Entsprechend stellen Konstruktoren oft Erweiterungen dar z.b. zusätzliche Felder werden initialisiert I daher: Basisklassenkonstruktor aufrufen 1 Car::Car(double s, string c): 2 Fortbewegungsmittel(s), 3 color(c) { 5 cout << "car-konstruktor" << endl; } 100 Funktionen redefinieren 2/2 Funktionen redefinieren 1/2 I Funktionen können in der abgeleiteten Klasse komplett neu gestaltet (redefiniert) werden 1 void Fortbewegungsmittel::print() 3 cout << "Geschwindigkeit: " << getspeed() << endl; 5 } 7 void Car::print() 8 { 9 cout << "Geschwindigkeit: " << getspeed() 10 << ", Farbe: " << getcolor() << endl; I nicht verwechseln mit überladen mehrere Methoden mit unterschiedlicher Signatur I in jedem Fall wird immer die richtige Methode aufgerufen I Problem: Basismethoden werden verdeckt eine redefinierte Methode verdeckt alle Basismethoden 1 void Fortbewegungsmittel::print(); 2 void Fortbewegungsmittel::print(int s); 3 void Fortbewegungsmittel::print(int s, double c); 5 void Car::print(); 7 /* Implementierung */ 8 9 int main() 10 { 11 Car mycar; 12 mycar.print(); // OK 13 mycar.print(10); // funktioniert nicht 1 } I kein Zugriff mehr auf überladene Basisfunktionen I Lösung: Basisfunktion manuell aufrufen vollständigen Namen verwenden mycar.fortbewegungsmittel::print(10);

6 Ein Beispiel 2/3 Ein Beispiel 1/3 2 using namespace std; 3 class Punkt{ 5 protected: int x; 7 int y; 8 public: 9 Punkt(int x, int y); 10 int getx(){return x;}; 11 int gety(){return y;}; 12 void bewegen(int x, int y); //überladen 13 void bewegen(int x); 1 void bewegen(); 15 void print(); 1 void center(); 17 }; class Kreis : public Punkt{ 20 private: 21 int radius; 22 public: 23 Kreis(int x, int y, int radius); 2 int getrad(){return radius;}; 25 void bewegen(int r); //redefiniert 2 void print(); 27 }; I unterscheide zwischen überladen und redefinieren Punkt::Punkt(int x, int y){ 2 this->x = x; 3 this->y = y;} 5 void Punkt::bewegen(int x, int y){ this->x = this->x+x; 7 this->y = this->y+y;} 8 9 void Punkt::bewegen(int x){ 10 this->x = this->x+x;} void Punkt::bewegen(){ 13 this->x = this->x-3; 1 this->y = this->y-;} 15 1 void Punkt::print(){ 17 cout << "X: " << getx() << ", Y: " 18 << gety() << endl;} void Punkt::center(){ 21 x=0; y=0;} Kreis::Kreis(int x, int y, int radius): 2 Punkt(x,y) 25 { 2 this->radius = radius; 27 } void Kreis::bewegen(int r){ 30 x = x+radius+r;} void Kreis::print(){ 33 cout << "X: " << getx() << ", Y: " << 3 gety() << ", Radius: " << getrad() << endl;} 10 Ein Beispiel 3/3 1 int main() 3 Punkt P1(3,7); P1.print(); 5 P1.bewegen(13); P1.print(); 7 8 Kreis K1(3,7,12); 9 K1.print(); 10 K1.bewegen(3); 11 K1.print(); 12 K1.Punkt::bewegen(3,); 13 K1.print(); 1 K1.center(); 15 K1.print(); 1 } I Ausgabe:X: 3, Y: 7 X: 1, Y: 7 X: 3, Y: 7, Radius: 12 X: 18, Y: 7, Radius: 12 X: 21, Y: 11, Radius: 12 X: 0, Y: 0, Radius: 12 I in UML: Vererbung mit Matrizen 1/3 2 #include <string> 3 #include <vector> #include <assert.h> 5 using namespace std; 7 class Matrix{ 8 protected: 9 int m,n; //dimensions 10 vector<vector<double> > entries; 11 public: 12 int getm(){return m;}; 13 int getn(){return n;}; 1 double getentry(int i, int j); 15 void setentry(int i, int j, double entry); 1 void plot(); 17 Matrix(); 18 Matrix(int m, int n, int init); 19 }; class SquareMatrix : public Matrix{ 22 // stores square matrices 23 public: 2 SquareMatrix computelu(); 25 double computedet(); 2 SquareMatrix(int n, int init); 27 };

7 Vererbung mit Matrizen 2/3 1 /* class definitions*/ 2 /* get & set implementation*/ 3 void Matrix::plot(){ 5 for(int i = 0; i < getm(); i++){ for(int j = 0; j < getn(); j++){ 7 cout << "Eintrag " << i << ", " << j 8 << ": " << getentry(i,j) << endl; 9 } 10 } Matrix::Matrix(): 1 m(1), n(1), 15 entries(vector<vector<double> >(m, vector<double>(n, 0))){} 1 17 Matrix::Matrix(int m, int n, int init): 18 m(m), n(n), 19 entries(vector<vector<double> >(m, vector<double>(n, init))){} SquareMatrix SquareMatrix::computeLU(){ 22 // Implementation LU decomposition 23 } 2 25 double SquareMatrix::computeDet(){ 2 // Implementation determinant 27 } SquareMatrix::SquareMatrix(int n, int init): 30 Matrix(n, n, init){} Vererbung mit Matrizen 3/3 1 int main() 3 Matrix mat1(3,,2); mat1.plot(); 5 SquareMatrix mat2(2,1); mat2.plot(); 7 } I Ausgabe:Eintrag 0, 0: 2 Eintrag 0, 1: 2 Eintrag 0, 2: 2 Eintrag 0, 3: 2 Eintrag 1, 0: 2 Eintrag 1, 1: 2 Eintrag 1, 2: 2 Eintrag 1, 3: 2 Eintrag 2, 0: 2 Eintrag 2, 1: 2 Eintrag 2, 2: 2 Eintrag 2, 3: 2 Eintrag 0, 0: 1 Eintrag 0, 1: 1 Eintrag 1, 0: 1 Eintrag 1, 1: Übersicht - Vererbung I Vererbung macht den Code leichter zu warten I Verebung erhöht die Wiederverwendbarkeit massiv I genaue Implementierung der Basisklasse unwichtig I abgeleitete Klasse erbt alle Methoden und Felder sofern der Zugriff dies erlaubt I neue Implementierung für geerbte Methoden möglich Methoden redefinieren I Achtung: verdeckt alle gleichnamigen Basismethoden (dies kann natürlich gewollt sein) Zugriff über vollen Funktionsnamen I Fazit: verwende Vererbung immer wenn (sinnvoll) möglich verwende Code wieder wenn möglich senkt die Fehlerquote erleichtert spätere Änderungen One more thing I es muss nicht immer public vererbt werden Basisklasse abgeleitete Klasse public protected private public public protected private protected protected protected private private hidden hidden hidden I Sichtbarkeit ändert sich durch Art der Vererbung Zugriff kann nur verschärft werden andere außer public machen selten Sinn

I Operatoren selbst können überladen werden. I Methode add funktioniert auch. I Überladen sollte nur dafür verwendet werden

I Operatoren selbst können überladen werden. I Methode add funktioniert auch. I Überladen sollte nur dafür verwendet werden Überladen von Operatoren 4 class Complex 5 { 6 private: 7 double vreal; 8 double vimag; 9 public: 10 Complex(double r, double i); 11 double getreal(){return vreal;}; 12 double getimag(){return vimag;};

Mehr

I nicht verwechseln mit überladen

I nicht verwechseln mit überladen Konstruktoren der Basisklasse aufrufen Funktionen redefinieren 1/2 I Vererbung bedeutet eine ist-ein-beziehung Jedes Auto ist ein Fortbewegungsmittel I Das merkt man am Aufruf Zuerst wird der Konstruktor

Mehr

3 4 void swap(int *px, int*py)

3 4 void swap(int *px, int*py) Was ist eine Referenz Referenzen sind Aliasnamen Erzeugung mittels (&) nicht verwechseln mit Adressoperator ähnlich zu (*) int &someref = someint; Referenzen Beispielcode Unterschied Referenz Pointer

Mehr

Vererbung. Was ist Vererbung 1/2. Die Syntax der Vererbung. Was ist Vererbung 2/2. class Auto : public FortbewegungsMittel

Vererbung. Was ist Vererbung 1/2. Die Syntax der Vererbung. Was ist Vererbung 2/2. class Auto : public FortbewegungsMittel Was ist Vererbung 1/ Im Alltag klassifizieren wir Objekte Vererbung Wir teilen unsere Umgebung in Kategorien ein Ein Auto ist ein Fortbewegungsmittel Ein Hund ist ein Säugetier Eine quadratische Matrix

Mehr

Zählschleife. Schleifen. Die for-schleife. Vektor einlesen & ausgeben. Schleifen führen einen oder mehrere Befehle wiederholt aus

Zählschleife. Schleifen. Die for-schleife. Vektor einlesen & ausgeben. Schleifen führen einen oder mehrere Befehle wiederholt aus Schleifen Zählschleife for Mathematische Symbole n und n Zählschleife for Schleifen führen einen oder mehrere Befehle wiederholt aus In Aufgabenstellung häufig Hinweise, wie Vektoren & Matrizen Laufvariablen

Mehr

I Jede Klasse definiert einen Datentyp. I restliche Implementierung: 1 Sortierverfahren::Sortierverfahren(int n)

I Jede Klasse definiert einen Datentyp. I restliche Implementierung: 1 Sortierverfahren::Sortierverfahren(int n) Vererbung 2 I Polymorphie I virtuelle Methoden I abstrakte Klassen I Mehrfachvererbung Polymorphie I jedes Objekt der abgeleiteten Klasse ist auch ein Objekt der Basisklasse Vererbung impliziert immer

Mehr

Arrays (=Felder) Vektoren, Matrizen. Operator [...] Matrix-Vektor-Multiplikation. Lineare Gleichungssysteme

Arrays (=Felder) Vektoren, Matrizen. Operator [...] Matrix-Vektor-Multiplikation. Lineare Gleichungssysteme Arrays (=Felder) Vektoren, Matrizen Operator [...] Matrix-Vektor-Multiplikation Lineare Gleichungssysteme 58 Vektoren Deklaration eines Vektors x = (x 0,..., x N 1 ) R N : double x[n]; x ist double-vektor

Mehr

Zählschleife. Schleifen. Die for-schleife. Vektor einlesen & ausgeben. Schleifen führen einen oder mehrere Befehle wiederholt aus

Zählschleife. Schleifen. Die for-schleife. Vektor einlesen & ausgeben. Schleifen führen einen oder mehrere Befehle wiederholt aus Schleifen Zählschleife for Mathematische Symbole n und n Zählschleife for Schleifen führen einen oder mehrere Befehle wiederholt aus In Aufgabenstellung häufig Hinweise, wie Vektoren & Matrizen Laufvariablen

Mehr

OOP und Angewandte Mathematik. Eine Einführung in die Anwendung objektorientierter Konzepte in der angewandten Mathematik

OOP und Angewandte Mathematik. Eine Einführung in die Anwendung objektorientierter Konzepte in der angewandten Mathematik Eine Einführung in die Anwendung objektorientierter Konzepte in der angewandten Mathematik WS 2011/12 Inhalt Test-Besprechung! Ziele verdeutlichen Große Bild von OOP Wiederholung: Einbettung als Technik

Mehr

Arrays (=Felder) Vektoren, Matrizen. Operator [...] Matrix-Vektor-Multiplikation. Lineare Gleichungssysteme

Arrays (=Felder) Vektoren, Matrizen. Operator [...] Matrix-Vektor-Multiplikation. Lineare Gleichungssysteme Arrays (=Felder) Vektoren, Matrizen Operator [...] Matrix-Vektor-Multiplikation Lineare Gleichungssysteme 58 Vektoren Deklaration eines Vektors x = (x 0,..., x N 1 ) R N : double x[n]; x ist double-vektor

Mehr

Header-Files. Funktionsaufrufe. Datei-Konventionen. Funktionsaufrufe sind strukturell langsam Interner Overhead aufgrund des Stacks

Header-Files. Funktionsaufrufe. Datei-Konventionen. Funktionsaufrufe sind strukturell langsam Interner Overhead aufgrund des Stacks Header-Files Funktionsaufrufe Warum Header-Files? inline #ifndef... #endif Funktionsaufrufe Funktionsaufrufe sind strukturell langsam Interner Overhead aufgrund des Stacks Zugriff auf Members einer Struktur

Mehr

Schriftlicher Test (120 Minuten) VU Einführung ins Programmieren für TM. 23. Januar 2017

Schriftlicher Test (120 Minuten) VU Einführung ins Programmieren für TM. 23. Januar 2017 Familienname: Vorname: Matrikelnummer: Aufgabe 1 (3 Punkte): Aufgabe 2 (1 Punkt): Aufgabe 3 (2 Punkte): Aufgabe 4 (4 Punkte): Aufgabe 5 (2 Punkte): Aufgabe 6 (2 Punkte): Aufgabe 7 (4 Punkte): Aufgabe 8

Mehr

Schlüsselwort virtual

Schlüsselwort virtual Polymorphie Schlüsselwort virtual Polymorphie Virtuelle Methoden virtual Jedes Objekt der abgeleiteten Klasse ist auch ein Objekt der Basisklasse Vererbung impliziert immer ist-ein-beziehung Jede Klasse

Mehr

Funktionspointer. Funktionspointer. Bisektionsverfahren Elementares Beispiel

Funktionspointer. Funktionspointer. Bisektionsverfahren Elementares Beispiel Funktionspointer Funktionspointer Deklaration Bisektionsverfahren Funktionsaufruf ist Sprung an eine Adresse Pointer speichern Adressen kann daher Fkt-Aufruf mit Pointer realisieren Deklaration eines Funktionspointers:

Mehr

Thema heute: Vererbung und Klassenhierarchien. Abgeleitete Klassen. Vererbung von Daten und Funktionen. Virtuelle Funktionen

Thema heute: Vererbung und Klassenhierarchien. Abgeleitete Klassen. Vererbung von Daten und Funktionen. Virtuelle Funktionen 1 Thema heute: Vererbung und Klassenhierarchien Abgeleitete Klassen Vererbung von Daten und Funktionen Virtuelle Funktionen 2 Vererbung oft besitzen verschiedene Datentypen einen gemeinsamen Kern Beispiel:

Mehr

Mapra: C++ Teil 6. Felix Gruber, Sven Groß. IGPM, RWTH Aachen. 13. Juni 2017

Mapra: C++ Teil 6. Felix Gruber, Sven Groß. IGPM, RWTH Aachen. 13. Juni 2017 Mapra: C++ Teil 6 Felix Gruber, Sven Groß IGPM, RWTH Aachen 13. Juni 2017 Felix Gruber, Sven Groß (IGPM, RWTH Aachen) Mapra: C++ Teil 6 13. Juni 2017 1 / 22 Was bisher geschah Klassen I Attribute und Methoden

Mehr

Übersicht. Bisherige Verwendung von Klassen Vererbung. Zeiger auf Objekte (abgeleiteter) Klassen Virtuelle Funktionen Konstruktoren/Destruktoren

Übersicht. Bisherige Verwendung von Klassen Vererbung. Zeiger auf Objekte (abgeleiteter) Klassen Virtuelle Funktionen Konstruktoren/Destruktoren C++ - Vererbung Übersicht Bisherige Verwendung von Klassen Vererbung Grundlagen Zugriffschutz Vererbte Funktionen Zeiger auf Objekte (abgeleiteter) Klassen Virtuelle Funktionen Konstruktoren/Destruktoren

Mehr

Abend 4 Übung : Erweitern von Klassen durch Vererbung

Abend 4 Übung : Erweitern von Klassen durch Vererbung Abend 4 Übung : Erweitern von Klassen durch Vererbung Ziel, Inhalt Wir erweitern die Klassen, die wir zum Zeichnen mit TsuZeichnen verwenden. Dabei wenden wir die Vererbung an um die Klassen zu spezialisieren

Mehr

Vererbung. Definition Felder Konstruktor Methoden Beispiel. Dr. Beatrice Amrhein

Vererbung. Definition Felder Konstruktor Methoden Beispiel. Dr. Beatrice Amrhein Vererbung Definition Felder Konstruktor Methoden Beispiel Dr. Beatrice Amrhein Definition 2 Definition: Vererbung Die Vererbung dient dazu, mit Hilfe von existierenden Klassen neue Klassen zu implementieren.

Mehr

Programmieren II Abstrakte Klassen / Virtuelle Methoden. Programmieren II Abstrakte Klassen / Virtuelle Methoden

Programmieren II Abstrakte Klassen / Virtuelle Methoden. Programmieren II Abstrakte Klassen / Virtuelle Methoden Einleitende Bemerkungen Einleitende Bemerkungen Aspekte Aufbau von sinnvollen Klassenhierarchien Verwaltung von Objekten unterschiedlichen Typs Mitarbeiter Besonderheiten der Anwendung jeder Angehörige

Mehr

Prinzipien der objektorientierten Programmierung (OOP)

Prinzipien der objektorientierten Programmierung (OOP) Die Ziele der OOP sind: - bessere Warbarkeit - Wiederverwendbarkeit 1.) Datenkapselung Prinzipien der objektorientierten Programmierung (OOP) Komplexe Datenstrukturen (wie zb ein Stack) werden vom Anwendungsprogramm

Mehr

7. Übung Informatik II - Objektorientierte Programmierung

7. Übung Informatik II - Objektorientierte Programmierung 7. Übung Informatik II - Objektorientierte Programmierung 29. Mai 2015 Inhalt 1 2 3 Übersicht 1 2 3 Idee Menschen nehmen die Welt in Form von Objekten wahr manche Objekte haben gleiche Eigenschaften, hierüber

Mehr

Vererbung I. Kfz Eigenschaften und Methoden der Klasse Kfz Lkw. Pkw. Eigenschaften und Methoden der Klasse Kfz

Vererbung I. Kfz Eigenschaften und Methoden der Klasse Kfz Lkw. Pkw. Eigenschaften und Methoden der Klasse Kfz Einführung in C++ Vererbung I Durch Vererbung können aus bereits bestehenden Klassen neue Klassen konstruiert werden. Die neue abgeleitete Klasse erbt dabei die Daten und Methoden der sog. Basisklasse.

Mehr

Polymorphismus 179. Function.h. #include <string>

Polymorphismus 179. Function.h. #include <string> Polymorphismus 179 #include Function.h class Function { public: virtual ~Function() {}; virtual std::string get_name() const = 0; virtual double execute(double x) const = 0; }; // class Function

Mehr

Thema heute: Vererbung und Klassenhierarchien. Abgeleitete Klassen. Vererbung von Daten und Funktionen. Virtuelle Funktionen

Thema heute: Vererbung und Klassenhierarchien. Abgeleitete Klassen. Vererbung von Daten und Funktionen. Virtuelle Funktionen 1 Thema heute: Vererbung und Klassenhierarchien Abgeleitete Klassen Vererbung von Daten und Funktionen Virtuelle Funktionen 2 Vererbung oft besitzen verschiedene Datentypen einen gemeinsamen Kern Beispiel:

Mehr

1 typedef struct _Vector3_ { 2 double x; 3 double y; 4 double z; 5 } Vector3;

1 typedef struct _Vector3_ { 2 double x; 3 double y; 4 double z; 5 } Vector3; Strukturen für Punkte im R 3 Struktur zur Speicherung von v = (x,y,z) R 3 Strukturen II Strukturen für mathematische Objekte: Punkte im R 3 allgemeine Vektoren Matrizen 1 // Declaration of structure struct

Mehr

Objektorientierte Programmierung mit C++ SS 2007

Objektorientierte Programmierung mit C++ SS 2007 Objektorientierte Programmierung mit C++ SS 2007 Andreas F. Borchert Universität Ulm 5. Juni 2007 Polymorphismus #include Function.h class Function { public: virtual ~Function() {}; virtual std::string

Mehr

Vererbung und Polymorphie

Vererbung und Polymorphie page1 Vererbung und Polymorphie Florian Adamsky, B Sc florianadamsky@iemthmde http://florianadamskyit/ cbd So wareentwicklung im SS 2014 page2 Outline 1 Ein ührung 2 Vererbung Formen der Vererbung 3 Polymorphie

Mehr

DAP2-Programmierpraktikum Einführung in C++ (Teil 2)

DAP2-Programmierpraktikum Einführung in C++ (Teil 2) DAP2-Programmierpraktikum Einführung in C++ (Teil 2) Carsten Gutwenger 18. April 2008 Lehrstuhl 11 Algorithm Engineering Fakultät für Informatik, TU Dortmund Überblick Dynamischer Speicher Klassen und

Mehr

Vererbung und Polymorphie

Vererbung und Polymorphie Vererbung und Polymorphie Marc Satkowski, Sascha Peukert 29. September 2016 C# Kurs Gliederung 1. Methodenüberladung 2. Vererbung Polymorphie Methoden- & Eigenschaftsüberschreibung Weitere Schlüsselwörter

Mehr

Lösungsskizzen zum Buch Mathematik für Informatiker Kapitel 8 Peter Hartmann

Lösungsskizzen zum Buch Mathematik für Informatiker Kapitel 8 Peter Hartmann 1. Bestimmen Sie jeweils den Rang der folgenden Matrizen: 1 2 5 4 1 2 2 1 1 2 2 1 1 4 1 5 1 2 0 4 4 5 5 7,,,. 1 4 2 4 8 7 2 11 5 8 1 6 1 2 7 6 1 2 1 9 10 1 2 2 5 8 Die Ränge der Matrizen sind der Reihe

Mehr

Auswahlen (Selektionen)

Auswahlen (Selektionen) 1 Anhang 10.3 Ein/Ausgaben Eingabe mit Prompt (Beispiel) cout ; // Prompt ohne endl cin

Mehr

Einführung in das Programmieren für Technische Mathematiker

Einführung in das Programmieren für Technische Mathematiker Einführung in das Programmieren für Technische Mathematiker Einführung in C++ Marcus Page, MSc. Prof. Dr. Dirk Praetorius Fr. 10:15-11:45, Freihaus HS 8 Institut für Analysis und Scientific Computing C++

Mehr

11 Vererbung und Klassenhierarchie

11 Vererbung und Klassenhierarchie 11 Vererbung und Klassenhierarchie Bestandteile objektorientierter Programmierung: Bestehende Klassen können durch Spezialisierung und Erweiterung weiterentwickelt werden, ohne den Programmcode der alten

Mehr

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

Prof. Dr. Markus Gross Informatik I für D-ITET (WS 03/04) 12. Vererbung Prof. Dr. Markus Gross Informatik I für D-ITET (WS 03/04)!Vererbung Konzept!Protected Section!Virtuelle Mitgliedsfunktionen!Verwendung von Vererbung Copyright: M. Gross, ETHZ, 2003 2 Vererbung!

Mehr

Polymorphismus 44. Function.hpp. #include <string>

Polymorphismus 44. Function.hpp. #include <string> Polymorphismus 44 #include Function.hpp class Function { public: virtual ~Function() {}; virtual const std::string& get_name() const = 0; virtual double execute(double x) const = 0; }; // class

Mehr

Schriftlicher Test zu C++ (90 Minuten) VU Einführung ins Programmieren für TM. 22. Juni 2012

Schriftlicher Test zu C++ (90 Minuten) VU Einführung ins Programmieren für TM. 22. Juni 2012 Familienname: Vorname: Matrikelnummer: Aufgabe 1 (4 Punkte): Aufgabe 2 (1 Punkte): Aufgabe 3 (1 Punkte): Aufgabe 4 (3 Punkte): Aufgabe 5 (4 Punkte): Aufgabe 6 (5 Punkte): Aufgabe 7 (2 Punkte): Aufgabe

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 41 Einstieg in die Informatik mit Java Vererbung Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 41 1 Überblick: Vererbung 2 Grundidee Vererbung 3 Verdeckte Variablen

Mehr

Implementieren von Klassen

Implementieren von Klassen Implementieren von Klassen Felder, Methoden, Konstanten Dr. Beatrice Amrhein Überblick Felder/Mitglieder (Field, Member, Member-Variable) o Modifizierer Konstanten Methoden o Modifizierer 2 Felder und

Mehr

01. Grundprinzipien der Vererbung

01. Grundprinzipien der Vererbung 01. Grundprinzipien der Vererbung 1.1 Grundidee der Vererbung Bei der Analyse eines Problems (z.b. Baukasten) stellt man beispielsweise fest, dass 67 % an Daten/Funktionen immer vorkommen 25 % an Daten/Funktionen

Mehr

C/C++ - Programmierung. Vererbung Seite 1 von 6. Eine einfache Klasse für eine Personenbeschreibung hat die folgende UML: CPerson.

C/C++ - Programmierung. Vererbung Seite 1 von 6. Eine einfache Klasse für eine Personenbeschreibung hat die folgende UML: CPerson. Vererbung Seite 1 von 6 Eine einfache Klasse für eine Personenbeschreibung hat die folgende UML: CPerson char Nachname[30] char Vorname[30] CPerson() void setnachname() void setvorname() void getname()

Mehr

Kapitel 9. Programmierkurs. Attribute von Klassen, Methoden und Variablen. 9.1 Attribute von Klassen, Methoden und Variablen

Kapitel 9. Programmierkurs. Attribute von Klassen, Methoden und Variablen. 9.1 Attribute von Klassen, Methoden und Variablen Kapitel 9 Programmierkurs Birgit Engels Anna Schulze Zentrum für Angewandte Informatik Köln Objektorientierte Programmierung Attribute von Klassen, Methoden und Variablen Interfaces WS 07/08 1/ 18 2/ 18

Mehr

Rückblick: Benutzerdefinierte Datentypen Definition der Klasse Vektor als Container für 2-dimensionale Vektoren

Rückblick: Benutzerdefinierte Datentypen Definition der Klasse Vektor als Container für 2-dimensionale Vektoren Rückblick: Benutzerdefinierte Datentypen Definition der Klasse Vektor als Container für 2-dimensionale Vektoren class Vektor public: double k1, k2; // Deklaration der Klasse Vektor // Elementvariablen

Mehr

Grundkurs C++ IDE Klassenhierarchien

Grundkurs C++ IDE Klassenhierarchien Grundkurs C++ IDE Klassenhierarchien Martin Knopp 03.05.2017 Folie 1/34 GK C++: IDE, Klassenhierarchien Martin Knopp 03.05.2017 IDE Integrated Development Environment Wir empfehlen: Qt Creator (Bestandteil

Mehr

HSR Rapperswil 2001 Markus Rigling. Programmieren: Vererbung. 1 Variante 2

HSR Rapperswil 2001 Markus Rigling. Programmieren: Vererbung. 1 Variante 2 HSR Rapperswil 2001 Markus Rigling Programmieren: Vererbung 1 Variante 2 Inhaltsverzeichnis: 1. Was ist Vererbung...3 2. Anwendung...3 3. Realisierung...3 4. Vorgehensweise zur Erstellung einer Kind-Klasse...3

Mehr

Grundkurs C++ IDE Klassenhierarchien

Grundkurs C++ IDE Klassenhierarchien Grundkurs C++ IDE Klassenhierarchien Martin Knopp & Johannes Feldmaier 20.04.2016 Folie 1/35 GK C++: IDE, Klassenhierarchien Martin Knopp & Johannes Feldmaier 20.04.2016 IDE Integrated Development Environment

Mehr

C++ Notnagel. Ziel, Inhalt. Programmieren in C++

C++ Notnagel. Ziel, Inhalt. Programmieren in C++ C++ Notnagel Ziel, Inhalt Ich versuche in diesem Dokument noch einmal die Dinge zu erwähnen, die mir als absolut notwendig für den C++ Unterricht und die Prüfungen erscheinen. C++ Notnagel 1 Ziel, Inhalt

Mehr

Grundkurs C++ IDE Klassenhierarchien

Grundkurs C++ IDE Klassenhierarchien Grundkurs C++ IDE Klassenhierarchien Martin Gottwald und Stefan Röhrl 8 Mai 2019 Folie 1/34 GK C++: IDE, Klassenhierarchien Martin Gottwald und Stefan Röhrl 8 Mai 2019 IDE - Integrated Development Environment

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 35 Einstieg in die Informatik mit Java Vererbung Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 35 1 Grundlagen 2 Verdeckte Variablen 3 Verdeckte Methoden 4 Konstruktoren

Mehr

Einführung in C++ Vererbung und Polymorphismus

Einführung in C++ Vererbung und Polymorphismus Einführung in C++ Vererbung und Polymorphismus Ablauf Grundlegende Eigenschaften der Vererbung in C++ Redefinition und Namensauflösung Eine einfache Klassenhierarchie in Java und C++ Redefinition von virtuellen

Mehr

Angewandte Mathematik in OOP WS 2011/12. Abschluss-Test

Angewandte Mathematik in OOP WS 2011/12. Abschluss-Test Angewandte Mathematik in OOP WS 2011/12 Abschluss-Test 012 6 5 4 5 6 Aufgabe 1 (9 Punkte 1 Punkt je Antwort) Bitte jeweils eine Antwort ankreuzen (je nach Fragestellung die richtige oder falsche): a.)

Mehr

C++ - Objektorientierte Programmierung Vererbung

C++ - Objektorientierte Programmierung Vererbung C++ - Objektorientierte Programmierung Vererbung Personen Kunden Mitarbeiter Verwaltung Verkäufer Leibniz Universität IT Services Anja Aue Vererbung Definition von Klassen auf Basis von bestehenden Klassen.

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 34 Einstieg in die Informatik mit Java Klassen mit Instanzmethoden Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 34 1 Definition von Klassen 2 Methoden 3 Methoden

Mehr

Übung zur Vorlesung Wissenschaftliches Rechnen Sommersemester 2012 Auffrischung zur Programmierung in C++, 2. Teil

Übung zur Vorlesung Wissenschaftliches Rechnen Sommersemester 2012 Auffrischung zur Programmierung in C++, 2. Teil MÜNSTER Übung zur Vorlesung Wissenschaftliches Rechnen Sommersemester 2012 Auffrischung zur Programmierung in C++ 2. Teil 18. April 2012 Organisatorisches MÜNSTER Übung zur Vorlesung Wissenschaftliches

Mehr

Schriftlicher Test (120 Minuten) VU Einführung ins Programmieren für TM. 24. Juni 2016

Schriftlicher Test (120 Minuten) VU Einführung ins Programmieren für TM. 24. Juni 2016 Familienname: Vorname: Matrikelnummer: Aufgabe 1 (3 Punkte): Aufgabe 2 (4 Punkte): Aufgabe 3 (2 Punkte): Aufgabe 4 (1 Punkt): Aufgabe 5 (3 Punkte): Aufgabe 6 (1 Punkt): Aufgabe 7 (1 Punkt): Aufgabe 8 (2

Mehr

Vererbung, Polymorphie

Vererbung, Polymorphie Vererbung, Polymorphie Gerd Bohlender Institut für Angewandte und Numerische Mathematik Vorlesung: Einstieg in die Informatik mit Java 21.1.08 G. Bohlender (IANM UNI Karlsruhe) Vererbung, Polymorphie 21.1.08

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 25 Einstieg in die Informatik mit Java Objektorientierte Programmierung und Klassen Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 25 1 Die Philosophie 2 Definition

Mehr

C++ Teil 5. Sven Groß. 12. Nov IGPM, RWTH Aachen. Sven Groß (IGPM, RWTH Aachen) C++ Teil Nov / 16

C++ Teil 5. Sven Groß. 12. Nov IGPM, RWTH Aachen. Sven Groß (IGPM, RWTH Aachen) C++ Teil Nov / 16 C++ Teil 5 Sven Groß IGPM, RWTH Aachen 12. Nov 2014 Sven Groß (IGPM, RWTH Aachen) C++ Teil 5 12. Nov 2014 1 / 16 Themen der letzten Vorlesung Eingabestrom, Verhalten von cin Namensräume Live Programming

Mehr

Vorlesung Datenstrukturen

Vorlesung Datenstrukturen Vorlesung Datenstrukturen Objektorientierung in C++ (3) Aspekte der Vererbung (1) Dr. Frank Seifert Vorlesung Datenstrukturen - Sommersemester 2016 Folie 546 Zuweisung bei Vererbung Dr. Frank Seifert Vorlesung

Mehr

Schriftlicher Test zu C (90 Minuten) VU Einführung ins Programmieren für TM. 1. Oktober 2012

Schriftlicher Test zu C (90 Minuten) VU Einführung ins Programmieren für TM. 1. Oktober 2012 Familienname: Vorname: Matrikelnummer: Aufgabe 1 (2 Punkte): Aufgabe 2 (3 Punkte): Aufgabe 3 (2 Punkte): Aufgabe 4 (3 Punkte): Aufgabe 5 (2 Punkte): Aufgabe 6 (1 Punkte): Aufgabe 7 (2 Punkte): Aufgabe

Mehr

Objektorientiertes Programmieren mit C++ für Fortgeschrittene

Objektorientiertes Programmieren mit C++ für Fortgeschrittene BEREICH DATENTECHNIK I CQ 300 00 TH 02 Objektorientiertes Programmieren mit C++ für Fortgeschrittene Kapitel 3 3. Mehrfachvererbung 3.1. Eigenschaften und Problematik 3.2. Virtuelle Basisklassen BEREICH

Mehr

Programmierung und Angewandte Mathematik

Programmierung und Angewandte Mathematik Programmierung und Angewandte Mathematik C++ /Scilab Programmierung und Einführung in das Konzept der objektorientierten Anwendungen zu wissenschaftlichen Rechnens SS 2012 Ziele Sie wissen, was Vererbung

Mehr

C++ Teil 8. Sven Groß. 5. Dez IGPM, RWTH Aachen. Sven Groß (IGPM, RWTH Aachen) C++ Teil 8 5. Dez / 16

C++ Teil 8. Sven Groß. 5. Dez IGPM, RWTH Aachen. Sven Groß (IGPM, RWTH Aachen) C++ Teil 8 5. Dez / 16 C++ Teil 8 Sven Groß IGPM, RWTH Aachen 5. Dez 2014 Sven Groß (IGPM, RWTH Aachen) C++ Teil 8 5. Dez 2014 1 / 16 Themen der letzten Vorlesung Casts bei Zeigern dynamische Speicherverwaltung Vektoren Typedefs

Mehr

Beispiel 1/3. Abstrakte Datentypen. Beispiel 3/3. Beispiel 2/3. Abstrakte Klasse SortierVerfahren

Beispiel 1/3. Abstrakte Datentypen. Beispiel 3/3. Beispiel 2/3. Abstrakte Klasse SortierVerfahren Beispiel 1/ Abstrakte Klasse SortierVerfahren Abstrakte Datentypen Die Methode sort von Sortierverfahren ist sinnlos bietet keinerlei Sortierung Objekte können in Wahrheit nicht sortieren Überhaupt sind

Mehr

Mikrorechentechnik II. Klassen in C++

Mikrorechentechnik II. Klassen in C++ Mikrorechentechnik II Klassen in C++ class class cfilter { float K; float T; float Ta; public: // Filterverstärkung // Filterzeitkonstante // Tastzeit Zugriffskontrolle: public, protected, private void

Mehr

Vererbung. Gerd Bohlender. Institut für Angewandte und Numerische Mathematik. Vorlesung: Einstieg in die Informatik mit Java 23.5.

Vererbung. Gerd Bohlender. Institut für Angewandte und Numerische Mathematik. Vorlesung: Einstieg in die Informatik mit Java 23.5. Vererbung Gerd Bohlender Institut für Angewandte und Numerische Mathematik Vorlesung: Einstieg in die Informatik mit Java 23.5.07 G. Bohlender (IANM UNI Karlsruhe) Vererbung 23.5.07 1 / 22 Übersicht 1

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 Operatoren Operatoren führen Aktionen mit Operanden aus. Der

Mehr

Grundzüge der Programmierung. Wiederverwendung VERERBUNG

Grundzüge der Programmierung. Wiederverwendung VERERBUNG Grundzüge der Programmierung Wiederverwendung VERERBUNG Inhalt dieser Einheit Syntax: Vererbung in Java Superklassen - Subklassen Konstruktorenaufruf in Subklassen super, abstract und final 2 Code-Reuse

Mehr

Einführung in C# Teil 3. Matthias Nübling

Einführung in C# Teil 3. Matthias Nübling Einführung in C# Teil 3 Matthias Nübling Vorausgesetzte Grundkenntnisse Programmierung Typen, Variablen, Anweisungen, Funktionen, etc. Objektorientierte Programmierung Klassen, Vererbung, Polymorphismus,

Mehr

Vorausgesetzte Grundkenntnisse. Inhalt. Klassenhierarchie und Vererbung. Vererbung. Klassenhierarchie und Vererbung. Einführung in C# Teil 3

Vorausgesetzte Grundkenntnisse. Inhalt. Klassenhierarchie und Vererbung. Vererbung. Klassenhierarchie und Vererbung. Einführung in C# Teil 3 Vorausgesetzte Grundkenntnisse Einführung in C# Teil 3 Matthias Nübling Programmierung Typen, Variablen, Anweisungen, Funktionen, etc. Objektorientierte Programmierung Klassen, Vererbung, Polymorphismus,

Mehr

Java Vererbung. Inhalt

Java Vererbung. Inhalt Java Vererbung Inhalt 1 Zielsetzung... 2 1.1 Bewertung... 2 2 Grundlagen der Vererbung... 2 2.1 Super und Subklassen... 2 3 Überladen von Methoden... 4 3.1 Unterschiedliche Parameter... 4 3.2 Gleiche Parameter

Mehr

Vererbung. Florian Adamsky, B. Sc. (PhD cand.) Softwareentwicklung im WS 2014/15.

Vererbung. Florian Adamsky, B. Sc. (PhD cand.) Softwareentwicklung im WS 2014/15. 1/23 Florian Adamsky, B. Sc. (PhD cand.) florian.adamsky@iem.thm.de http://florian.adamsky.it/ cbd Softwareentwicklung im WS 2014/15 2/23 Outline 1 2 Formen der C++ Syntax 3/23 Inhaltsverzeichnis 1 2 Formen

Mehr

C++ Teil 12. Sven Groß. 18. Jan Sven Groß (IGPM, RWTH Aachen) C++ Teil Jan / 11

C++ Teil 12. Sven Groß. 18. Jan Sven Groß (IGPM, RWTH Aachen) C++ Teil Jan / 11 C++ Teil 12 Sven Groß 18. Jan 2016 Sven Groß (IGPM, RWTH Aachen) C++ Teil 12 18. Jan 2016 1 / 11 Themen der letzten Vorlesung Wiederholung aller bisherigen Themen: Datentypen und Variablen Operatoren Kontrollstrukturen

Mehr

Beispiele für Ausdrücke. Der imperative Kern. Der imperative Kern. Imperativer Kern - Kontrollstrukturen. Deklarationen mit Initialisierung

Beispiele für Ausdrücke. Der imperative Kern. Der imperative Kern. Imperativer Kern - Kontrollstrukturen. Deklarationen mit Initialisierung Beispiele für Ausdrücke Der imperative Kern Deklarationen mit Initialisierung Variablendeklarationen int i = 10; int j = 15; Beispiele für Ausdrücke i+j i++ i & j i j [] [static]

Mehr

3 Dateien 5. 4 Aufgaben 5. 5 Ausblick 6. Wir wenden uns der Implementierung von Datenstrukturen mittels objekt-orientierter Programmierung

3 Dateien 5. 4 Aufgaben 5. 5 Ausblick 6. Wir wenden uns der Implementierung von Datenstrukturen mittels objekt-orientierter Programmierung Contents 1 Ziele dieser Uebung 1 2 Eine Matrix-Klasse 1 3 Dateien 4 Aufgaben Ausblick 6 1 Ziele dieser Uebung 1.1 Einleitung Wir wenden uns der Implementierung von Datenstrukturen mittels objekt-orientierter

Mehr

Java I Vorlesung Vererbung und Sichtbarkeit

Java I Vorlesung Vererbung und Sichtbarkeit Java I Vorlesung 4 Vererbung und Sichtbarkeit 17.5.2004 Vererbung Überladen, Überschreiben, Verstecken, Verschatten Zugriffskontrolle Statische Members Wiederholung: OOP Programme bestehen aus Klassen.

Mehr

Objektorientierte Programmierung und Klassen

Objektorientierte Programmierung und Klassen Objektorientierte Programmierung und Klassen Gerd Bohlender Institut für Angewandte und Numerische Mathematik Vorlesung: Einstieg in die Informatik mit Java 16.5.07 G. Bohlender (IANM UNI Karlsruhe) OOP

Mehr

Grundlagen der Informatik Vererbung von Klassen

Grundlagen der Informatik Vererbung von Klassen Grundlagen der Informatik Vererbung von Klassen Prof. Dr.-Ing. Thomas Wiedemann Prof. Dr.rer.nat. Ralph Großmann Fachgebiet Informatik / Mathematik Überblick zum Inhalt Klassen-2 Klassenhierarchie / Definition

Mehr

Objektorientierung. Marc Satkowski 20. November C# Kurs

Objektorientierung. Marc Satkowski 20. November C# Kurs Objektorientierung Marc Satkowski 20. November 2016 C# Kurs Gliederung 1. Weiterführende Verzweigungen Tertiäre-Verzweigung switch case 2. Schleifen Zählschleife (for) break & continue 3. Objektorientierung

Mehr

Kapitel 11: Vererbung Ziele von Klassen Einführung in die Informatik für struct Naturwissenschaftler und Ingenieure

Kapitel 11: Vererbung Ziele von Klassen Einführung in die Informatik für struct Naturwissenschaftler und Ingenieure Wintersemester 2005/06 Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fachbereich Informatik Lehrstuhl

Mehr

Praxis der Programmierung

Praxis der Programmierung Klassenvariablen und -methoden, Vererbung Institut für Informatik und Computational Science Henning Bordihn 1 Klassenvariablen und -methoden 2 Klassenvariablen und -methoden werden mit dem Schlüsselwort

Mehr

C++ Teil 7. Sven Groß. 3. Juni Sven Groß (IGPM, RWTH Aachen) C++ Teil 7 3. Juni / 16

C++ Teil 7. Sven Groß. 3. Juni Sven Groß (IGPM, RWTH Aachen) C++ Teil 7 3. Juni / 16 C++ Teil 7 Sven Groß 3. Juni 2016 Sven Groß (IGPM, RWTH Aachen) C++ Teil 7 3. Juni 2016 1 / 16 Themen der letzten Vorlesung dynamische Speicherverwaltung (Wdh.) Cast bei Zeigern STL-Vektoren + Live Programming

Mehr

Kurzeinführung in C/C++ Elementare Datentypen in C++

Kurzeinführung in C/C++ Elementare Datentypen in C++ Elementare Datentypen in C++ Anders als in Java sind in C++ die Größen der Elementaren Datentypen maschinenabhängig Die Größe der Datentypen lässt sich mit sizeof ermitteln: int n=sizeof(int) In C++ gilt

Mehr

Informatik - Übungsstunde

Informatik - Übungsstunde Informatik - Übungsstunde Jonas Lauener (jlauener@student.ethz.ch) ETH Zürich Woche 12-23.05.2018 Lernziele Klassen Dynamic Memory Jonas Lauener (ETH Zürich) Informatik - Übung Woche 12 2 / 20 Structs

Mehr

Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung)

Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) Wintersemester 2005/06 Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fachbereich Informatik Lehrstuhl

Mehr

Neben der Verwendung von Klassen ist Vererbung ein wichtiges Merkmal objektorientierter

Neben der Verwendung von Klassen ist Vererbung ein wichtiges Merkmal objektorientierter Kapitel 1 Der vierte Tag 1.1 Vererbung Neben der Verwendung von Klassen ist Vererbung ein wichtiges Merkmal objektorientierter Sprachen. Unter Vererbung versteht man die Möglichkeit, Eigenschaften vorhandener

Mehr

Abstrakte Basisklassen

Abstrakte Basisklassen Softwareentwicklung II (IB) Abstrakte Basisklassen Fakultät für Informatik und Mathematik Hochschule München Letzte Änderung: 24.06.2018 15:20 Inhaltsverzeichnis Idee.........................................

Mehr

Standardbibliotheken. Datentyp bool. Eingaben 2/2. Eingaben 1/2. In C gibt es keinen logischen Datentyp

Standardbibliotheken. Datentyp bool. Eingaben 2/2. Eingaben 1/2. In C gibt es keinen logischen Datentyp Datentyp bool Standardbibliotheken Ein- und Ausgabe Vektoren Container In C gibt es keinen logischen Datentyp Abhilfe schafft Interpretation 0 == false 1 == true Das könnte so aussehen: #define false 0

Mehr

Allgemeines - Prinzipien

Allgemeines - Prinzipien OOP - Prinzipien Allgemeines - Prinzipien OO modelliert die reale Welt als System interagierender Objekte Objekt = gedankliche oder reale Einheit in der Umwelt und/oder in Software Klar definierte Schnittstellen

Mehr

Programmierung Nachklausurtutorium

Programmierung Nachklausurtutorium Programmierung Nachklausurtutorium Laryssa Horn, Tim Engelhardt 20 März 2018 Klassen Wofür wir Klassen brauchen: Definieren ein Bauplan eines Objektes Bauplan enthält Attribute und Methoden Klasse Beispiel

Mehr

Kapitel 13. Abstrakte Methoden und Interfaces. Fachgebiet Knowledge Engineering Prof. Dr. Johannes Fürnkranz

Kapitel 13. Abstrakte Methoden und Interfaces. Fachgebiet Knowledge Engineering Prof. Dr. Johannes Fürnkranz Kapitel 13 Abstrakte Methoden und Interfaces 13. Abstrakte Klassen und Interfaces 1. Abstrakte Klassen 2. Interfaces und Mehrfachvererbung Folie 12.2 Abstrakte Methoden und Klassen Manchmal macht es überhaupt

Mehr

Schriftlicher Test (120 Minuten) VU Einführung ins Programmieren für TM. 25. Jänner 2016

Schriftlicher Test (120 Minuten) VU Einführung ins Programmieren für TM. 25. Jänner 2016 Familienname: Vorname: Matrikelnummer: Aufgabe 1 (3 Punkte): Aufgabe 2 (4 Punkte): Aufgabe 3 (2 Punkte): Aufgabe 4 (2 Punkte): Aufgabe 5 (2 Punkte): Aufgabe 6 (1 Punkte): Aufgabe 7 (3 Punkte): Aufgabe

Mehr

Einführung in die STL

Einführung in die STL 1/29 in die STL Florian Adamsky, B. Sc. (PhD cand.) florian.adamsky@iem.thm.de http://florian.adamsky.it/ cbd Softwareentwicklung im WS 2014/15 2/29 Outline 1 3/29 Inhaltsverzeichnis 1 4/29 Typisierung

Mehr

Konzepte der Programmiersprachen

Konzepte der Programmiersprachen Konzepte der Programmiersprachen Sommersemester 2010 4. Übungsblatt Besprechung am 9. Juli 2010 http://www.iste.uni-stuttgart.de/ps/lehre/ss2010/v_konzepte/ Aufgabe 4.1: Klassen in C ++ Das folgende C

Mehr

Vererbung P rogram m ieren 2 F örster/r iedham m er K apitel 11: V ererbung 1

Vererbung P rogram m ieren 2 F örster/r iedham m er K apitel 11: V ererbung 1 Vererbung 1 11.1 Motivation und Begriffsdefinitionen 11.2 Vorgehensweise und Implementierung 11.3 Arten von Vererbung 11.4 Konstruktoren 11.5 Abstrakte Klasse 11.6 Verschattung 11.7 Wurzelklasse Object

Mehr

Abstrakte Basisklassen

Abstrakte Basisklassen Abstrakte Basisklassen Softwareentwicklung II (IB) Prof. Dr. Oliver Braun Letzte Änderung: 24.06.2018 15:20 Abstrakte Basisklassen 1/18 Idee (1/2) Gegensätze: Interfaces ausschließlich Methodenköpfe, keine

Mehr

Begriffe 1 (Wiederholung)

Begriffe 1 (Wiederholung) Begriffe 1 (Wiederholung) Klasse Eine Klasse ist der Bauplan für ein oder mehrere Objekte. In einer Klasse werden Dienste (Methoden) zur Verfügung gestellt. Klassennamen beginnen mit einem Großbuchstaben.

Mehr

Kapitel 13. Definition von Klassen. OOP Thomas Klinker 1

Kapitel 13. Definition von Klassen. OOP Thomas Klinker 1 Kapitel 13 Definition von Klassen OOP Thomas Klinker 1 OOP Thomas Klinker 2 Datenabstraktion Der Mensch abstrahiert, um komplexe Sachverhalte darzustellen. Dinge und Vorgänge werden auf das wesentliche

Mehr

Vorlesungsprüfung Programmiersprache 1

Vorlesungsprüfung Programmiersprache 1 Vorlesungsprüfung Programmiersprache 1 Termin der Prüfung: 1) Di 20.03.2018 16:15 17:00 HSB 3 2) Di 15.05.2018 16:15 17:00 HSB 3 3) Di 12.06.2018 16:15 17:00 HSB 3 Stoffgebiete: 1) Ganzzahltypen: char,

Mehr

virtual Wertpapier& operator=(const Wertpapier&); // VIRTUELLE ZUWEISUNG protected: static enum {wortfeldlaenge = 20}; char* name_z; double kurs; };

virtual Wertpapier& operator=(const Wertpapier&); // VIRTUELLE ZUWEISUNG protected: static enum {wortfeldlaenge = 20}; char* name_z; double kurs; }; C++ für Anfänger des Programmierens Rieckeheer GSO-Hochschule Nürnberg März 2008 174 a neu Vor Kapitel 24 ist folgender Text einzufügen. Das folgende Programm variiert das Programm VIRTfunktion3.cpp und

Mehr