Objektorientiertes Design

Größe: px
Ab Seite anzeigen:

Download "Objektorientiertes Design"

Transkript

1 Was sind Klassen Objektorientiertes Design I Klassen I Typen I Objekte I Klassen sind benutzerdefinierte Datentypen I Verwendung völlig analog zu int, string I Klassen erweitern struct aus C erlauben Methoden (Funktionen) I Klassen erlauben das Prinzip der Datenkapselung Code wird besser wiederverwendbar black-box-implementierung möglich I Klassen sind Schablonen für Objekte I Klassen sind der Grundbaustein zur OO I Vergleich zu C Klasse b= typedef + struct 5 Beispiel 5 class Student 7 string name; 8 string studiengang; int matrikelnummer; void lernen(); 12 void testschreiben(); I Deklaration mit Schlüsselwort class I enthält Daten (members) analog zu struct aus C I enthält Funktionen (Methoden) erlaubt es komplette Objekte abzubilden I zu Namenskonvention: C++ ist case sensitive Groß- und Kleinschreibung beachten I Klassen (Coding Standard) AlleWorteCapitalizedOhneUnderlines I Methoden, Funktionen und Variablen ersteswortkleinrestcapitalizedohneunderlines Objekte I Objekte sind Instanzen einer Klasse Sie sind die tatsächlichen Variablen werden angelegt wie bei primitiven Typen entsprechen Variablen vom struct Datentyp Student Marcus; int x; I Zugriff auf Klassenelemente mit Punktoperator (.) Marcus.name = "Marcus Page"; Marcus.Lernen(); I Achtung: An Objekte zuweisen, nicht an Klassen int = 5; Student = "Marcus Page"; // Fehler // Fehler 6 7

2 Zugriffskontrolle I Klassen und Objekte dienen der Abstraktion genaue Implementierung nicht wichtig zum Beispiel durch Bibliotheken I Benutzer soll so wenig wissen wie möglich black-box Programmierung nur Ein- und Ausgabe müssen bekannt sein I richtiger Zugriff muss sichergestellt werden I Schlüsselwörter private und public I private (Standard) Zugriff nur von Methoden der gleichen Klasse I public erlaubt Zugriff von überall I protected teilweiser Zugriff von außen (später) Beispiel 5 class Student 7 private: 8 string studiengang; 10 public: 11 string name; 12 int matrikelnummer; 1 void lernen(); 1 void testschreiben(); 15 }; int main() 18 { 1 student Marcus; 20 Marcus.name = "Marcus Page"; 21 Marcus.matrikelnummer = ; 22 Marcus.studiengang = "Mathematik"; 2 } I Fehler in Zeile 22: std::string student::studiengang is private 8 Klassenmethoden implementieren 1 class Student 2 { public: string name; 5 int matrikelnummer; 6 void Lernen(); 7 void TestSchreiben(); 8 }; 10 void Student::lernen() 11 { 12 cout << "oh mann..." << endl; 1 } 1 15 void Student::testSchreiben() 1 17 cout << "geschafft!" << endl; 18 } 1 20 int main() 21 { 22 Student Marcus; 2 Marcus.lernen(); 2 Marcus.testSchreiben(); 25 } I Ausgabe: oh mann... geschafft! I Implementierung wie bei anderen Funktionen I Zugehörigkeit zur Klasse durch (::) student :: testschreiben() I Deklaration auch in Header-Datei möglich (wie C) 0 Deklaration in Header-Datei I student.h 1 #include <string> class Student 6 public: 7 string name; 8 int matrikelnummer; void lernen(); 10 void testschreiben(); 11 }; I student.cpp 2 #include "student.h" 5 void Student::lernen() 7 cout << "oh mann..." << endl; 8 } 10 void Student::testSchreiben() 11 { 12 cout << "geschafft!" << endl; 1 } Student Marcus; 18 Marcus.lernen(); 1 Marcus.testSchreiben(); 20 } 1

3 Klassen auslagern 1/2 Methoden Implementieren 2 5 class Student 8 string name; int matrikelnummer; 10 void lernen(){cout << "oh mann..." << endl;}; 11 void testschreiben(){cout << "geschafft!" 12 << endl;}; Student Marcus; 18 Marcus.lernen(); 1 Marcus.testSchreiben(); 20 } I Implementierung direkt bei der Klassendefinition I nach Definition in geschweiften Klammern {} bietet sich an für kurze Methoden (get, set) häßlich und unübersichtlich für längere I Klasse in Datei auslagern 5 class Student 8 string name; int matrikelnummer; 10 void lernen(); 11 void testschreiben(); 12 }; 1 1 void Student::lernen() 1 16 cout << "oh mann..." << endl; 17 } 18 1 void Student::testSchreiben() 20 { 21 cout << "geschafft!" << endl; 22 } I mit include einbinden 1 #include "student6.cpp" 2 int main() { 5 Student Marcus; 6 Marcus.Lernen(); 7 Marcus.TestSchreiben(); 8 } I unschön (siehe nächste Folie) 2 Wozu Zugriff einschränken? 1/ Klassen auslagern 2/2 I besseres Vorgehen: Dateien student6.h student6.cpp prog.cpp I kompilieren mittels: g++ -c student6.cpp g++ -c prog.cpp g++ -o prog prog.o student.o I Analog zu C! class Ratio 6 public: 7 int z, n; //ratio = z/n 8 }; 10 int main() 11 { 12 Ratio myratio; 1 myratio.z = -1000; 1 myratio.n = 0; 15 } I wie sinnvolle Werte sicherstellen? (Z. 1) mögliche Fehlerquellen direkt ausschließen Programmierer muss sich um möglichst wenig kümmern 5

