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

Größe: px
Ab Seite anzeigen:

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

Transkript

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

2 Organisatorisches MÜNSTER Übung zur Vorlesung Wissenschaftliches Rechnen SS /22 Gestern Ausgabe des ersten Übungszettels: Abgabe Dienstag pünktlich 10:00 Uhr Briefkasten 89 Hat jeder einen Partner für die Abgabe?

3 Organisatorisches MÜNSTER Übung zur Vorlesung Wissenschaftliches Rechnen SS /22 Gestern Ausgabe des ersten Übungszettels: Abgabe Dienstag pünktlich 10:00 Uhr Briefkasten 89 Hat jeder einen Partner für die Abgabe? Erinnerung: Schriftliche Abgabe Code zusätzlich per Code muss kompilieren sonst wird er nicht bewertet

4 Organisatorisches MÜNSTER Übung zur Vorlesung Wissenschaftliches Rechnen SS /22 Gestern Ausgabe des ersten Übungszettels: Abgabe Dienstag pünktlich 10:00 Uhr Briefkasten 89 Hat jeder einen Partner für die Abgabe? Erinnerung: Schriftliche Abgabe Code zusätzlich per Code muss kompilieren sonst wird er nicht bewertet Für Nachzügler: an sebastian.westerheide@uni-muenster.de

5 MÜNSTER Übung zur Vorlesung Wissenschaftliches Rechnen SS /22 Erinnerung Eingliederung C++ C++: Imperative Programmiersprache Hybrider Ansatz: Prozedurale und objektorientierte Programmierung möglich

6 MÜNSTER Übung zur Vorlesung Wissenschaftliches Rechnen SS /22 Überblick über die ersten beiden Übungsstunden Letzte Woche: Auffrischung zur prozeduralen Programmierung in C++ Heute: Auffrischung zur objektorientierten Programmierung in C++

7 MÜNSTER Übung zur Vorlesung Wissenschaftliches Rechnen SS /22 Überblick über die ersten beiden Übungsstunden Letzte Woche: Auffrischung zur prozeduralen Programmierung in C++ Heute: Grundlegende Syntax Basisdatentypen Wichtige Operatoren Kontrollstrukturen Prozeduren Wertparameter vs. Referenzparameter Pointer und Referenzen Auffrischung zur objektorientierten Programmierung in C++

8 MÜNSTER Übung zur Vorlesung Wissenschaftliches Rechnen SS /22 Überblick über die ersten beiden Übungsstunden Letzte Woche: Auffrischung zur prozeduralen Programmierung in C++ Heute: Auffrischung zur objektorientierten Programmierung in C++

9 MÜNSTER Übung zur Vorlesung Wissenschaftliches Rechnen SS /22 Überblick über die ersten beiden Übungsstunden Letzte Woche: Auffrischung zur prozeduralen Programmierung in C++ Heute: Auffrischung zur objektorientierten Programmierung in C++ Motivation Klassen und Objekte Klassendesign Konstruktoren Datenkapselung Vererbung Virtuelle Methoden Abstrakte Methoden Abstrakte Klassen Interfaces

10 Motivation (1/3) MÜNSTER Übung zur Vorlesung Wissenschaftliches Rechnen SS /22 Prozedurale Programmierung: Aufbau der Programme aus Teilproblemen (Prozeduren) Es gibt Daten und Prozeduren

11 Motivation (1/3) MÜNSTER Übung zur Vorlesung Wissenschaftliches Rechnen SS /22 Prozedurale Programmierung: Aufbau der Programme aus Teilproblemen (Prozeduren) Es gibt Daten und Prozeduren Prozeduren: Lesen oder Verändern lokaler Daten Aufruf von Prozeduren in Abhängigkeit von Parametern Diese enthalten Daten die weiter verarbeitet werden können Rückgabe der bearbeiteten Daten an den Aufrufer

12 Motivation (1/3) MÜNSTER Übung zur Vorlesung Wissenschaftliches Rechnen SS /22 Prozedurale Programmierung: Aufbau der Programme aus Teilproblemen (Prozeduren) Es gibt Daten und Prozeduren Prozeduren: Lesen oder Verändern lokaler Daten Aufruf von Prozeduren in Abhängigkeit von Parametern Diese enthalten Daten die weiter verarbeitet werden können Rückgabe der bearbeiteten Daten an den Aufrufer Nachteil: Die Daten sind unabhängig von den Anweisungen Jede Anweisung kann gültige Daten lesen oder verändern Falls globale Daten verändert werden können die Folgen für das Programm nicht abgeschätzt werden Wie Daten und Prozeduren zusammenhängen steht nur in den Kommentaren

13 MÜNSTER Übung zur Vorlesung Wissenschaftliches Rechnen SS /22 Motivation (2/3) Beispiel 1 double kreis_umfang ( double r a d i u s ) ; double k r e i s _ f l a e c h e ( double r a d i u s ) ; 3 double rechteck_umfang ( double hoehe double b r e i t e ) ; double r e c h t e c k _ f l a e c h e ( double hoehe double b r e i t e ) ; i n t main ( ) { 9 double hoehe ; double b r e i t e ; 11 double r a d i u s ; } Daten und Prozeduren sind getrennt man könnte auch kreis_flaeche (hoehe) aufrufen

14 Motivation (3/3) MÜNSTER Übung zur Vorlesung Wissenschaftliches Rechnen SS /22 Objektorientierte Programmierung: Zusammenfassung von Daten die ein Objekt beschreiben und Prozeduren zum Ändern dieser Daten

15 Motivation (3/3) MÜNSTER Übung zur Vorlesung Wissenschaftliches Rechnen SS /22 Objektorientierte Programmierung: Zusammenfassung von Daten die ein Objekt beschreiben und Prozeduren zum Ändern dieser Daten Gegenstände der realen Welt werden abstrahiert um sie im Programm abzubilden

16 Motivation (3/3) MÜNSTER Übung zur Vorlesung Wissenschaftliches Rechnen SS /22 Objektorientierte Programmierung: Zusammenfassung von Daten die ein Objekt beschreiben und Prozeduren zum Ändern dieser Daten Gegenstände der realen Welt werden abstrahiert um sie im Programm abzubilden Es werden Klassen erstellt um Gruppen von Objekten zu beschreiben Objekte erstellt um einen Gegenstand aus der realen Wert abzubilden Nachrichten zwischen Objekten verschickt