4 Wozu Zugriff einschränken? / Wozu Zugriff einschränken? 2/ 5 class Car 8 int wert; string farbe; 10 }; int main() 1 { 1 Car TestCar; 15 TestCar.wert = -1000; 16 int preis = TestCar.wert - 500; 17 } I wie sinnvolle Werte sicherstellen? (Z. 15) I was wenn sich Implementierung ändert? Preis könnte sich neu berechnen (Z. 16) zum Beispiel durch neue Version ) kompletten Code umschreiben 5 class Car 7 private: 8 int wert; string farbe; 10 public: 11 int getpreis(){return wert - 500;}; 12 void setpreis(int x); 1 15 void Car::setPreis(int x) 1 17 if(x < 500){wert = 500;} 18 else{wert = x;}; 1 } int main() 22 { 2 Car TestCar; 2 TestCar.setPreis(-1000); 25 cout << TestCar.getPreis() << endl; 26 } I Ausgabe: 0 I vermeidet inkonsistente Objekte I Änderung der Preisberechnung ) nur eine Methode umschreiben 6 7 Namensgleichheit warum so viel Kontrolle? I Fakt ist: alle Programmierer machen Fehler Code läuft beim ersten mal nie richtig I Großteil der Entwicklungszeit geht in Fehlersuche I Wie unterscheiden sich Profis von Anfängern? durch effizientere Fehlersuche I Compiler-Fehler sind leicht einzugrenzen es steht sogar die Zeilennummer dabei I Laufzeitfehler sind viel schwieriger zu finden Programm läuft, tut aber nicht das richtige manchmal fällt der Fehler ewig nicht auf ) sehr schlecht z.b. bei kommerzieller Software I ) möglichst viele Fehler durch Compiler abfangen I Methoden werden mit Verstand geschrieben I das sollte sich im Code wiederspiegeln gehören Daten strikt zu einer Klasse ) private Zugriff kontrollieren mittels get und set (reine Daten sollten immer private sein) 1 /* class definitions */ 2 void Student::print() { 5 cout << "Name: " << name << endl; 6 cout << "Mat. Nu.: " << matrikelnummer << endl; 7 } 8 void Car::print() 10 { 11 cout << "Wert: " << wert << endl; 12 cout << "Farbe: " << farbe << endl; 1 } Student Marcus; 18 Marcus.name = "Marcus Page"; 1 Marcus.matrikelnummer = ; 20 Car TestCar; 21 TestCar.farbe = "Dakota Beige"; 22 TestCar.wert = 10000; 2 2 Marcus.print(); 25 TestCar.print(); 26 } I Ausgabe: Name: Marcus Page Mat. Nu.: Wert: Farbe: Dakota Beige I Es wird immer die zugehörige Funktion aufgerufen Punktoperator: Marcus.print(); 8

5 Objekte inititalisieren I Klassen können viele Daten haben bislang: alle einzeln inititalisieren Übersicht Klassen I Klassen sind benutzerdefinierte Datentypen I zentrale Datenstruktur der OO Programmierung I Sie erlauben Datenkapselung I Sie erlauben Datenabstraktion Kenntnis der Implementierung nicht nötig warten / wiederverwenden / weitergeben leicht I ermöglichen kontrollierte Zugriffe verwende private Daten verwende get und set Methoden I komplette Objekte können nachgebaut werden enthalten mehr als nur die reinen Werte keine Probleme durch doppelte Namensgebung 5 class Car{ 7 int preis; 8 int speed; int age; 10 string farbe; /* public get and set methods */ Car TestCar; 18 TestCar.setPreis(1000); 1 TestCar.setFarbe("Dakota Beige"); 20 TestCar.setSpeed(150); 21 TestCar.setAge(); 22 } I mühsam besonders für Große Objekte I mühsam wenn mehrere Objekte angelegt werden I besser direkt bei der Initialisierung spezielle Methoden (Konstruktoren) heißen wie die Klasse selbst Konstruktoren 5 class Car{ 7 int preis; 8 int speed; int age; 10 string farbe; 11 public: 12 Car(int p, int s, int a, string f); 1 15 Car::Car(int p, int s, int a, string f) 1 17 preis = p; 18 speed = s; 1 age = a; 20 farbe = f; 21 } 22 2 int main() 2 { 25 Car TestCar1(1000, 150,, "Dakota Beige"); 26 Car TestCar2(700, 100, 6, "Feuerrot"); 27 } I Konstruktoren dienen zum initialisieren I werden automatisch aufgerufen Konstruktoren 2 1 /* class definition */ 2 Car::Car(int p, int s, int a, string f): preis(p), speed(s), age(a),farbe(f){} 5 6 Car::Car(int preis, int speed) 7 { 8 this->preis = preis; this->speed = speed; 10 this->age = 10; 11 this->farbe = "unknown"; 12 } I alle Konstruktoren heißen wie die Klasse unterscheiden sich durch ihre Signatur I Kurzschreibweise mittels Doppelpunkt (:) (Z. ) direkte Zuweisung an Membervariablen I Standardkonstruktor nur wenn es keinen anderen gibt I der Zeiger this Zeiger der auf das Objekt selbst zeigt kann lokale Namensgleichheiten auflösen nützlich wenn man das Objekt übergeben muss I Standardkonstruktor wenn kein anderer definiert I es kann mehrere in einer Klasse geben 52 5