17 Motivation (3/3) MÜNSTER Übung zur Vorlesung Wissenschaftliches Rechnen SS /22 Objektorientierte Programmierung: Zusammenfassung von Daten die ein Objekt beschreiben und Prozeduren zum Ändern dieser Daten Gegenstände der realen Welt werden abstrahiert um sie im Programm abzubilden Es werden Klassen erstellt um Gruppen von Objekten zu beschreiben Objekte erstellt um einen Gegenstand aus der realen Wert abzubilden Nachrichten zwischen Objekten verschickt Vorteile: Hilft bei der Strukturierung des Programms Reduziert mögliche Fehlerquellen Erleichtert die Wiederverwendung und Weiterentwicklung

18 MÜNSTER Übung zur Vorlesung Wissenschaftliches Rechnen SS /22 Klassen und Objekte Klassen beschreiben die Struktur von Objekten Objekte sind Instanzen einer Klasse Jede neue Klasse ist ein neuer Datentyp

19 MÜNSTER Übung zur Vorlesung Wissenschaftliches Rechnen SS /22 Klassen und Objekte Klassen beschreiben die Struktur von Objekten Objekte sind Instanzen einer Klasse Jede neue Klasse ist ein neuer Datentyp Klassen haben Eigenschaften (Attribute / Member-variables) Attribute beschreiben einen Gegenstand Jede Instanz einer Klasse besitzt die gleichen Eigenschaften Jedes Objekt hat aber bestimmte Attributwerte die das Objekt von anderen Objekten unterscheidet Attribute werden in C++ durch Variablen von einem bestimmten Datentyp dargestellt Methoden (Member-functions)

20 MÜNSTER Übung zur Vorlesung Wissenschaftliches Rechnen SS /22 Klassen und Objekte Klassen beschreiben die Struktur von Objekten Objekte sind Instanzen einer Klasse Jede neue Klasse ist ein neuer Datentyp Klassen haben Eigenschaften (Attribute / Member-variables) Methoden (Member-functions) Methoden können die Eigenschaft eines Objekts verändern Objekte teilen Informationen über sich selbst durch Methoden mit Objekte nutzen Methoden um mit anderen Objekten zu kommunizieren

21 Klassendesign MÜNSTER Übung zur Vorlesung Wissenschaftliches Rechnen SS /22 Klassen entsprechen Substantiven in einer Problembeschreibung Ein Rechteck hat ein Breite b und eine Höhe h Daten in einer Klasse beschreiben Eigenschaften / Attribute Methoden in einer Klasse ändern Attribute / Daten oder geben einem darauf Zugriff

22 Klassendesign MÜNSTER Übung zur Vorlesung Wissenschaftliches Rechnen SS /22 Klassen entsprechen Substantiven in einer Problembeschreibung Daten in einer Klasse beschreiben Eigenschaften / Attribute Ein Rechteck hat ein Breite b und eine Höhe h Methoden in einer Klasse ändern Attribute / Daten oder geben einem darauf Zugriff

23 Klassendesign MÜNSTER Übung zur Vorlesung Wissenschaftliches Rechnen SS /22 Klassen entsprechen Substantiven in einer Problembeschreibung Daten in einer Klasse beschreiben Eigenschaften / Attribute Methoden in einer Klasse ändern Attribute / Daten oder geben einem darauf Zugriff Der Flächeninhalt des Rechtecks ist A = b h Der Umfang des Rechtecks ist U = 2 (b + h)

24 MÜNSTER Übung zur Vorlesung Wissenschaftliches Rechnen SS /22 Beispiel Klassendeklaration // K l a s s e n d e k l a r a t i o n 2 c l a s s Rechteck { 4 // Daten des Rechtecks double hoehe ; 6 double b r e i t e ; 8 p u b l i c : // K o n s t r u k t o r 10 Rechteck ( double h double b ) : hoehe ( h ) b r e i t e ( b ) { } 12 // Berechnungen double umfang ( ) ; 14 double f l a e c h e ( ) ; } ;

25 MÜNSTER Übung zur Vorlesung Wissenschaftliches Rechnen SS /22 Beispiel Implementierung 1 // Implementierung double Rechteck : : umfang ( ) 3 { r e t u r n 2 ( hoehe+ b r e i t e ) ; 5 } 7 double Rechteck : : f l a e c h e ( ) { 9 r e t u r n hoehe b r e i t e ; }

26 MÜNSTER Übung zur Vorlesung Wissenschaftliches Rechnen SS /22 Beispiel Hauptprogramm // K l a s s e n d e k l a r a t i o n und Implementierung laden 2 # i n c l u d e " 02 _Rechteck. hh " # i n c l u d e " 02 _Rechteck. cc " 4 # i n c l u d e < iostream > 6 i n t main ( ) 8 { // Ein Objekt vom Typ Rechteck i n s t a n z i i e r e n 10 Rechteck r ( ) ; std : : cout < < r. f l a e c h e ( ) < < std : : endl ; 12 }

27 MÜNSTER Übung zur Vorlesung Wissenschaftliches Rechnen SS /22 Beispiel Insgesamt # include < iostream > 2 // K l a s s e n d e k l a r a t i o n 4 c l a s s Rechteck { 6 // Daten des Rechtecks double hoehe ; 8 double b r e i t e ; public : 10 // K o n s t r u k t o r Rechteck ( double h double b ) : hoehe (h) b r e i t e (b) { } 12 // Berechnungen double umfang ( ) ; 14 double f l a e c h e ( ) ; } ; 16 i n t main ( ) 18 { // Ein Objekt vom Typ Rechteck i n s t a n z i i e r e n 20 Rechteck r ( ) ; std : : cout < < r. f l a e c h e ( ) < < std : : endl ; 22 } 24 // Implementierung double Rechteck : : umfang ( ) 26 { return 2 ( hoehe+ b r e i t e ) ; 28 } double Rechteck : : f l a e c h e ( ) 30 { return hoehe b r e i t e ; 32 }