6 Destruktoren 1 /* includes and namespace definition */ 2 class Car{ private: 5 6 /* private member definition */ 7 8 public: Car(int p, int s, int a, string f); 10 ~Car(){}; 11 }; 12 1 /* constructor definition */ Car TestCar1(1000, 150,, "Dakota Beige"); 18 Car TestCar2(700, 100, 6, "Feuerrot"); 1 } I werden beim Auflösen des Objektes aufgerufen Überladen I Überladen von Funktionen I Überladen von Operatoren I Was überlädt man? I heißen wie die Klasse mit Tilde ( ) I Standarddestruktor wird ggfs. automatisch generiert I kompliziertere Objekte müssen aufgeräumt werden I Objekt könnte auch Netzwerk-Socket sein muss geschlossen werden evtl. Buffer leeren Überladen von Funktionen class Car 7 int preis; 8 int speed; public: 10 Car(int p, int s){preis=p; speed=s;}; 11 void drive(); 12 void drive(int km); 1 15 void Car::drive() 1 17 cout << "10 km gefahren" << endl; 18 } 1 20 void Car::drive(int km) 21 { 22 cout << km << " km gefahren" << endl; 2 } 2 25 int main() 2 27 Car TestCar(1000,150); 28 TestCar.drive(); 2 TestCar.drive(5); 0 } I Ausgabe: 10 km gefahren 5 km gefahren 56 Überladen von Funktionen 2 class Real 7 double value; 8 public: Real(double v){value = v;}; 10 double getvalue(){return value;}; 11 void print(); 12 void print(int nks); 1 15 void Real::print() 1 17 cout.precision(6); 18 cout << getvalue() << endl; 1 } void Real::print(int nks) 22 { 2 cout.precision(nks); 2 cout << getvalue() << endl; 25 } int main() 28 { 2 Real myreal( ); 0 myreal.print(); 1 myreal.print(10); 2 } I Ausgabe:

7 Standardwerte class Real 7 double value; 8 public: Real(double v){value = v;}; 10 double getvalue(){return value;}; 11 void print(int nks = 10); 12 }; 1 1 void Real::print(int nks) 1 16 cout.precision(nks); 17 cout << getvalue() << endl; 18 } 1 20 int main() 21 { 22 Real myreal( ); 2 myreal.print(); 2 myreal.print(); 25 } Überladen von Funktionen I mehrere Funktionen gleichen Namens möglich analog zu Konstruktoren unterscheiden sich durch ihre Signatur I diesen Vorgang nennt man überladen I durch Aufruf wird die richtige ausgewählt Compiler erkennt dies über Signatur I Standardwerte können direkt gesetzt werden sinnvoll wenn Änderungen nur marginal nicht gut wenn z.b. andere Algorithmen nötig I Ausgabe: Überladen von Operatoren class Complex 7 double vreal; 8 double vimag; public: 10 Complex(double r, double i); 11 double getreal(){return vreal;}; 12 double getimag(){return vimag;}; 1 void setreal(double r){vreal = r;}; 1 void setimag(double i){vimag = i;}; 15 void print(); 16 }; Complex::Complex(double r, double i) 1 { 20 vreal = r; 21 vimag = i; 22 } 2 2 void Complex::print() 2 26 cout << getreal() << " + " << getimag() 27 << "i" << endl; 28 } 2 0 int main() 1 { 2 Complex mycomplex(, 5); mycomplex.print(); } I Ausgabe: + 5i 60 Überladen von Operatoren 2 class Complex 6 /* private data */ 8 Complex(double r = 0, double i = 0); Complex add(complex rhs); /* remaining public data */ 12 }; 1 1 /* constructor and print definition */ Complex Complex::add(Complex rhs) 17 { 18 double rtmp = getreal() + rhs.getreal(); 1 double itmp = getimag() + rhs.getimag(); 20 return Complex(rTmp, itmp); 21 } 22 2 int main() 2 { 25 Complex mycomplex(, 5), mycomplex2(2, 7); 26 Complex mycomplex; 27 mycomplex = mycomplex.add(mycomplex2); 28 mycomplex.print(); 2 mycomplex2.print(); 0 mycomplex.print(); 1 } I Ausgabe: + 5i 2 + 7i i 61

8 Überladen von Operatoren class Complex 6 /* private data */ 8 Complex(double r = 0, double i = 0); Complex operator+(complex rhs); /* remaining public data */ 12 }; 1 1 /* constructor and print definition */ Complex Complex::operator+(Complex rhs) 17 { 18 double rtmp = getreal() + rhs.getreal(); 1 double itmp = getimag() + rhs.getimag(); 20 return Complex(rTmp, itmp); 21 } 22 2 int main() 2 { 25 Complex mycomplex(, 5), mycomplex2(2, 7); 26 Complex mycomplex; 27 mycomplex = mycomplex + mycomplex2; 28 mycomplex.print(); 2 mycomplex2.print(); 0 mycomplex.print(); 1 } I Ausgabe: + 5i 2 + 7i i 62 Überladen von Operatoren I Operatoren selbst können überladen werden mittels Schlüsselwort operator wie im Beispiel operator+ I Methode add funktioniert auch ist aber viel mühsamer in der Verwendung I vgl. Syntax: mycomplex = mycomplex.add(mycomplex2); mycomplex = mycomplex + mycomplex2; I interne Auswertung: mycomplex = mycomplex.operator+(mycomplex2); I Verwendung wird übersichtlicher Programm wird lesbarer I Überladen sollte nur dafür verwendet werden (+) mit(-) zu überladen nicht ratsam I Operatoren von Standardtypen können nicht überladen werden (z.b. int) I Zusätzliche Operatoren können hier auch nicht definiert werden 6 Überladen von typecasts was kann überladen werden + - * / & ˆ & ~! = < > += -= *= /= %= ˆ= &= = »= «= ==!= <= >= && ++ ->*, -> [] () new new[] delete delete[] I unäre und binäre Operatoren I unterscheide zwischen Postfix und Präfix leicht unterschiedliche Syntax I operator kann natürlich auch überladen werden gemischte Arithmetik möglich z.b. complex + real 1 class complex 2 { /* private data */ public: 5 Complex(int r){vreal = r; vimag = 0;}; 6 operator int(); 7 /* remaining public data */ 8 }; 10 Complex::operator int() 11 { 12 return int(vreal); 1 } Complex mycomplex(, 5), mycomplex2(2, 7); 18 int x = 1; 1 mycomplex2.print(); 20 mycomplex2 = x; 21 mycomplex2.print(); 22 cout << x << endl; 2 x = mycomplex; 2 cout << x << endl; 25 } I Ausgabe: 2 + 7i 1 + 0i 1 I typecast in nativen Datentyp mittels operator type I andere Richtung mittels Konstruktor 6 65

9 Anmerkung strings I rückblickend: string ist eine Klasse mit vielen Methoden string überlädt Operatoren I für genauere Informationen API checken I Links: Klassendiagramm in UML I Unified Modeling Language I Modelierungssprache Softwaredesign zum 66

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

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

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

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

Hydroinformatik I: Klassen

Hydroinformatik I: Klassen Hydroinformatik I: Klassen Prof. Dr.-Ing. habil. Olaf Kolditz 1 Helmholtz Centre for Environmental Research UFZ, Leipzig 2 Technische Universität Dresden TUD, Dresden Dresden, 11. November 2016 1/20 Prof.

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

Listen. Arrays. Deklaration. Einfach verkettete Listen

Listen. Arrays. Deklaration. Einfach verkettete Listen Arrays Bisher Listen von Daten in Arrays gespeichert type* array = malloc(n*sizeof(type)); dyn. Verlängern und Kürzen am Ende möglich array = realloc(array,nnew); Zugriff auf j-ten Eintrag (Lesen/Schreiben)

Mehr

Mapra: C++ Teil 4. Felix Gruber. 6. Mai IGPM, RWTH Aachen. Felix Gruber (IGPM, RWTH Aachen) Mapra: C++ Teil 4 6.

Mapra: C++ Teil 4. Felix Gruber. 6. Mai IGPM, RWTH Aachen. Felix Gruber (IGPM, RWTH Aachen) Mapra: C++ Teil 4 6. Mapra: C++ Teil 4 Felix Gruber IGPM, RWTH Aachen 6. Mai 2015 Felix Gruber (IGPM, RWTH Aachen) Mapra: C++ Teil 4 6. Mai 2015 1 / 22 Themen vom letzten Mal Kompilieren mit Makefiles Ein-/Ausgabe über Dateien

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

Klassen. Kapitel Klassendeklaration

Klassen. Kapitel Klassendeklaration Kapitel 4 Klassen Wir kommen nun zu einem sehr wichtigen Aspekt der OOT: zu den Klassen. Eine Klasse ist eine vom Benutzer definierte Datenstruktur, eine Sammlung von Variablen (unterschiedlichen Typs)

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

Hydroinformatik I - WiSe 2018/2019 V5: Klassen

Hydroinformatik I - WiSe 2018/2019 V5: Klassen Hydroinformatik I - WiSe 2018/2019 V5: Klassen Prof. Dr.-Ing. habil. Olaf Kolditz 1 Helmholtz Centre for Environmental Research UFZ, Leipzig 2 Technische Universität Dresden TUD, Dresden 3 Center for Advanced

Mehr

Hydroinformatik I: Klassen

Hydroinformatik I: Klassen Hydroinformatik I: Klassen Prof. Dr.-Ing. habil. Olaf Kolditz 1 Helmholtz Centre for Environmental Research UFZ, Leipzig 2 Technische Universität Dresden TUD, Dresden Dresden, 27. November 2015 1/13 Prof.

Mehr

Programmieren in C/C++ und MATLAB