28 Konstruktoren MÜNSTER Übung zur Vorlesung Wissenschaftliches Rechnen SS /22 Konstruktoren erzeugen eine neue Instanz einer Klasse Spezielle Methoden die der Initialisierung der Klasse dienen

29 Konstruktoren MÜNSTER Übung zur Vorlesung Wissenschaftliches Rechnen SS /22 Konstruktoren erzeugen eine neue Instanz einer Klasse Spezielle Methoden die der Initialisierung der Klasse dienen Sie bestehen aus drei Teilen: Methodenkopf Initialisierung der Variablen Methodenrumpf // D e f a u l t K o n s t r u k t o r 2 Rechteck ( ) : hoehe ( 1. 0 ) b r e i t e ( 2. 0 ) { } // S p e z i e l l e r K o n s t r u k t o r 4 Rechteck ( double h double b ) : hoehe ( h ) breite ( b ) { }

30 Konstruktoren MÜNSTER Übung zur Vorlesung Wissenschaftliches Rechnen SS /22 Konstruktoren erzeugen eine neue Instanz einer Klasse Spezielle Methoden die der Initialisierung der Klasse dienen Sie bestehen aus drei Teilen: Methodenkopf Initialisierung der Variablen Methodenrumpf // D e f a u l t K o n s t r u k t o r 2 Rechteck ( ) : hoehe ( 1. 0 ) b r e i t e ( 2. 0 ) { } // S p e z i e l l e r K o n s t r u k t o r 4 Rechteck ( double h double b ) : hoehe ( h ) breite ( b ) { } Beim Erzeugen einer Instanz wird der Konstruktor aufgerufen: // D e f a u l t K o n s t r u k t o r 2 Rechteck r ; // S p e z i e l l e r K o n s t r u k t o r 4 Rechteck r ( ) ;

31 Datenkapselung MÜNSTER Übung zur Vorlesung Wissenschaftliches Rechnen SS /22 Die Daten und Methoden eines Objekts werden zusammengefasst Die Daten werden vor einem Zugriff von außen geschützt Attributwerte sind von außen nicht sichtbar Daten können nur über bestimmte Schnittstellen verändert oder gelesen werden Die Implementierung von Methoden ist nach außen hin nicht sichtbar Der Nutzer der Methode kennt nur die Eingangs- und Ausgangswerte der Methode

32 MÜNSTER Übung zur Vorlesung Wissenschaftliches Rechnen SS /22 // K l a s s e n d e k l a r a t i o n 2 c l a s s Rechteck { 4 // Daten des Rechtecks double hoehe ; 6 double b r e i t e ; 8 p u b l i c : // K o n s t r u k t o r 10 Rechteck ( double h double b ) : hoehe ( h ) b r e i t e ( b ) { } 12 // Berechnungen double umfang ( ) ; 14 double f l a e c h e ( ) ; } ;

33 MÜNSTER Übung zur Vorlesung Wissenschaftliches Rechnen SS /22 // K l a s s e n d e k l a r a t i o n 2 c l a s s Rechteck { 4 // Daten des Rechtecks double hoehe ; 6 double b r e i t e ; 8 p u b l i c : // K o n s t r u k t o r 10 Rechteck ( double h double b ) : hoehe ( h ) b r e i t e ( b ) { } 12 // Berechnungen double umfang ( ) ; 14 double f l a e c h e ( ) ; } ; 1 // Daten des Rechtecks double hoehe ; 3 double b r e i t e ; private : Der Zugriff auf Methoden oder Attribute ist von außen her nicht möglich Ein Zugriff von außen ist nicht zulässig Attribute einer Klasse werden meist mit private deklariert Standardmäßig sind alle Elemente einer Klasse privat

34 MÜNSTER Übung zur Vorlesung Wissenschaftliches Rechnen SS /22 // K l a s s e n d e k l a r a t i o n 2 c l a s s Rechteck { 4 // Daten des Rechtecks double hoehe ; 6 double b r e i t e ; p u b l i c : 2 // K o n s t r u k t o r Rechteck ( double h double b ) ; 4 // Berechnungen double umfang ( ) ; 6 double f l a e c h e ( ) ; 8 p u b l i c : // K o n s t r u k t o r 10 Rechteck ( double h double b ) : hoehe ( h ) b r e i t e ( b ) { } 12 // Berechnungen double umfang ( ) ; 14 double f l a e c h e ( ) ; } ; public: Die Methoden und Attribute sind öffentlich zugänglich Objekte beliebiger Klassen können auf diese Methoden und Attribute zugreifen Methoden die Eigenschaften verändern sind meist public deklariert

35 Vererbung MÜNSTER Übung zur Vorlesung Wissenschaftliches Rechnen SS /22 Vererbung dient dazu aufbauend auf existierenden Klassen neue zu schaffen

36 Vererbung MÜNSTER Übung zur Vorlesung Wissenschaftliches Rechnen SS /22 Vererbung dient dazu aufbauend auf existierenden Klassen neue zu schaffen Eine neue Klasse ist dann eine Erweiterung der ursprünglichen Basisklasse d.h. eine Spezialisierung Die Spezialisierungen werden abgeleitete Klassen oder Unterklassen genannt

37 Vererbung MÜNSTER Übung zur Vorlesung Wissenschaftliches Rechnen SS /22 Vererbung dient dazu aufbauend auf existierenden Klassen neue zu schaffen Eine neue Klasse ist dann eine Erweiterung der ursprünglichen Basisklasse d.h. eine Spezialisierung Die Spezialisierungen werden abgeleitete Klassen oder Unterklassen genannt Unterklassen erben Struktur und Verhalten ihrer Basisklasse Wiederverwendung der vorhandenen Methoden