Programmieren in C/C++ und MATLAB Programmieren in C/C++ und MATLAB Christian-Albrechts-Universität zu Kiel CAU 8-1 Objektorientiertes Programmieren Die Programme, die bisher in diesem Kurs verwendet wurden, sind alle klein und überschaubar

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 Funktionsaufrufe Header-Files Funktionsaufrufe Warum Header-Files? inline #ifndef... #endif Funktionsaufrufe sind strukturell langsam Interner Overhead aufgrund des Stacks Zugriff auf Members einer Struktur

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

Aufbau von Klassen. class punkt {...

Aufbau von Klassen. class punkt {... Einführung in C++ Aufbau von Klassen Eine wird mit dem Schlüsselwort class eingeleitet, und endet mit einem Semikolon. Der Inhalt wird zwischen geschweiften Klammern geschrieben. class punkt {... ; Im

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

Programmierkurs C/C++

Programmierkurs C/C++ Blockkurs: "Einführung in C/C++" Programmierkurs C/C++ Donnerstag Sandro Andreotti andreott@inf.fu-berlin.de WS 2008/09 1 Structs Blockkurs: "Einführung in C/C++" 2 Structs sind Bündel von Variablen (unter

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

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

Programmierkurs C++ Konstruktor, Statische Methoden Namespaces

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

Mehr

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

Vorlesung Objektorientierte Programmierung Klausur

Vorlesung Objektorientierte Programmierung Klausur Prof. Dr. Stefan Brass 16. Februar 2007 Dipl.-Inform. Annett Thüring Institut für Informatik MLU Halle-Wittenberg Vorlesung Objektorientierte Programmierung Klausur Name: Matrikelnummer: Studiengang: Aufgabe

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

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

C++ und Pointer. Dyn. Speicherverwaltung 1/3. Dyn. Speicherverwaltung 3/3. Dyn. Speicherverwaltung 2/3

C++ und Pointer. Dyn. Speicherverwaltung 1/3. Dyn. Speicherverwaltung 3/3. Dyn. Speicherverwaltung 2/3 Dyn. Speicherverwaltung 1/ C++ und Pointer Dynamische Speicherverwaltung Pointer auf Objekte new, new[] delete, delete[] Speicherallokierung eines Obj bisher mit malloc type* name=(type*)malloc(length*sizeof(type))

Mehr

C++ und Pointer. Dyn. Speicherverwaltung 1/3. Dyn. Speicherverwaltung 3/3. Dyn. Speicherverwaltung 2/3

C++ und Pointer. Dyn. Speicherverwaltung 1/3. Dyn. Speicherverwaltung 3/3. Dyn. Speicherverwaltung 2/3 Dyn. Speicherverwaltung 1/ C++ und Pointer Dynamische Speicherverwaltung Pointer auf Objekte new, new[] delete, delete[] Speicherallokierung eines Obj bisher mit malloc type* name=(type*)malloc(length*sizeof(type))

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

Crashkurs C++ Wiederholung

Crashkurs C++ Wiederholung Crashkurs C++ Wiederholung #include int main(void) { int i, j; bool is_prime; for (j = 1; j < 1000; j += 2) { is_prime = true; for (i = 3; i

Mehr

Programmierkurs. SoSe Markus Geveler Inst. f. Applied Mathematics, TU Dortmund.

Programmierkurs. SoSe Markus Geveler Inst. f. Applied Mathematics, TU Dortmund. Programmierkurs SoSe 2013 Markus Geveler Inst. f. Applied Mathematics, TU Dortmund markus.geveler@math.tu-dortmund.de Lesson 5 Was machen wir heute hier? weiter mit Objektorientierter Programmierung viel

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

Mapra: C++ Teil 4. Felix Gruber, Michael Rom. 24. Mai 2016 IGPM. Felix Gruber, Michael Rom (IGPM) Mapra: C++ Teil 4 24.

Mapra: C++ Teil 4. Felix Gruber, Michael Rom. 24. Mai 2016 IGPM. Felix Gruber, Michael Rom (IGPM) Mapra: C++ Teil 4 24. Mapra: C++ Teil 4 Felix Gruber, Michael Rom IGPM 24. Mai 2016 Felix Gruber, Michael Rom (IGPM) Mapra: C++ Teil 4 24. Mai 2016 1 / 25 Themen vom letzten Mal Kompilieren mit Makefiles Ein-/Ausgabe über Dateien

Mehr

Programmieren in C++ Templates

Programmieren in C++ Templates Programmieren in C++ Templates Inhalt Templates Funktions- und Klassen-Templates Spezialisierung von Templates Generische Klassen Einbinden von Templates Instantiierung (implizit und explizit) Templates

Mehr

Informatik I (D-MAVT)

Informatik I (D-MAVT) Informatik I (D-MAVT) Übungsstunde 9 simon.mayer@inf.ethz.ch Distributed Systems Group, ETH Zürich Ablauf Nachbesprechung Übung 7 Besprechung/Vertiefung der Vorlesung Vorbesprechung Übung 9 Aufgabe 1:

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

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

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen Algorithmen und Datenstrukturen Tafelübung 03 Vererbung, Polymorphie, Sichtbarkeit, Interfaces Clemens Lang T2 11. Mai 2010 14:00 16:00, 00.152 Tafelübung zu AuD 1/26 Klassen und Objekte Klassen und Objekte

Mehr

3. Exkurs in weitere Arten der Programmierung

3. Exkurs in weitere Arten der Programmierung 3. Exkurs in weitere Arten der Programmierung Inhalt: Objektorientierte Programmierung in C++ Logische Programmierung in Prolog Peter Sobe Objektorientierte Programmierung in C++ C++ ist eine objektorientierte

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

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

1 Klassen und Objekte

1 Klassen und Objekte 1 Klassen und Objekte Datentyp - Spezifikation des Typs von Datenobjekten Datenstruktur - logische Ordnung von Elementen eines Datentyps - zur (effizienten) Speicherung, Verwaltung, Zugriff - auf die Elemente

Mehr

Einführung in die Programmierung Wintersemester 2018/19

Einführung in die Programmierung Wintersemester 2018/19 Einführung in die Programmierung Wintersemester 2018/19 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund : Inhalt Einführung in das konzept Attribute / Methoden

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

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

10.4 Konstante Objekte

10.4 Konstante Objekte 10.4 Konstante Objekte Genau wie bei einfachen Datentypen (int,double,...) kann man auch Objekte als const deklarieren. Eine solche Deklaration bedeutet, daß alle Attribute so behandelt werden, als wären

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

C++ - Objektorientierte Programmierung Konstante und statische Elemente

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

Mehr

Prof. W. Henrich Seite 1

Prof. W. Henrich Seite 1 Klasse - ist ein benutzerdefinierter Datentyp (Referenztyp) - hat Datenelemente - hat Methoden - Konstruktor ist spezielle Methode zum Erstellen eines Objektes vom Typ der Klasse (Instanz) - jede Klasse

Mehr

Objekte. Theorieteil. Inhaltsverzeichnis. Begriffe. Programmieren mit Java Modul 5. 1 Modulübersicht 3

Objekte. Theorieteil. Inhaltsverzeichnis. Begriffe. Programmieren mit Java Modul 5. 1 Modulübersicht 3 Programmieren mit Java Modul 5 Objekte Theorieteil Inhaltsverzeichnis 1 Modulübersicht 3 2 Klassen und Objekte 3 2.1 Klassen.................................... 4 2.2 Objektvariablen und Methoden.......................

Mehr

Einführung in den Einsatz von Objekt-Orientierung mit C++ I

Einführung in den Einsatz von Objekt-Orientierung mit C++ I Einführung in den Einsatz von Objekt-Orientierung mit C++ I ADV-Seminar Leiter: Mag. Michael Hahsler Syntax von C++ Grundlagen Übersetzung Formale Syntaxüberprüfung Ausgabe/Eingabe Funktion main() Variablen

Mehr

OOP und Angewandte Mathematik (Praktikum 1) Eine Einführung in die Anwendung objektorientierter Konzepte in der angewandten Mathematik

OOP und Angewandte Mathematik (Praktikum 1) Eine Einführung in die Anwendung objektorientierter Konzepte in der angewandten Mathematik (Praktikum 1) Eine Einführung in die Anwendung objektorientierter Konzepte in der angewandten Mathematik WS 2011/12 Inhalt Klassen in C++ Beispiele, mit Aufzeigen der Trennung von Spezifikation und Implementierung

Mehr

Objekte und Klassen. INE2 M. Thaler, Office TG ZHAW, M. Thaler, K. Rege, G. Burkert, E.

Objekte und Klassen. INE2 M. Thaler, Office TG ZHAW, M. Thaler, K. Rege, G. Burkert, E. Objekte und Klassen INE2 M. Thaler, tham@zhaw.ch Office TG208 http://www.zhaw.ch/~tham 1 Um was geht es? typedef struct Konto { double saldo; int id; Konto; Modul "konto" konto.h konto.c Prozedurale Programmierung:

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

Grundlagen der Programmierung in C Klassen

Grundlagen der Programmierung in C Klassen Grundlagen der Programmierung in C Klassen Wintersemester 2005/2006 G. Zachmann Clausthal University, Germany zach@in.tu-clausthal.de Das C++ Typsystem simple address pointer reference structured integral

Mehr

4. Objektorientierte Programmierung mit C++

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

Mehr

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

Präsenzübung zum Kurs Algorithmische Mathematik II

Präsenzübung zum Kurs Algorithmische Mathematik II Präsenzübung zum Kurs Algorithmische Mathematik II Averkov, Zeile, Jost Email: clemens.zeile@ovgu.de, felix.jost@ovgu.de Fakultät für Mathematik Otto-von-Guericke-Universität Magdeburg Sommersemester 2018

Mehr

Algorithmen und Datenstrukturen I. Blatt 2. Prof. Dr. Oliver Braun. Fakultät für Informatik und Mathematik Hochschule München

Algorithmen und Datenstrukturen I. Blatt 2. Prof. Dr. Oliver Braun. Fakultät für Informatik und Mathematik Hochschule München Algorithmen und Datenstrukturen I Blatt 2 Fakultät für Informatik und Mathematik Hochschule München Letzte Änderung: 18.03.2018 20:05 Aufgabe 1 struct, Parameterübergabe und const Das Repository für diese

Mehr

Themen der Übung. Methoden und Wrapperklassen. Vorteile von Methoden. Methoden. Grundlagen

Themen der Übung. Methoden und Wrapperklassen. Vorteile von Methoden. Methoden. Grundlagen Themen der Übung 1 Organisatorisches Methoden und Wrapperklassen 2 Methoden 3 Wrapper-Klassen CoMa-Übung IV TU Berlin 07.11.2012 Organisatorisches: Im Pool nur auf die Abgabeliste setzen, wenn ihr wirklich

Mehr

C++ Klassen weitere Funktionen

C++ Klassen weitere Funktionen C++ Klassen weitere Funktionen Übersicht static Elemente const Elemente Zusätzliches zu Konstruktoren Kopier-Konstruktor Konvertierung-Konstruktor Initialisierungslisten Friend Funktionen 2 Statische Klassenkomponenten

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

Methoden und Wrapperklassen

Methoden und Wrapperklassen Methoden und Wrapperklassen CoMa-Übung IV TU Berlin 06.11.2012 CoMa-Übung IV (TU Berlin) Methoden und Wrapperklassen 06.11.2012 1 / 24 Themen der Übung 1 Methoden 2 Wrapper-Klassen CoMa-Übung IV (TU Berlin)

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

Programmieren in C++ Überladen von Methoden und Operatoren

Programmieren in C++ Überladen von Methoden und Operatoren Programmieren in C++ Überladen von Methoden und Operatoren Inhalt Überladen von Methoden Überladen von Operatoren Implizite und explizite Konvertierungsoperatoren 7-2 Überladen von Methoden Signatur einer

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

Polymorphie. Überladen. Definition Methodennamen überladen Konstruktoren überladen Operatoren überladen Beispiele. Dr.

Polymorphie. Überladen. Definition Methodennamen überladen Konstruktoren überladen Operatoren überladen Beispiele. Dr. Polymorphie Überladen Definition Methodennamen überladen Konstruktoren überladen Operatoren überladen Beispiele Dr. Beatrice Amrhein Definition 2 Definition: Überladen (von Namen) Überladen bedeutet, dass

Mehr

Informatik 1 MaVt FS Übung 10

Informatik 1 MaVt FS Übung 10 Informatik 1 MaVt FS 2010 Übung 10 Claudia Kuster ckuster@inf.ethz.ch Mittwoch 13-15h HG E 27 http://graphics.ethz.ch/~ckuster/teaching/mavt_info1_2010.html Vorlesung Objektorientierte Programmierung Konstruktoren

Mehr

7. Objektorientierung. Informatik II für Verkehrsingenieure

7. Objektorientierung. Informatik II für Verkehrsingenieure 7. Objektorientierung Informatik II für Verkehrsingenieure Klassen, Objekte und Attribute Buslinie und Haltestellen 3 Haltestellen und deren Eigenschaften Bauplan einer Haltestelle (Struktur) Konkrete

Mehr

4 5 void swap(int* px, int* py) { 6 int tmp = *px; 7 *px = *py; 8 *py = tmp; 9 }

4 5 void swap(int* px, int* py) { 6 int tmp = *px; 7 *px = *py; 8 *py = tmp; 9 } Was ist eine Referenz? Referenzen Definition Unterschied zwischen Referenz und Pointer direktes Call by Reference Referenzen als Funktions-Output type& 5 int main() { 6 int var = 5; 7 int &ref = var; 8

Mehr

3. Klassen Statische Komponenten einer Klasse. Klassenvariablen

3. Klassen Statische Komponenten einer Klasse. Klassenvariablen Klassenvariablen Wir wollen die Zahl der instantiierten Studentenobjekte zählen. Dies ist jedoch keine Eigenschaft eines einzelnen Objektes. Vielmehr gehört die Eigenschaft zu der Gesamtheit aller Studentenobjekte.

Mehr

Einführung in die Objektorientierte Programmierung Vorlesung 10: Zugriffskontrolle. Sebastian Küpper

Einführung in die Objektorientierte Programmierung Vorlesung 10: Zugriffskontrolle. Sebastian Küpper Einführung in die Objektorientierte Programmierung Vorlesung 10: Zugriffskontrolle Sebastian Küpper Namenskapselung durch Pakete Klassen können in Java in Paketen gebündelt werden, Schlüsselwort package

Mehr

Kap. 11 Objektorientierung: ein Beispiel

Kap. 11 Objektorientierung: ein Beispiel Kap. 11 Objektorientierung: ein Beispiel Dr. Norbert Spangler / Programmieren 2 26.12.2015 1 Grundprinzip der Datentypen und Klassen Name des Typs Elementare Typen int bool Klasse Name (frei wählbar) Daten

Mehr

Verwendung von Klassen in C++

Verwendung von Klassen in C++ Verwendung von Klassen in C++ Heute: Benutzerdefinierte Datentypen (Konkrete Klassen) Vektoren Komplexe Zahlen Adressdatei Morgen: Objektorientierte Programmierung (Abstrakte Klassen) Vererbung Polymorphie

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

Programmierkurs C/C++

Programmierkurs C/C++ Blockkurs: "Einführung in C/C++" Programmierkurs C/C++ Freitag Sandro Andreotti andreott@inf.fu-berlin.de WS 2008/09 1 Blockkurs: "Einführung in C/C++" 2 Vererbung Klassen erben die Member von Basisklassen:

Mehr

Objektorientierung (OO)

Objektorientierung (OO) Objektorientierung (OO) Objekte haben Zustände (oder Eigenschaften, Attribute) und Verhalten Zustände: Objektvariablen (in Java auch fields) Verhalten (oder Aktionen): Methoden (methods, Funktionen) members

Mehr

Wintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf Seite 1 von 29

Wintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf  Seite 1 von 29 Kapitel 2 Einführung in C++ Seite 1 von 29 C++ Zeichensatz - Buchstaben: a bis z und A bis Z. - Ziffern: 0 bis 9 - Sonderzeichen: ; :,. # + - * / % _ \! < > & ^ ~ ( ) { } [ ]? Seite 2 von 29 Höhere Elemente

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

Java Einführung Methoden. Kapitel 6

Java Einführung Methoden. Kapitel 6 Java Einführung Methoden Kapitel 6 Inhalt Deklaration und Aufruf von Methoden Lokale und globale Namen (Bezeichner) Sichtbarkeit und Lebensdauer von Variablen in Methoden Überladen von Methoden 2 Methoden

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

Konstruktor/Destruktor

Konstruktor/Destruktor 1/23 Konstruktor/Destruktor 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 3/23 Inhaltsverzeichnis 1 2

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

1 #include <iostream> 2 3 int main() { 4 std::cout << "Hello World!\n"; 5 return 0; 6 }

1 #include <iostream> 2 3 int main() { 4 std::cout << Hello World!\n; 5 return 0; 6 } Was ist C++ C++ Was ist C++? Wie erstellt man ein C++ Programm? Hello World! mit C++ Weiterentwicklung von C Entwicklung ab 1979 bei AT&T Entwickler: Bjarne Stroustrup C++ ist abwärtskompatibel zu C keine

Mehr

Objektorientierte Programmierung mit Java. Grundlagen Übersicht. Programmiersprachen

Objektorientierte Programmierung mit Java. Grundlagen Übersicht. Programmiersprachen Objektorientierte Programmierung mit Grundlagen 27.10.2008 1 Übersicht 27.10.2008 2 1 Übersicht Klassen und Objekte in - Klassen - Objekte - Klassen - Objekte 27.10.2008 3 Übersicht 27.10.2008 4 2 Einführung

Mehr

Programmieren in C++ Klassen

Programmieren in C++ Klassen Programmieren in C++ Klassen Inhalt Klassen (vertieft) Destruktor Konstruktoren Move-Semantik und Rechtswert-Referenzen (C++11) C++11 Features Prof. Dr. C. Stamm Programmieren in C++, FS 13 4-2 Implementierung

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

Programmierkurs. Steffen Müthing. November 30, Interdisciplinary Center for Scientific Computing, Heidelberg University

Programmierkurs. Steffen Müthing. November 30, Interdisciplinary Center for Scientific Computing, Heidelberg University Programmierkurs Steffen Müthing Interdisciplinary Center for Scientific Computing, Heidelberg University November 30, 2018 Objektorientiertes Programmieren Kapselung const und Klassen Initialisierung und

Mehr

C++ kompakt - Teil 1. Danke an Matthias Biedermann Markus Geimer

C++ kompakt - Teil 1. Danke an Matthias Biedermann Markus Geimer C++ kompakt - Teil 1 Danke an Matthias Biedermann Markus Geimer Programmorganisation (1) Ein C++ Projekt kann auf mehrere Quelldateien verteilt werden. Dabei muss in genau einer Quelldatei die Funktion

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

Mapra: C++ Teil 3. Felix Gruber. 29. April IGPM, RWTH Aachen. Felix Gruber (IGPM, RWTH Aachen) Mapra: C++ Teil 3 29.

Mapra: C++ Teil 3. Felix Gruber. 29. April IGPM, RWTH Aachen. Felix Gruber (IGPM, RWTH Aachen) Mapra: C++ Teil 3 29. Mapra: C++ Teil 3 Felix Gruber IGPM, RWTH Aachen 29. April 2015 Felix Gruber (IGPM, RWTH Aachen) Mapra: C++ Teil 3 29. April 2015 1 / 11 Themen vom letzten Mal Debuggen mit gdb Zusammengesetzte Datentypen

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

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

Programmieren in C++

Programmieren in C++ Programmieren in C++ SS 2012 Vorlesung 5, Dienstag 5. Juni 2012 (Klassen, Objekte, Methoden, new & delete) Prof. Dr. Hannah Bast Lehrstuhl für Algorithmen und Datenstrukturen Institut für Informatik Universität

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

Tag 7 Repetitorium Informatik (Java)

Tag 7 Repetitorium Informatik (Java) Tag 7 Repetitorium Informatik (Java) Dozent: Patrick Kreutzer Lehrstuhl für Informatik 2 (Programmiersysteme) Friedrich-Alexander-Universität Erlangen-Nürnberg Wintersemester 2017/2018 Informatik-Repetitorium

Mehr

Programmieren für Wirtschaftswissenschaftler SS 2015

Programmieren für Wirtschaftswissenschaftler SS 2015 DEPARTMENT WIRTSCHAFTSINFORMATIK FACHBEREICH WIRTSCHAFTSWISSENSCHAFT Programmieren für Wirtschaftswissenschaftler SS 2015 Lucian Ionescu Blockveranstaltung 16.03 27.3.2015 4. Methoden Agenda Methoden Motivation

Mehr