38 MÜNSTER Übung zur Vorlesung Wissenschaftliches Rechnen SS /22 Beispiel Vererbung / 2 Klasse M i t g l i e d : R e p r a e s e n t i e r t das M i t g l i e d e i n e r Schule ; z. B. Hausmeister Lehrer Schueler... 4 / c l a s s M i t g l i e d 6 { p r i v a t e : 8 std : : s t r i n g vorname ; // h i e r kommen dann noch die anderen Daten 10 p u b l i c : 12 // K o n s t r u k t o r M i t g l i e d ( std : : s t r i n g v ) : vorname ( v ) { } ; 14 // Lesen / Schreiben der Vornamens 16 std : : s t r i n g lesevorname ( ) ; void schreibevorname ( std : : s t r i n g v ) ; 18 } ;

39 MÜNSTER Übung zur Vorlesung Wissenschaftliches Rechnen SS /22 Beispiel Vererbung / 2 Klasse Schueler : E r w e i t e r t Klasse M i t g l i e d ; Z u s a e t z l i c h hat der Schueler die I n f o r m a t i o n i n welcher Klasse er i s t 4 / c l a s s Schueler : p u b l i c M i t g l i e d 6 { p r i v a t e : 8 i n t klasse ; // h i e r kommen dann noch die anderen Daten 10 p u b l i c : 12 // K o n s t r u k t o r Schueler ( std : : s t r i n g v i n t k ) : M i t g l i e d ( v ) klasse ( k ) { } ; 14 // Lesen / Schreiben der Klasse 16 i n t l e s e K l a s s e ( ) ; void s c h r e i b e K l a s s e ( i n t k ) ; 18 } ;

40 Virtuelle Methoden MÜNSTER Übung zur Vorlesung Wissenschaftliches Rechnen SS /22 Methoden die von einer Unterklasse durch eine Methode gleicher Signatur überschrieben werden können Erst zur Laufzeit wird bestimmt welche Variante verwendet wird (dynamisches Binden)

41 Virtuelle Methoden MÜNSTER Übung zur Vorlesung Wissenschaftliches Rechnen SS /22 Methoden die von einer Unterklasse durch eine Methode gleicher Signatur überschrieben werden können Erst zur Laufzeit wird bestimmt welche Variante verwendet wird (dynamisches Binden) Sofern vorhanden wird die Implementierung der Unterklasse verwendet Wenn eine Unterklasse eine virtuelle Methode einer Basisklasse nicht überschreibt wird die Methode der Basisklasse genutzt

42 Virtuelle Methoden MÜNSTER Übung zur Vorlesung Wissenschaftliches Rechnen SS /22 Methoden die von einer Unterklasse durch eine Methode gleicher Signatur überschrieben werden können Erst zur Laufzeit wird bestimmt welche Variante verwendet wird (dynamisches Binden) Sofern vorhanden wird die Implementierung der Unterklasse verwendet Wenn eine Unterklasse eine virtuelle Methode einer Basisklasse nicht überschreibt wird die Methode der Basisklasse genutzt Klassen mit virtuellen Methoden werden als polymorphe Klassen bezeichnet

43 MÜNSTER Übung zur Vorlesung Wissenschaftliches Rechnen SS /22 Abstrakte Methoden Abstrakte Klassen Abstrakte Methoden (rein virtuelle Methoden) sind virtuelle Methoden die keine Implementierung besitzen

44 MÜNSTER Übung zur Vorlesung Wissenschaftliches Rechnen SS /22 Abstrakte Methoden Abstrakte Klassen Abstrakte Methoden (rein virtuelle Methoden) sind virtuelle Methoden die keine Implementierung besitzen Sie bestehen nur aus ihrer Deklaration in Form eines Prototyps z.b. virtual void pure_virtual () = 0; Die Implementierung erfolgt erst in den abgeleiteten Klassen weshalb eine Klasse mit abstrakten Methoden auch nicht direkt instanziiert werden kann

45 MÜNSTER Übung zur Vorlesung Wissenschaftliches Rechnen SS /22 Abstrakte Methoden Abstrakte Klassen Abstrakte Methoden (rein virtuelle Methoden) sind virtuelle Methoden die keine Implementierung besitzen Sie bestehen nur aus ihrer Deklaration in Form eines Prototyps z.b. virtual void pure_virtual () = 0; Die Implementierung erfolgt erst in den abgeleiteten Klassen weshalb eine Klasse mit abstrakten Methoden auch nicht direkt instanziiert werden kann Enthält eine Klasse eine abstrakte Methode wird sie als abstrakte Klasse bezeichnet

46 MÜNSTER Übung zur Vorlesung Wissenschaftliches Rechnen SS /22 Abstrakte Methoden Abstrakte Klassen Abstrakte Methoden (rein virtuelle Methoden) sind virtuelle Methoden die keine Implementierung besitzen Sie bestehen nur aus ihrer Deklaration in Form eines Prototyps z.b. virtual void pure_virtual () = 0; Die Implementierung erfolgt erst in den abgeleiteten Klassen weshalb eine Klasse mit abstrakten Methoden auch nicht direkt instanziiert werden kann Enthält eine Klasse eine abstrakte Methode wird sie als abstrakte Klasse bezeichnet Hinweis: Die Abstraktheit einer Methode darf sich über mehrere Ebenen der Vererbungshierarchie erstrecken

47 Interfaces MÜNSTER Übung zur Vorlesung Wissenschaftliches Rechnen SS /22 Die Gemeinsamkeiten von Klassen sollen häufig von einer Schnittstelle abgebildet werden Die verschiedenen Klassen können verschiedene Implementierungen der Schnittstelle verwenden

48 Interfaces MÜNSTER Übung zur Vorlesung Wissenschaftliches Rechnen SS /22 Die Gemeinsamkeiten von Klassen sollen häufig von einer Schnittstelle abgebildet werden Die verschiedenen Klassen können verschiedene Implementierungen der Schnittstelle verwenden Solche Schnittstellen werden auch Interfaces genannt

49 Interfaces MÜNSTER Übung zur Vorlesung Wissenschaftliches Rechnen SS /22 Die Gemeinsamkeiten von Klassen sollen häufig von einer Schnittstelle abgebildet werden Die verschiedenen Klassen können verschiedene Implementierungen der Schnittstelle verwenden Solche Schnittstellen werden auch Interfaces genannt In C++ realisiert man ein Interface als abstrakte Klasse die ausschließlich aus abstrakten Methoden besteht

50 MÜNSTER Übung zur Vorlesung Wissenschaftliches Rechnen SS /22 Beispiel Interfaces c l a s s G e o m e t r i e O b j e k t I n t e r f a c e { 2 public : v i r t u a l double umfang ( ) = 0; 4 v i r t u a l double f l a e c h e ( ) = 0; } ; 6 c l a s s K r e i s : G e o m e t r i e O b j e k t I n t e r f a c e { 8 double radius ; v i r t u a l double umfang ( ) { return 2 M_PI radius ; } v i r t u a l double flaeche ( ) { return M_PI radius radius ; } 12 } ; 14 c l a s s Rechteck : G e o m e t r i e O b j e k t I n t e r f a c e { double hoehe ; double breite ; v i r t u a l double umfang ( ) { return 2 hoehe breite ; } 18 v i r t u a l double flaeche ( ) { return hoehe breite ; } } ; 20 void datenausgeben ( G e o m e t r i e O b j e k t I n t e r f a c e& geom ) { 22 std : : cout < < "Umfang = " < < geom. umfang ( ) < < " Flaeche = " < < geom. f l a e c h e ( ) < < std : : endl ; 24 } 26 i n t main ( ) { K r e i s k ( 3. 0 ) ; Rechteck r ( ) ; 28 datenausgeben ( k ) ; datenausgeben ( r ) ; }

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

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

Mehr

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

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

Mehr

Übung zur Vorlesung Wissenschaftliches Rechnen Wintersemester 2013/14 Auffrischung zur Programmierung in C++, 1. Teil

Übung zur Vorlesung Wissenschaftliches Rechnen Wintersemester 2013/14 Auffrischung zur Programmierung in C++, 1. Teil MÜNSTER Übung zur Vorlesung Wissenschaftliches Rechnen Wintersemester 2013/14 Auffrischung zur Programmierung in C++ 1. Teil 17. Oktober 2013 Organisatorisches MÜNSTER Übung zur Vorlesung Wissenschaftliches

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

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

Programmieren in Java

Programmieren in Java Einführung in die Objektorientierung Teil 4 Interfaces, innere Klassen und Polymorphie 2 Vererbung im Klassendiagram (Wiederholung) Vererbung repräsentiert eine ist ein Beziehung zwischen Klassen Ware

Mehr

Programmierkurs C++ Abstrakte Klassen und Methoden

Programmierkurs C++ Abstrakte Klassen und Methoden Programmierkurs C++ Abstrakte Klassen und Methoden Prof. Dr. Stefan Fischer Institut für Telematik, Universität zu Lübeck http://www.itm.uni-luebeck.de/people/fischer #2 Vererbungshierarchie Obst double

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 Inhalt Compiler/Editor Klassendeklaration

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

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

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

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

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

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

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

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

Programmieren in Java

Programmieren in Java Einführung in die Objektorientierung Teil 4 Interfaces, Polymorphie und innere Klassen 2 Vererbung im Klassendiagramm (Wiederholung) Vererbung repräsentiert eine ist ein Beziehung zwischen Klassen Object

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

Grundlagen Polymorphismus Eigenschaften virtueller Klassen Mehrfachvererbung bei ROOT. Mehrfache Vererbung. Daniel Beneckenstein. 21.

Grundlagen Polymorphismus Eigenschaften virtueller Klassen Mehrfachvererbung bei ROOT. Mehrfache Vererbung. Daniel Beneckenstein. 21. Mehrfache Vererbung Daniel Beneckenstein 21. August 2006 Mehrfache Vererbung Ableitung einer Klasse von beliebig vielen Basisklassen: class A {... }; class B {... }; class C {... }; class D: public A,

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

C++ - Objektorientierte Programmierung Polymorphie

C++ - Objektorientierte Programmierung Polymorphie C++ - Objektorientierte Programmierung Polymorphie hat eine Kantenlänge hat eine Füllfarbe Kantenlänge setzen Füllfarbe lesen Volumen berechnen C++ - Objektorientierte Programmierung 21.06.16 Seite 1 Polymorphie

Mehr

C++ Teil 9. Sven Groß. 17. Juni Sven Groß (IGPM, RWTH Aachen) C++ Teil Juni / 17

C++ Teil 9. Sven Groß. 17. Juni Sven Groß (IGPM, RWTH Aachen) C++ Teil Juni / 17 C++ Teil 9 Sven Groß 17. Juni 2016 Sven Groß (IGPM, RWTH Aachen) C++ Teil 9 17. Juni 2016 1 / 17 Themen der letzten Vorlesung Objektorientierung und Klassen Attribute / Datenelemente Methoden / Elementfunktionen

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

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

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

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

Programmierkurs Java

Programmierkurs Java Programmierkurs Java Abstrakte Klassen und Methoden & Interfaces Prof. Dr. Stefan Fischer Institut für Telematik, Universität zu Lübeck http://www.itm.uni-luebeck.de/people/fischer #2 Vererbungshierarchie

Mehr

Java für Bauingenieure

Java für Bauingenieure 1 JAVA für Bauingenieure Alexander Karakas SS 2008 Objektorientierte Programmierung 30.04.2008, CIP Pool Objektorientierte Programmierung Übersicht 2 Klasse und Objekt Polymorphismus und Vererbung Klassen

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

Methoden und Klassen. Silke Trißl Wissensmanagement in der Bioinformatik

Methoden und Klassen. Silke Trißl Wissensmanagement in der Bioinformatik Methoden und Klassen Silke Trißl Wissensmanagement in der Bioinformatik Wiederholung Jede Applikation braucht eine Klasse mit einer main-methode Eintrittspunkt in das Programm Die main-methode wird public

Mehr

Kapitel 8. Programmierkurs. Methoden. 8.1 Methoden

Kapitel 8. Programmierkurs. Methoden. 8.1 Methoden Kapitel 8 Programmierkurs Birgit Engels Anna Schulze Zentrum für Angewandte Informatik Köln Objektorientierte Programmierung Methoden Überladen von Methoden Der this-zeiger Konstruktoren Vererbung WS 07/08

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

Silke Trißl, Prof. Ulf Leser Wissensmanagement in der Bioinformatik. Jede Applikation braucht eine Klasse mit einer main-methode

Silke Trißl, Prof. Ulf Leser Wissensmanagement in der Bioinformatik. Jede Applikation braucht eine Klasse mit einer main-methode Methoden und Klassen Silke Trißl, Prof. Ulf Leser Wissensmanagement in der Bioinformatik Wiederholung Jede Applikation braucht eine Klasse mit einer main-methode Eintrittspunkt in das Programm Die main-methode

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

Objektorientierte Programmierung

Objektorientierte Programmierung C++ Objektorientierte Programmierung Erweiterung von selbstdefinierten Datentypen (struct) zu Klasse. Eine Klasse besteht dann aus - Attributen (Untertypen wie struct) und zusätzlich - aus Methoden (Funktionen

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

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

Die verschiedenen Programmierparadigmen von C++ Software-Technik: Vom Programmierer zur erfolgreichen

Die verschiedenen Programmierparadigmen von C++ 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 des Quellcodes 4. Werte- und Referenzsemantik 5. Entwurf

Mehr

11.3 Virtuelle Methoden

11.3 Virtuelle Methoden 11.3 Virtuelle Methoden Überdeckte Methoden: Betrachten wir noch einmal unsere Klassen Employee und Manager. class Employee void print() const cout

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

C++ Teil 10. Sven Groß. 17. Dez IGPM, RWTH Aachen. Sven Groß (IGPM, RWTH Aachen) C++ Teil Dez / 14

C++ Teil 10. Sven Groß. 17. Dez IGPM, RWTH Aachen. Sven Groß (IGPM, RWTH Aachen) C++ Teil Dez / 14 C++ Teil 10 Sven Groß IGPM, RWTH Aachen 17. Dez 2014 Sven Groß (IGPM, RWTH Aachen) C++ Teil 10 17. Dez 2014 1 / 14 Themen der letzten Vorlesung Objektorientierung und Klassen Attribute / Datenelemente

Mehr

Vorkurs Informatik: Erste Schritte der Programmierung mit C++

Vorkurs Informatik: Erste Schritte der Programmierung mit C++ Vorkurs Informatik WS 14/15 Vorkurs Informatik: Erste Schritte der Programmierung mit C++ Tag 3: Objektorientiere Programmierung 8. Oktober 2014 Vorkurs Informatik WS 14/15 > Einführung Agenda 1 Einführung

Mehr

Einführung in die Programmierung mit C++

Einführung in die Programmierung mit C++ 1 Seite 1 Einführung in die Programmierung mit C++ Teil III - Objektorientierte Programmierung 10. Vererbung und Polymorphie Vererbung und Polymorphie in C++ Seite 2 Klassen können von anderen Klassen

Mehr

Vererbung. Generalisierung und Spezialisierung Vererbung und Polymorphismus

Vererbung. Generalisierung und Spezialisierung Vererbung und Polymorphismus Vererbung Generalisierung und Spezialisierung Vererbung und Polymorphismus Wir wollen in unserem Aquarium verschiedene Arten von Fischen schwimmen lassen. In einem ersten Ansatz definieren wir nicht nur

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

Objektorientierte Programmierung

Objektorientierte Programmierung Objektorientierte Programmierung Objektorientierte Programmierung Ronja Düffel WS2018/19 09. Oktober 2018 Objektorientierte Programmierung Überblick 1 Was ist das? 2 Wie geht das? 3 Warum gibt es das?

Mehr

Wissenschaftliches Rechnen

Wissenschaftliches Rechnen Institut für Numerische und Angewandte Mathematik 11.04.2012 FB Mathematik und Informatik der Universität Münster Prof. Dr. Christian Engwer, Dipl. Math. Dipl. Inf. Sebastian Westerheide Übung zur Vorlesung

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

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

Programmieren in Java

Programmieren in Java Programmieren in Java Einführung in die objektorientierte Programmierung 2 Einordnung in den Softwareentwicklungsprozess Softwareentwicklung mit JAVA Planung Entwurf Programmierung Test/Evaluation/Pflege

Mehr

Javakurs für Anfänger

Javakurs für Anfänger Javakurs für Anfänger Einheit 10: Mehr zur Vererbung und abstrakte Klassen Lorenz Schauer Lehrstuhl für Mobile und Verteilte Systeme Heutige Agenda 1. Teil: Mehr zur Vererbung Methoden vererben und überschreiben

Mehr

Objektorientierte Programmierung OOP

Objektorientierte Programmierung OOP Objektorientierte Programmierung OOP Objektorientierte Programmierung OOP Ronja Düffel Alina Stürck WS2016/17 11. Oktober 2016 Objektorientierte Programmierung OOP 1 Was ist das? 2 Wie geht das? 3 Warum

Mehr

Die abgeleiteten Klassen Kreis und Viereck erben die Elemente des Basisklasse und verfügen über zusätzliche Eigenschaften (Seitenlänge,

Die abgeleiteten Klassen Kreis und Viereck erben die Elemente des Basisklasse und verfügen über zusätzliche Eigenschaften (Seitenlänge, Kompaktkurs C++ Vererbung (inheritance) 1 Oft besitzen verschiedene Datentypen einen gemeinsamen Kern: Kreis und Viereck sind geometrische Figuren; sie haben eine Kantenzahl, eine Fläche, einen Umfang

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

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

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 verstehen wie Polymorphismus

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

C++ - Objektorientierte Programmierung Konstruktoren und Destruktoren

C++ - Objektorientierte Programmierung Konstruktoren und Destruktoren C++ - Objektorientierte Programmierung Konstruktoren und Destruktoren hat eine Kantenlänge hat eine Füllfarbe Kantenlänge setzen Füllfarbe lesen Volumen berechnen Leibniz Universität IT Services Anja Aue

Mehr

Klassen als Objekte. Smalltalk vs. Objective-C. Self-Nachrichten an Klassen in Objective-C. Klassen als Objekte. Smalltalk: Everything is an object

Klassen als Objekte. Smalltalk vs. Objective-C. Self-Nachrichten an Klassen in Objective-C. Klassen als Objekte. Smalltalk: Everything is an object Smalltalk vs. Objective-C Klassen als Objekte Klassendeklarationen Selektoren als first-class values Objekt-Erzeugung Implementierung: Eigene VM vs. Einbettung in C Smalltalk: Everything is an object Klassen

Mehr

Prof. Dr. Wolfgang Schramm. Vorlesung. Techniken der Programmentwicklung. Exkurs: Anonyme Klassen

Prof. Dr. Wolfgang Schramm. Vorlesung. Techniken der Programmentwicklung. Exkurs: Anonyme Klassen Prof. Dr. Wolfgang Schramm Vorlesung Exkurs: Anonyme Klassen Techniken der Programmentwicklung Prof. Dr. Wolfgang Schramm Vorlesung Exkurs: Anonyme Klassen Techniken der Programmentwicklung Anonyme Klassen

Mehr

Einführung in die Programmiersprache Java II

Einführung in die Programmiersprache Java II Einführung in die Programmiersprache Java II ??????????? UML OOP "Object oriented programming is bad" - professional retard 90s... UML Entwicklungsziele verschiedenen existierenden objektorienten Modellierungsmethoden

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

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

Überblick. Überblick. Abstrakte Klassen - rein virtuelle Funktionen Beispiele

Überblick. Überblick. Abstrakte Klassen - rein virtuelle Funktionen Beispiele Überblick 1. Einführung C++ / Entwicklung/ Sprachfamilie 2. Nicht objektorientierte Erweiterungen von C 2.1 Das Ein-/Ausgabekonzept von C++ 2.2 Referenzen in C++ 2.3 Heap-Allokatoren in C++ 3. Grundlagen

Mehr

Silke Trißl Wissensmanagement in der Bioinformatik. Objektorientierte Programmierung (OOP) Vorstellung wie in der realen Welt: Farbe Hubraum Tank...

Silke Trißl Wissensmanagement in der Bioinformatik. Objektorientierte Programmierung (OOP) Vorstellung wie in der realen Welt: Farbe Hubraum Tank... Methoden und Klassen Silke Trißl Wissensmanagement in der Bioinformatik Objektorientierte Programmierung (OOP) Vorstellung wie in der realen Welt: hat Farbe Hubraum Tank kann man Gas geben Bremsen Hoch

Mehr

Propädeutikum Programmierung in der Bioinformatik

Propädeutikum Programmierung in der Bioinformatik Propädeutikum Programmierung in der Bioinformatik Java Klassen und Objekte Thomas Mauermeier 27.11.2018 Ludwig-Maximilians-Universität München Rückblick Imperative Programmierung Variablen Fallunterscheidungen

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

Anwendungsentwicklung mit Java. Grundlagen der OOP, Vererbung, Schnittstellen, Polymorphie

Anwendungsentwicklung mit Java. Grundlagen der OOP, Vererbung, Schnittstellen, Polymorphie Anwendungsentwicklung mit Java Grundlagen der OOP, Vererbung, Schnittstellen, Polymorphie Vererbung (1) 2 Problem: Objekte mit gleichen Attributen/Methoden, aber nicht völlig identisch, z.b., LKW, PKW,

Mehr

Einführung in das Objektorientierte Programmieren mit C++

Einführung in das Objektorientierte Programmieren mit C++ BEREICH DATENTECHNIK I CP 700 00 TH 03 Einführung in das Objektorientierte Programmieren mit C++ Kapitel 7 7. Laufzeit-Polymorphie 7.1. Frühes und spätes Binden 7.2. Virtuelle Funktionen FG TECHNISCHE

Mehr

Objektorientierte Anwendungsentwicklung

Objektorientierte Anwendungsentwicklung Name, Vorname Matrikelnummer Klausur zur Vorlesung Objektorientierte Anwendungsentwicklung Krefeld, 16. März 2012 Hinweise: Schreiben Sie Ihren Namen und Ihre Matrikelnummer auf dieses Deckblatt. Die Aufgabenstellung

Mehr

Inhaltsüberblick. I. Grundbegriffe - Objekte und Klassen. Organisatorisches. I. Grundbegriffe - Objektorientierte Konzepte

Inhaltsüberblick. I. Grundbegriffe - Objekte und Klassen. Organisatorisches. I. Grundbegriffe - Objektorientierte Konzepte Grundkonzepte Objektorientierter Programmierung Nicole Himmerlich FSU Jena mit Java, Oberon-2, Object-Pascal und Python Inhaltsüberblick I. Grundbegriffe 1) Kopplung 2) Datenkaspelung 3) Konstruktor 4)

Mehr

Probeklausur. Musterlösung

Probeklausur. Musterlösung Programmierkurs Probeklausur Dr. Steffen Müthing Abgabe 08. Februar 2019 IWR, Universität Heidelberg ipk-exercises:2018-ws-55-gc187ae0 Allgemeine Hinweise: Probeklausur Dieses Übungsblatt wird nicht bewertet.

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

Informatik II Übung, Woche 17

Informatik II Übung, Woche 17 Giuseppe Accaputo 28. April, 2016 1. Vererbung 2. Vorbesprechung Übung 8 Plan für heute 3. Erweiterung des Vorlesungsverzeichnis (VVZ) (Live-Programmierung) Informatik II (D-BAUG) Giuseppe Accaputo 2 Vererbung

Mehr

Skriptum Bauinformatik SS 2013 (Vorlesung III)

Skriptum Bauinformatik SS 2013 (Vorlesung III) Skriptum Bauinformatik SS 2013 (Vorlesung III) Stand: 16.04.2013 Dr. Johannes Lange 2 Inhalt Grundlagen Programmierung... 2 Imperative Programmierung... 2 Objektorientierte Programmierung... 2 Objekte...

Mehr

Java Einführung Vererbung und Polymorphie. Kapitel 13

Java Einführung Vererbung und Polymorphie. Kapitel 13 Java Einführung Vererbung und Polymorphie Kapitel 13 Inhalt Klassifikation (UML) Implementierung von Vererbungshierarchien Überschreiben von Methoden Polymorphismus: Up-Casting und Dynamisches Binden Schlüsselwort

Mehr

Objektorientierte Programmierung Studiengang Medieninformatik

Objektorientierte Programmierung Studiengang Medieninformatik Objektorientierte Programmierung Studiengang Medieninformatik Hans-Werner Lang Hochschule Flensburg Vorlesung 1 15.03.2017 Objektorientierte Programmierung (Studiengang Medieninformatik) Form: Prüfung:

Mehr

FH D. Objektorientierte Programmierung in Java FH D FH D. Prof. Dr. Ing. André Stuhlsatz. Wiederholung: Gerüstbeispiel. Vererbungshierarchie: Typ 0

FH D. Objektorientierte Programmierung in Java FH D FH D. Prof. Dr. Ing. André Stuhlsatz. Wiederholung: Gerüstbeispiel. Vererbungshierarchie: Typ 0 9 Objektorientierte Programmierung in Java Prof. Dr. Ing. André Stuhlsatz Wiederholung: Gerüstbeispiel Ein Duo, Quarto oder Sexto ist ein Gerüst. Die Klassen Duo, Quarto und Sexto sollen durch Vererbung

Mehr

Erste Java-Programme (Java Wiederholung & Vererbung)

Erste Java-Programme (Java Wiederholung & Vererbung) Lehrstuhl Bioinformatik Konstantin Pelz Erste Java-Programme (Java Wiederholung & ) Tutorium Bioinformatik (WS 18/19) Konstantin: Konstantin.pelz@campus.lmu.de Homepage: https://bioinformatik-muenchen.com/studium/propaedeutikumprogrammierung-in-der-bioinformatik/

Mehr

Tafelübung 07 Algorithmen und Datenstrukturen

Tafelübung 07 Algorithmen und Datenstrukturen Tafelübung 07 Algorithmen und Datenstrukturen Lehrstuhl für Informatik 2 (Programmiersysteme) Friedrich-Alexander-Universität Erlangen-Nürnberg Wintersemester 2017/2018 Übersicht Vererbung Grundlagen Abstrakte

Mehr

Programmierpraktikum 3D Computer Grafik

Programmierpraktikum 3D Computer Grafik Dipl.Inf. Otmar Hilliges Programmierpraktikum 3D Computer Grafik Einführung in C++ Teil II: Klassen, Objekte, Funktionen und Vererbung. Funktionen [Rückgabetyp] [Name] ([Parameter]) { } Wichtig: Funktionen

Mehr

Java Methoden. Informatik 1 für Nebenfachstudierende Grundmodul. Kai-Steffen Hielscher Folienversion: 1. Februar 2017

Java Methoden. Informatik 1 für Nebenfachstudierende Grundmodul. Kai-Steffen Hielscher Folienversion: 1. Februar 2017 Informatik 1 für Nebenfachstudierende Grundmodul Java Methoden Kai-Steffen Hielscher Folienversion: 1. Februar 2017 Informatik 7 Rechnernetze und Kommunikationssysteme Inhaltsübersicht Kapitel 3 - Java

Mehr

Objektorientierte Programmierung Studiengang Medieninformatik

Objektorientierte Programmierung Studiengang Medieninformatik Objektorientierte Programmierung Studiengang Medieninformatik Hans-Werner Lang Hochschule Flensburg Vorlesung 2 22.03.2017 Was bisher geschah... Klassen und Objekte Attribute und Methoden Klasse Bruch

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

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

Programmieren 2 C++ Überblick

Programmieren 2 C++ Überblick Programmieren 2 C++ Überblick 1. Einführung und Überblick 2. Klassen und Objekte: Datenkapselung 3. Erzeugung und Vernichtung von Objekten 4. Ad-hoc Polymorphismus 5. Behälter und Iteratoren 6. Templates

Mehr

Zusammenfassung. Mit bjam und ein paar Zeilen in einem Jamroot oder Jamfile lässt sich das Kompilieren und Linken einfach automatisieren

Zusammenfassung. Mit bjam und ein paar Zeilen in einem Jamroot oder Jamfile lässt sich das Kompilieren und Linken einfach automatisieren Zusammenfassung Deklaration einer Klasse im Header-File /.h-file Header-Files mit #pragma once vor double inclusion schützen möglichst Vorwärts-Deklarationen verwenden statt include-files einzubinden mindestens

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 die Programmierung mit C++

Einführung in die Programmierung mit C++ 1 Seite 1 Einführung in die Programmierung mit C++ Teil III - Objektorientierte Programmierung 9. Klassen und Methoden Was sind Klassen? Seite 2 sprachliches Mittel von C++ um objektorientierte Programmierung

Mehr

Einführung in die Programmierung

Einführung in die Programmierung Skript zur Vorlesung: Einführung in die Programmierung WiSe 2009 / 2010 Skript 2009 Christian Böhm, Peer Kröger, Arthur Zimek Prof. Dr. Christian Böhm Annahita Oswald Bianca Wackersreuther Ludwig-Maximilians-Universität

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

14. Java Klassen. Klassen (Java) vs. Records (Pascal) Klassen - Konzeptuell. Klassen - Technisch

14. Java Klassen. Klassen (Java) vs. Records (Pascal) Klassen - Konzeptuell. Klassen - Technisch Klassen (Java) vs. Records (Pascal) 14. Java Klassen Klassen, Typen, Objekte, Deklaration, Instanzierung, Konstruktoren, statische Felder und Methoden, Datenkapselung Pascal RECORDs in Pascal sind reine

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

Kapitel 06. Klassen und Objekte. Fachgebiet Knowledge Engineering Prof. Dr. Johannes Fürnkranz

Kapitel 06. Klassen und Objekte. Fachgebiet Knowledge Engineering Prof. Dr. Johannes Fürnkranz Kapitel 06 Klassen und Objekte Inhalt des 6. Kapitels Klassen und Objekte 6.1 Was ist eine Klasse? Definition Die Klasse String 6.2 Klassendefinition äußerer Teil innerer Teil - Datenfelder - Konstruktor

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

Java-Grundkurs für Wirtschaftsinformatiker

Java-Grundkurs für Wirtschaftsinformatiker Klaus-Georg Deck Herbert Neuendorf Java-Grundkurs für Wirtschaftsinformatiker Die Grundlagen verstehen - Objektorientierte Programmierung - Fortgeschrittene Konzepte kennenlernen - Betriebswirtschaftlich

Mehr

Repetitorium Informatik (Java)

Repetitorium Informatik (Java) Repetitorium Informatik (Java) Tag 6 Lehrstuhl für Informatik 2 (Programmiersysteme) Übersicht 1 Klassen und Objekte Objektorientierung Begrifflichkeiten Deklaration von Klassen Instanzmethoden/-variablen

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