I dyn. Erzeugung von Objekten mit new statt malloc. I Vergleich zu C. I Erzeugung von Arrays mittel new[] I Speichergröße muss nicht angegeben werden
|
|
- Dennis Beutel
- vor 6 Jahren
- Abrufe
Transkript
1 Pointer mit new I dyn. Erzeugung von Objekten mit new statt malloc C++ und Pointer I Schlüsselwort new I Schlüsselwort delete I Unterschied zu malloc und free int* i1 = new int; *i1 = 25; I Vergleich zu C int* i2 = malloc(sizeof(int)); *i1 = 25; I Erzeugung von Arrays mittel new[] int* feld = new int[8]; I Vergleich zu C int* feld2 = malloc(8*sizeof(int)); I Speichergröße muss nicht angegeben werden Freigabe mit delete I Freigeben von Objekten mit delete statt free int* i1 = new int; delete i1; I Vergleich zu C int* i2 = malloc(sizeof(int)); free(i2); I Freigabe von Arrays mittel delete[] int* feld = new int[8]; delete[] feld; I Vergleich zu C int* feld2 = malloc(8*sizeof(int)); free(feld2); I nicht verwechseln: new, new[], delete, delete[] I schlecht: int* t = new int[]; delete t; I vielleicht sogar noch schlechter: int* t = new int; delete[] t; Pointer auf Objekte 4 class Test 6 public: 7 Test() 8 {cout << "constructor" << endl;} 9 ~Test() 10 {cout << "destructor" << endl;} 11 void Hello() {cout << "Hello World!" << endl;} 1 }; int main() 16 { 17 Test* t1 = new Test(); 18 t1->hello(); 19 delete t1; 20 t1 = 0; 21 delete t1; 22 2 Test* t2 = (Test*) malloc(sizeof(test)); 24 t2->hello(); 25 free(t2); 26 } I Ausgabe: constructor Hello World! destructor Hello World! I Zeiger nach delete auf 0 setzen (Z. 20) 87 88
2 Zusammenfassung I new legt Speicher an und ruft Konstruktor auf Konstruktor kann sogar ausgewählt werden Test* t1 = new Test(x,y,z); new[] ruft immer den Standardkonstruktor auf I Rückgabewert ist der richtige Zeiger I Speichergröße muss nicht angegeben werden I malloc legt nur Speicher an keine Initialisierung durch malloc Konstruktor kann nicht mehr aufgerufen werden I Speicher in Bytes muss angegeben werden I Rückgabewert ist immer void* explizites type-cast notwendig (bei nativen Typen optional) I delete löscht Speicher und ruft Destruktor auf I free gibt nur Speicher frei Destruktor kann nicht mehr aufgerufen werden Referenzen I Beispielcode I Unterschied Referenz <-> Pointer I wann verwendet man was? I Fazit: Verwende new, delete mit C++ I Verwende malloc, free mit C I niemals die beiden vermischen z.b. new mit free freigeben I es gibt keine Alternative zu realloc z.b. vector verwenden Was ist eine Referenz I Referenzen sind Aliasnamen I Erzeugung mittels (&) nicht verwechseln mit Adressoperator ähnlich zu (*) int &someref = someint; I Referenz verhält sich wie Zielobjekt 4 int main() 6 int intone; 7 int &reference = intone; 8 9 intone = 5; 10 cout << "intone: " << intone << endl; 11 cout << "reference: " << reference << endl; 1 reference = 7; 14 cout << "intone: " << intone << endl; 15 cout << "reference: " << reference << endl; 16 } I Ausgabe: intone: 5 reference: 5 intone: 7 reference: 7 Der Adressoperator bei Referenzen 4 int main() 6 int intone; 7 int &reference = intone; 8 9 intone = 5; 10 cout << "intone: " << intone << endl; 11 cout << "reference: " << reference << endl; 1 cout << "&intone: " << &intone << endl; 14 cout << "&reference: " << &reference << endl; 15 } I Ausgabe: intone: 5 reference: 5 &intone: 0x7fff5fbffa2c &reference: 0x7fff5fbffa2c I Adressen der beiden Variablen sind identisch I Referenzen werden bei Erzeugung initialisiert dienen nur als Synonyme für ihr Ziele 91 92
3 Funktionsargumente als Zeiger übergeben 4 void swap(int *px, int*py) 6 int tmp; 7 tmp = *px; 8 *px = *py; 9 *py = tmp; 10 cout << "swap: " << *px << ", " << *py << endl; 11 } 1 int main() 14 { 15 int x=5, y=10; 16 swap(&x, &y); 17 cout << "main: " << x << ", " << y << endl; 18 } I Ausgabe: swap: 10, 5 main: 10, 5 I mühsam durch ständiges Dereferenzieren I Vorbereitungen für Aufruf nötig Funktionsargumente als Referenz übergeben 4 void swap(int &rx, int &ry) 6 int tmp; 7 tmp = rx; 8 rx = ry; 9 ry = tmp; 10 cout << "swap: " << rx << ", " << ry << endl; 11 } 1 int main() 14 { 15 int x=5, y=10; 16 swap(x, y); 17 cout << "main: " << x << ", " << y << endl; 18 } I Ausgabe: swap: 10, 5 main: 10, 5 I Syntax sehr viel direkter (leichter) I genauso leistungsfähig I keine Vorbereitungen in main nötig 9 94 Neuzuweisungen Übersicht Referenzen I Vorsicht beim Versuch einer Neuzuweisung 4 int main() 6 int x; 7 int &ref = x; 8 9 x = 5; 10 cout << "x: " << x << endl; 11 cout << "ref: " << ref << endl; 1 int y = 8; 14 ref = y; //not what you think cout << "x: " << x << endl; 17 cout << "y: " << y << endl; 18 cout << "ref: " << ref << endl; 19 } I Ausgabe: x: 5 ref: 5 x: 8 y: 8 ref: 8 I Referenz wirkt wirklich nur als Alias Neuzuweisung ist nicht möglich I Refenzen sind Synonyme für Variablen I sehr leichte Syntax I fast so leistungsfähig wie Zeiger I Initialisierung mit (&) nicht mit Adressoperator verwechseln I immer direkt initialisieren I nicht versuchen Referenzen erneut zuzuweisen I wie bei Zeigern auf Lebensdauer achten: 1 int& f() 2 { int x = 4711; 4 5 /*Achtung: Referenz auf lokale Variable*/ 6 return x; 7 } I Syntax kann Programmablauf verschleiern bei Pointern ist immer klar was passiert I keine vollsändige Alternative zu Pointern keine Mehrfachzuweisung Referenzen dürfen nicht 0 sein kein dynamischer Speicher möglich keine Felder von Referenzen möglich 95 96
4 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 ist-ein-beziehung I Jede Klasse definiert einen Datentyp Objekte können mehrere Typen haben abgeleitete Klassen haben mindestens zwei I In C++ kann der jeweils passende Typ verwendet werden Diese Eigenschaft nennt man Polymorphie (griech. Vielgestaltigkeit) in Code gegossen I Wir betrachten die Klasse Sortierverfahren: 1 class Sortierverfahren{ 2 protected: int N; //Anzahl 4 int* a; //zu sort. Zahlen 5 public: 6 Sortierverfahren(); 7 Sortierverfahren(int); 8 virtual ~Sortierverfahren(){delete[] a;}; 9 virtual void sort(){cout << "Hallo" << endl;}; 10 void ausgabe(); 11 }; I und die Methode sortme: 1 void sortme(sortierverfahren &s) 2 { s.sort(); 4 s.ausgabe(); 5 } I sortme übernimmt Referenz auf Sortierverfahren I virtuelle Methoden durch Schlüsselwort virtual ermöglichen späte Bindung (late binding) Einsprungadresse wird zur Laufzeit ermittelt dies geschieht intern mittels V-tables in Code gegossen - 2 I restliche Implementierung: 1 Sortierverfahren::Sortierverfahren(int n) 2 { N = n; 4 a = new int[n]; 5 for (int i = 0; i<n; i++) 6 a[i] = 1+rand() % 99; 7 } 8 9 void Sortierverfahren::ausgabe() 10 { 11 cout << "aktuelle Sortierung: " << endl; for (int i = 0; i<n; i++) 1 cout << a[i] << endl; 14 } I und abgeleitete Klasse BubbleSort: 1 class BubbleSort : public Sortierverfahren{ 2 public: BubbleSort(int N):Sortierverfahren(N){}; 4 void sort(); 5 }; 6 7 void BubbleSort::sort() 8 { 9 for (int i = N-1; i>=1; i--){ 10 for(int j = 0; j<i; j++) 11 {if (a[j] > a[j+1]) swap(a[j], a[j+1]);} } 1 }
5 in Code gegossen - Polymorphie- 2 I BubbleSort redefiniert die Methode sort I Nun ist BubbleSort auch ein Sortierverfahren I ) folgende Anweisung macht Sinn Sortierverfahren *mysort = new BubbleSort(10); I Bei Zeigern und Referenzen können alle Typen des jeweiligen Objektes verwendet werden I intern wird Zeiger auf Sortierverfahren gespeichert zunächst einmal kann nur auf diese Methoden und Felder zugegriffen werden I Frage: Was passiert bei Aufruf von mysort->sort()? I Antwort: genau das Richtige! durch Einsatz virtueller Methoden V-table wird angelegt zur Laufzeit wird entsprechende Funktion aufgerufen I Aufrufender Code: 1 void sortme(sortierverfahren& s) 2 { s.sort(); 4 s.ausgabe(); 5 } 6 7 int main() 8 { 9 BubbleSort mysort(10); 10 mysort.ausgabe(); 11 sortme(mysort); } I Ausgabe: aktuelle Sortierung: aktuelle Sortierung: (Zufallszahlen) I Methode sortme kennt nur s (Referenz auf Sortierverfahren) I Bei Aufruf von sort wird Einsprungstelle aus V-table gelesen I es wird tatsächlich sort von BubbleSort aufgerufen I Achtung: Klappt nur bei Zeigern und Referenzen Andere Aspekte der Polymorphie was es zu wissen gibt I virtuelle Methoden erlauben Polymorphie abgeleitetes Objekt verhält sich wie Basisobjekt I dies geschieht durch dynamische Bindung I Methoden als virtuell deklarieren wenn sie polymorph verwendet werden sollen I in diesem Fall auch virtueller Destruktor Objekt wird sonst evtl. nicht richtig bereinigt I Konstruktoren können nicht virtuell sein I in Java sind Methoden standardmäßig virtuell I in C++ explizit durch Benutzer I generell: Erzeugung von V-tables kostet Code wird dadurch langsamer virtual macht ohne Polymorphie keinen Sinn I polymorphes Verhalten ermöglicht Behandlung des abgeleiteten Objektes wie ein Basisobjekt Compiler betrachtet das Objekt als Basisobjekt (Slicing) Zugriff auf zusätzliche Methoden nicht möglich I Zugriff auch nicht sinnvoll I zumindest programmiertechnisch unsauber I Problem: was wenn man doch Zugriff braucht? I Lösung: dynamic cast fortbewegungsmittel *A = new car(); car *mycar = dynamic cast <car *> (A); mycar->fahren(); I gibt Nullpointer zurück wenn cast fehlschlägt I nur bei polymorph verwendeten Objekten möglich I es gibt auch noch andere casts: static cast const cast reinterpret cast
6 Beispiel abstrakte Datentypen I Die Methode sort von Sortierverfahren ist sinnlos bietet keinerlei Sortierung Objekte können in Wahrheit nicht sortieren I überhaupt sind Objekte dieser Klasse sinfrei von Sortierverfahren wird nur abgeleitet I das sollte sich auch im Code wiederspiegeln I abstrakte Klassen bieten genau das dienen als Schablone für abgeleitete Klassen können gemeinsame Funktionen implementieren müssen nicht alle Details implementieren I abstrakte Datentypen können nicht instanziiert werden! erleichtert Fehlersuche I abstrakte Klasse Sortierverfahren: 1 class Sortierverfahren{ 2 protected: int N; //Anzahl 4 int* a; //zu sort. Zahlen 5 public: 6 Sortierverfahren(); 7 Sortierverfahren(int); 8 virtual ~Sortierverfahren(){delete[] a;}; 9 virtual void sort() = 0; 10 void ausgabe(); 11 }; I abstrakte Methode in Zeile 9 I Abstraktion durch =0 nach virtueller Methode I AM müssen nicht implementiert werden I AM nennt man auch rein virtuell I durch eine AM wird die ganze Klasse abstrakt abstrakte Kl. können nicht instanziiert werden Beispiel I abgeleitete Klasse InsertionSort: 1 class InsertionSort : public Sortierverfahren{ 2 public: InsertionSort(int N):Sortierverfahren(N){}; 4 void sort(); 5 }; 6 7 void InsertionSort::sort() 8 { 9 int key,i; 10 for(int j=1;j<n;j++) 11 { key=a[j]; 1 i=j-1; 14 while(a[i]>key && i>=0) 1 16 a[i+1]=a[i]; 17 i--; 18 } 19 a[i+1]=key; 20 } 21 } I InsertionSort redefiniert die AM sort alle AM müssen redefiniert werden Beispiel 1 int main() 2 { BubbleSort mysort(10); 4 InsertionSort mysort2(10); 5 Sortierverfahren testsort(10); 6 mysort.ausgabe(); 7 mysort2.ausgabe(); 8 sortme(mysort); 9 sortme(mysort2); 10 } I Ausgabe: aktuelle Sortierung: aktuelle Sortierung: aktuelle Sortierung: aktuelle Sortierung: (Zufallszahlen) I Eigentlich gelogen: Fehler in Zeile 5 error: cannot declare variable testsort to be of abstract type Sortierverfahren
7 Mehrfachvererbung Übersicht - abstrakte Klassen I C++ erlaubt Vererbung mit multiplen Basisklassen I dienen als Schablone / Schnittstelle für Vererbung I können nicht instanziiert werden Fehlerfindung durch Compiler! I Was Sie tun sollten: Verwenden Sie AK für gemeinsame Funktionen (delegieren nach oben) jedoch nur wenn sie für alle Kinder relevant sind redefinieren Sie alle abstrakten Methoden definieren Sie alle Methoden abstrakt die zu redefinieren sind I Syntax: class Auto : public Wertgegenstand, public Fortbew{... } I Vertieft Konzept der Objektorientierung erhöht Wiederverwendbarkeit von Code I Problem: Mehrdeutigkeiten (nächste Folie) Diamantvererbung Diamantvererbung 2 I Es könnte eine gemeinsame Oberklasse geben I Klasse Matrix hat ein das Feld int n I beide abgeleiteten Klassen erben int n I SPD erbt von zwei Klassen SPD hat int n doppelt I Lösung 1: Zugriff mittels vollem Namen symmmat::n bzw. posdefmat::n I unschön, da Speicher dennoch doppelt unübersichtlich schlimmstenfalls sogar verschiedene Werte I Lösung 2: virtuelle Basisklassen class symmmat : virtual public matrix class posdefmat : virtual public matrix I führt zu Mehrdeutigkeit Felder und Methoden sind mehrfach vorhanden unklar worauf zugegriffen werden soll Speicherverschwendung schlimmstenfalls: Objekte inkonsistent I virtuelle Basisklasse wir nur einmal eingebunden I Literatur: Uneinigkeit ob Mehrfachvererbung sinnvoll I Konzept nicht möglich in Java, C# 111 1
8 konstante Funktionen I konstante Funktionen ändern die Klasse nicht sonstiges über Klassen I Deklaration mit nachgestelltem const nach Methodenname und vor Semikolon I zum Beispiel in car : void setage(int a); int getage() const; I set-methoden können natürlich nicht konstant sein I const I static I inline I Ziele: möglichst kontrollierter Zugriff Fehler schon zur Kompilierung abfangen richtigen Gebrauch der Klasse vorschreiben ) verhindert inkonsistente Objekte I guter Stil: möglichst viel als const deklarieren ) Fehler vor der Fertigstellung abfangen I ähnlich zu Zugriffskontrolle mit private, public ein Beispiel 2 #include <string> using namespace std; 4 5 class car 6 { 7 private: 8 int wert; 9 int age; 10 public: 11 int getage() const; void setage(int age) {this->age = age;}; 1 }; int car::getage() const 16 { 17 return age++; 18 } int main() 21 { 22 car TestCar; 2 TestCar.setAge(10); 24 cout << TestCar.getAge() << endl; 25 } I Fehler in Methode getage() increment of data-member car::age in read-only structure I Wichtig: const auch in Methodendefinition gehört zur Signatur 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 Liest die Methode nur Daten aus ) const Zugriff kontrollieren mittels get und set
9 inline Funktionen I Traditionell in der OO: viele kleine Methoden man denke an get, set I Problem : Funktionsaufrufe sind nicht umsonst I Ausweg : inline Funktionen Code wird direkt eingefügt (ähnlich zu Makros) 4 inline int min(int a, int b) 6 return a<b? a : b; 7 } 8 9 int main() 10 { 11 cout << min(4, ) << endl; cout << min(, 4) << endl; 1 } I Umsetzung durch Compiler 4 int main() 6 cout << 4<? 4 : << endl; 7 cout << <4? : 4 << endl; 8 } inline Funktionen 2 I Deklaration durch Schlüsselwort inline I Compiler versucht Code direkt einzufügen inline-deklaration für Compiler nicht zwingend Compiler wägt ab und entscheidet nach Nutzen ) evtl. hat inline nicht gewünschten Effekt I Vorteile: Code kann schneller werden (kein Overhead) Optimierungspotential Berechnungen zur Kompilierzeit möglich I Nachteile: Code wird länger ausführbare Datei wird größer I Fazit: inline bei kurzen Funktionen die oft verwendet werden statische Daten I Daten die zu keinem konkreten Objekt gehören die Daten gehören zu der Klasse sie existieren nur einmal für die gesamte Klasse sie sind dennoch an die Klasse gebunden 4 class mitarbeiter{ 5 private: 6 string name; 7 string Abteilung; 8 public: 9 static int count; 10 mitarbeiter(){++count;}; 11 }; 1 int mitarbeiter::count = 0; int main(){ 16 mitarbeiter tom; 17 mitarbeiter bob; 18 cout << mitarbeiter::count << endl; 19 cout << tom.count << endl; 20 } I Ausgabe: 2 2 I Deklaration mit Schlüsselwort static I Initialisierung außerhalb von Methoden / Klassen I Zugriff über Klassenname oder Objekt (public) I globale Daten ) möglichst sparsam verwenden 119 statische Daten 2 I private static Daten können nur über Klassennamen verwendet werden I Zugriff nur über statische Funktionen I statische Funktionen können nur auf statische Daten zugreifen 4 class mitarbeiter{ 5 private: 6 string name; 7 string Abteilung; 8 static int count; 9 public: 10 static int getcount(){return count;}; 11 mitarbeiter(){++count;}; }; 1 14 int mitarbeiter::count = 0; int main(){ 17 mitarbeiter tom; 18 mitarbeiter bob; 19 cout << mitarbeiter::getcount() << endl; 20 } I Ausgabe: 2 0
10 noch ein Beispiel 4 enum Art {BRUCH, FLOAT}; 5 6 class ratio{ 7 private: 8 int z, n; 9 static Art ausgabeart; 10 public: 11 ratio(int a, int b){z=a; n = b;}; static int setzeausgabeart(art art); 1 void print(); 14 }; Art ratio::ausgabeart = BRUCH; int ratio::setzeausgabeart(art art) 19 {ausgabeart = art;} void ratio::print() 22 { 2 if (ausgabeart == BRUCH) 24 {cout << z << "/" << n << endl;} 25 else 26 {cout << double(z)/double(n) << endl;} 27 } int main(){ 0 ratio myratio1(,5); 1 ratio myratio2(1,7); 2 myratio1.print(); myratio2.print(); 4 ratio::setzeausgabeart(float); 5 myratio1.print(); 6 myratio2.print(); 7 } I Ausgabe: /5 1/ und weiter? I templates I Standardbibliothek I auto ptr I Headerfiles I exception handling I Softwaredesign / UML I Programmierprojekt 1 2
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
Mehr3D Programmierpraktikum: Einführung in C++ - Teil 2
3D Programmierpraktikum: Einführung in C++ - Teil 2 Praktikum 3D Programmierung Sebastian Boring, Otmar Hilliges Donnerstag, 4. Mai 2006 LMU München Medieninformatik Boring/Hilliges 3D Programmierpraktikum
MehrProgrammierkurs 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
Mehr11.3 Virtuelle Methoden
11.3 Virtuelle Methoden Überdeckte Methoden: Betrachten wir noch einmal unsere Klassen Employee und Manager. class Employee void print() const cout
Mehr12. Vererbung. Prof. Dr. Markus Gross Informatik I für D-ITET (WS 03/04)
12. Vererbung Prof. Dr. Markus Gross Informatik I für D-ITET (WS 03/04)!Vererbung Konzept!Protected Section!Virtuelle Mitgliedsfunktionen!Verwendung von Vererbung Copyright: M. Gross, ETHZ, 2003 2 Vererbung!
MehrRepetitorium 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
MehrProf. 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
MehrC++ - Einführung in die Programmiersprache Polymorphismus und Vererbung. Eltern
C++ - Einführung in die Programmiersprache Polymorphismus und Vererbung Eltern Kind Kind Vererbung Definition von Klassen auf Basis von bestehenden Klassen. Implementierung von ist ein. bildet ein hierarchisches
Mehr1. Grundlegende Eigenscha5en 2. Redefini+on 3. Polymophie 4. Mehrfachvererbung
K05 Vererbung & Polymorphie in C++ 1. Grundlegende Eigenscha5en 2. Redefini+on 3. Polymophie 4. Mehrfachvererbung 2 Vererbung in C++: Grundlagen Analog zu Java unterstützt C++ das Konzept der Vererbung:
MehrVorkurs C++ Programmierung
Vorkurs C++ Programmierung Klassen Letzte Stunde Speicherverwaltung automatische Speicherverwaltung auf dem Stack dynamische Speicherverwaltung auf dem Heap new/new[] und delete/delete[] Speicherklassen:
MehrEinstieg 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
MehrAbend 7 Vererbung und Polymorphie, Abstrakte Klassen
Abend 7 Vererbung und Polymorphie, Abstrakte Klassen Ziel, Inhalt Wir sehen heute weitere Beispiele für Polymorphie und virtuelle Methoden. Wir lernen auch Klassen kennen, von denen man keine Objekte erzeugen
MehrEinführung in C++ Vererbung und Polymorphismus
Einführung in C++ Vererbung und Polymorphismus Ablauf Grundlegende Eigenschaften der Vererbung in C++ Redefinition und Namensauflösung Eine einfache Klassenhierarchie in Java und C++ Redefinition von virtuellen
MehrProgrammieren - Vererbung & Polymorphie
Programmieren - Vererbung & Polymorphie Reiner Nitsch r.nitsch@fbi.h-da.de Vererbung - Was ist das? Vererbung ist ein wichtiges Konzept zur Unterstützung der Wiederverwendbarkeit, wenn auch nicht das Wichtigste.
MehrAufbau 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
MehrC/C++-Programmierung
1 C/C++-Programmierung new/delete, virtual, Typumwandlungen Sebastian Hack Christoph Mallon (hack mallon)@cs.uni-sb.de Fachbereich Informatik Universität des Saarlandes Wintersemester 2009/2010 2 new/delete
MehrJava Einführung Methoden in Klassen
Java Einführung Methoden in Klassen Lehrziel der Einheit Methoden Signatur (=Deklaration) einer Methode Zugriff/Sichtbarkeit Rückgabewerte Parameter Aufruf von Methoden (Nachrichten) Information Hiding
Mehr1. Von der Idee zur Software 2. Funktionen und Datenstrukturen Lehrbuch: 4.3 3. Organisation des Quellcodes 4. Werte- und Referenzsemantik
Software-Technik: Vom Programmierer zur erfolgreichen Software-Technik: Vom Programmierer zur erfolgreichen 1. Von der Idee zur Software 2. Funktionen und Datenstrukturen Lehrbuch: 4.3 3. Organisation
Mehr13. Vererbung. Prof. Dr. François E. Cellier Informatik I für D-ITET (HS 2012)
13. Vererbung Prof. Dr. François E. Cellier Informatik I für D-ITET (HS 2012) Vererbung Konzept Protected Section Virtuelle Mitgliedsfunktionen Verwendung von Vererbung Vererbung Vererbung ist ein Mechanismus,
MehrMethoden. von Objekten definiert werden, Methoden,, Zugriffsmethoden und Read-Only
Methoden Wie Konstruktoren und Destruktoren zum Auf- und Abbau von Objekten definiert werden, Wie inline-methoden Methoden,, Zugriffsmethoden und Read-Only Only- Methoden einzusetzen sind, Der this-pointer
MehrVererbung & Schnittstellen in C#
Vererbung & Schnittstellen in C# Inhaltsübersicht - Vorüberlegung - Vererbung - Schnittstellenklassen - Zusammenfassung 1 Vorüberlegung Wozu benötigt man Vererbung überhaubt? 1.Um Zeit zu sparen! Verwendung
MehrJavakurs FSS Lehrstuhl Stuckenschmidt. Tag 3 - Objektorientierung
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt Tag 3 - Objektorientierung Warum Objektorientierung Daten und Funktionen möglichst eng koppeln und nach außen kapseln Komplexität der Software besser modellieren
MehrProgrammieren in Java
Programmieren in Java objektorientierte Programmierung 2 2 Zusammenhang Klasse-Datei In jeder *.java Datei kann es genau eine public-klasse geben wobei Klassen- und Dateiname übereinstimmen. Es können
MehrKlassenbeziehungen & Vererbung
Klassenbeziehungen & Vererbung VL Objektorientierte Programmierung Raimund Kirner teilweise nach Folien von Franz Puntigam, TU Wien Überblick Arten von Klassenbeziehungen Untertypen versus Vererbung in
MehrInformatik II Übung 6 Gruppe 7
Informatik II Übung 6 Gruppe 7 Leyna Sadamori leyna.sadamori@inf.ethz.ch DEBRIEFING Übung 5 2 U5A1-4 Im Prinzip alles richtig. Falls am Ende noch Zeit, dann Einsicht in die Best Of s 3 THEORIE Java Vererbung,
MehrBei for-schleifen muss man nur immer bedenken, dass die letzte Anweisung immer erst nach der Ausführung der restlichen Anweisungen der Schleife
303 Bei for-schleifen muss man nur immer bedenken, dass die letzte Anweisung immer erst nach der Ausführung der restlichen Anweisungen der Schleife durchgeführt wird. 304 305 for-schleifen sind in Aktivitätsdiagrammen
MehrAnwendungsentwicklung 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,
MehrVerhindert, dass eine Methode überschrieben wird. public final int holekontostand() {...} public final class Girokonto extends Konto {...
PIWIN I Kap. 8 Objektorientierte Programmierung - Vererbung 31 Schlüsselwort: final Verhindert, dass eine Methode überschrieben wird public final int holekontostand() {... Erben von einer Klasse verbieten:
MehrJava I Vorlesung Vererbung und Sichtbarkeit
Java I Vorlesung 4 Vererbung und Sichtbarkeit 17.5.2004 Vererbung Überladen, Überschreiben, Verstecken, Verschatten Zugriffskontrolle Statische Members Wiederholung: OOP Programme bestehen aus Klassen.
Mehr7 Vererbung. Modul Programmieren mit C++ Kapitel Vererbung
7.1 7 Vererbung Eine von der Basisklasse B abgeleitete Klasse A erbt alle Attribute und Methoden von B. Ein Objekt der Klasse A besitzt ein Slice der Klasse B und ein Slice der Klasse A. Jeder Konstruktor
MehrProgrammieren I. Kapitel 8. Vererbung
Programmieren I Kapitel 8. Vererbung Kapitel 8: Vererbung Ziel: Wesentliches objektorientiertes Konzept kennenlernen Subtypen Idee Probleme und Varianten Vererbung in Java dynamische Bindung abstrakte
MehrPräsentation Interfaces
Einführung in Java Präsentation Interfaces Nozar Delassaei Marvi Inhalt 1. Erinnerung Klasse Objekte Beispiel Klasse Abstrakte Klasse Beispiel Abstrakte Klasse Mehrfachvererbung-1 Mehrfachvererbung-2 2.
MehrGrundzü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
MehrJava 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
MehrKapitel 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
Mehr1 Polymorphie (Vielgestaltigkeit)
1 Polymorphie (Vielgestaltigkeit) Problem: Unsere Datenstrukturen List, Stack und Queue können einzig und allein int-werte aufnehmen. Wollen wir String-Objekte, andere Arten von Zahlen oder andere Objekttypen
Mehr10. Klassen. Prof. Dr. Markus Gross Informatik I für D-ITET (WS 03/04)
10. Klassen Prof. Dr. Markus Gross Informatik I für D-ITET (WS 03/04)!Objektorientierte Programmierung!Das Konzept der Klassen!Members!Objekte!Konstruktoren und Destruktoren!this-Pointer!Public und Private
MehrRO-Tutorien 3 / 6 / 12
RO-Tutorien 3 / 6 / 12 Tutorien zur Vorlesung Rechnerorganisation Christian A. Mandery WOCHE 2 AM 06./07.05.2013 KIT Universität des Landes Baden-Württemberg und nationales Forschungszentrum in der Helmholtz-Gemeinschaft
Mehr0. Einführung & Motivation
0. Einführung & Motivation Ansatz: "C++ für Java-Kenner" Konzentration auf semantische Unterschiede 'gleichartiger' Konzepte Erörterung der C++ -spezifischen Konzepte (Overloading, Templates) Anspruch
Mehr7. Objektorientierte Softwareentwicklung/3. Informatik II für Verkehrsingenieure
7. Objektorientierte Softwareentwicklung/3 Informatik II für Verkehrsingenieure Überblick FOLGENDE BEGRIFFE/PRINZIPIEN SOLLTEN BEKANNT SEIN Objekte Klasse Attribute Fähigkeiten ZIEL DER HEUTIGEN LEHRVERANSTALTUNG
MehrProgrammieren in Java
Programmieren in Java Einführung in die objektorientierte Programmierung Teil 2 2 Übersicht der heutigen Inhalte Vererbung Abstrakte Klassen Erweitern von Klassen Überladen von Methoden Überschreiben von
Mehr3 Objektorientierte Konzepte in Java
3 Objektorientierte Konzepte in Java 3.1 Klassendeklarationen Fragen an die Klassendeklaration: Wie heißt die Klasse? Wer darf auf die Klasse und ihre Attribute/Methoden zugreifen? Ist die Klasse eine
MehrEinführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung)
Wintersemester 2006/07 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
MehrVorlesung Programmieren. Bisher: Klassen und Objekte. Was ist mit ähnlichen Klassen? Vererbung und Polymorphismus
Vorlesung Programmieren Vererbung und Polymorphismus Prof. Dr. Stefan Fischer Institut für Telematik, Universität zu Lübeck http://www.itm.uni-luebeck.de/people/fischer Bisher: Klassen und Objekte Haupteigenschaften:
Mehr5.6 Vererbung. Vererbung
5.6 Vererbung Klassen können zueinander in einer "ist ein"- Beziehung stehen Beispiel: Jeder PKW ist ein Kraftfahrzeug, jedes Kraftfahrzeug ist ein Transportmittel aber: auch jeder LKW ist ein Kraftfahrzeug
MehrProbeklausur: Programmierung WS04/05
Probeklausur: Programmierung WS04/05 Name: Hinweise zur Bearbeitung Nimm Dir für diese Klausur ausreichend Zeit, und sorge dafür, dass Du nicht gestört wirst. Die Klausur ist für 90 Minuten angesetzt,
MehrProgrammierung mit C Zeiger
Programmierung mit C Zeiger Zeiger (Pointer)... ist eine Variable, die die Adresse eines Speicherbereichs enthält. Der Speicherbereich kann... kann den Wert einer Variablen enthalten oder... dynamisch
MehrÜberschreiben von Methoden
Vergleich der DoME Realisierungen: Methode ausgeben Version 1 (ohne Vererbung): Anzeigen aller Informationen CD: A Swingin Affair (64 Min)* Frank Sinatra Titelanzahl: 16 Mein Lieblingsalbum von Sinatra
MehrKlassen und Objekte. Einführung in Java. Folie 1 von Mai Ivo Kronenberg
Klassen und Objekte Einführung in Java Folie 1 von 28 12. Mai 2011 Ivo Kronenberg Inhalt Objekte Klassendefinitionen Datenelemente (Klassenattribute) Instanzieren von Objekten Konstruktoren Vergleich primitive
MehrObjects First With Java A Practical Introduction Using BlueJ. Mehr über Vererbung. Exploring polymorphism 1.0
Objects First With Java A Practical Introduction Using BlueJ Mehr über Vererbung Exploring polymorphism 1.0 Zentrale Konzepte dieses Kapitels Methoden-Polymorphie statischer und dynamischer Typ Überschreiben
MehrThemen. Statische Methoden inline Methoden const Methoden this Zeiger Destruktor Kopierkonstruktor Überladen von Operatoren
Themen Statische Methoden inline Methoden const Methoden this Zeiger Destruktor Kopierkonstruktor Überladen von Operatoren Statische Methoden Klassenmethoden Merkmal der Klasse nicht eines einzelnen Objekts
MehrWintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf http://informatik.swoke.de. Seite 1 von 22
Kapitel 19 Vererbung, UML Seite 1 von 22 Vererbung - Neben der Datenabstraktion und der Datenkapselung ist die Vererbung ein weiteres Merkmal der OOP. - Durch Vererbung werden die Methoden und die Eigenschaften
MehrGetName(), GetName(), GetGeschlecht() und AelterWerden().
11. Vererbung Vererbung ist eine der mächtigsten Funktionalitäten der objektorientierten Programmiersprachen. Man versteht unter Vererbung die Tatsache, dass eine Klasse alle Methoden und Variablen einer
MehrVorkurs 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
Mehrmagnum C++ WALTER SAUMWEBER kompakt komplett kompetent
magnum C++ WALTER SAUMWEBER kompakt komplett kompetent Quickview... 5 Liebe Leserin, lieber Leser... 13 Teil 1 Grundlagen... 15 1 Was ist Programmieren?... 17 1.1 Was ist eigentlich ein Computerprogramm?...
MehrWiederholung zur Vorlesung Programmieren
Wiederholung zur Vorlesung Jan 2007 Wintersemester 2007/2008 Computerlinguistik, Campus DU Einstieg Erläutern sie in knappen Worten die notwendigen Schritte um ein einfaches Java-Programm zu schreiben
MehrVererbung und Polymorphie
Vererbung und Polymorphie WiMa-Praktikum 1, Teil C++, Tag 5 Christoph Ott, Büro: Helmholtzstr.18, E22 Tel.: 50-23575, Mail: christoph.ott@uni-ulm.de Institut für Angewandte Informationsverarbeitung 29.08.08
MehrVererbung. Martin Wirsing. Ziele. Vererbung
2 Ziele Martin Wirsing en Begriff der einfachen verstehen und Redefinition von Oberklassenmethoden verstehen spolymorphie verstehen ie Klasse Object kennenlernen in Zusammenarbeit mit Michael Barth, Philipp
Mehr01. Grundprinzipien der Vererbung
01. Grundprinzipien der Vererbung 1.1 Grundidee der Vererbung Bei der Analyse eines Problems (z.b. Baukasten) stellt man beispielsweise fest, dass 67 % an Daten/Funktionen immer vorkommen 25 % an Daten/Funktionen
MehrInformationsverarbeitung im Bauwesen
1/21 Informationsverarbeitung im Bauwesen Einführung in das Programmieren mit C++ Markus Uhlmann Institut für Hydromechanik Karlsruher Institut für Technologie www.ifh.kit.edu WS 2010/2011 Vorlesung 8
Mehr2. Semester, 2. Prüfung, Lösung
2. Semester, 2. Prüfung, Lösung Name Die gesamte Prüfung bezieht sich auf die Programmierung in C++! Prüfungsdauer: 90 Minuten Mit Kugelschreiber oder Tinte schreiben Lösungen können direkt auf die Aufgabenblätter
MehrKurzeinfü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
MehrJava Vererbung. Inhalt
Java Vererbung Inhalt 1 Zielsetzung... 2 1.1 Bewertung... 2 2 Grundlagen der Vererbung... 2 2.1 Super und Subklassen... 2 3 Überladen von Methoden... 4 3.1 Unterschiedliche Parameter... 4 3.2 Gleiche Parameter
MehrAlgorithmen und Datenstrukturen
Algorithmen und Datenstrukturen Tafelübung 04 Referenzen, Overloading, Klassen(hierarchien) Clemens Lang T2 18. Mai 2010 14:00 16:00, 00.152 Tafelübung zu AuD 1/13 Organisatorisches Nächster Übungstermin
Mehr5.5.8 Öffentliche und private Eigenschaften
5.5.8 Öffentliche und private Eigenschaften Schnittstellen vs. Implementierungen: Schnittstelle einer Klasse beschreibt, was eine Klasse leistet und wie sie benutzt werden kann, ohne dass ihre Implementierung
MehrProbeklausur: Programmierung WS04/05
Probeklausur: Programmierung WS04/05 Name: Hinweise zur Bearbeitung Nimm Dir für diese Klausur ausreichend Zeit, und sorge dafür, dass Du nicht gestört wirst. Die Klausur ist für 90 Minuten angesetzt,
MehrVererbung. Was versteht man unter dem Begriff Vererbung?
Was versteht man unter dem Begriff Vererbung? Elternkonstrukt - Datenelemente - Methoden o Deklaration o Definition Kindkonstrukt... Main... Elternkonstrukt b = new Kindkonstrukt() b.fn() Komponenten &
Mehr3. Semester : 1. Prüfung
3. Semester : 1. Prüfung Name : Die gesamte Prüfung bezieht sich auf die!! Prüfungsdauer: 90 Minuten mit Kugelschreiber oder Tinte schreiben Lösungen können direkt auf die Aufgabenblätter geschrieben werden
MehrEinfü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
Mehr7. Schnittstellen Grundlagen zu Schnittstellen. 7. Schnittstellen
7. Schnittstellen Grundlagen zu Schnittstellen 7. Schnittstellen Eine Schnittstelle (Interface) ist eine Spezifikation eines Typs in Form eines Typnamens und einer Menge von Methoden, die keine Implementierungen
MehrBeispiel: Zwischen der Oberklasse und der abgeleiteten Klasse besteht eine ist ein Beziehung. Eine abgeleitete Klasse stellt eine Spezialisierung der
Vererbung Vererbung ist ein Konzept der objektorientierten Programmierung,, die es ermöglicht neue Klassen von bereits vorhandenen Klassen abzuleiten. In einer abgeleiteten Klasse (subclass) muss nur spezifiziert
MehrObjektorientierung: Klassen und Objekte
Objektorientierung: Klassen und Objekte Klasse: Beschreibung für eine Menge von Objekten Schablone, Bauplan abstrakte Form Objekt: Instanz einer Klasse konkreter Inhalt (Werte) Klassen bestehen aus Attributen
MehrEinfü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
MehrAlgorithmen und Programmierung II
Algorithmen und Programmierung II Vererbung Prof. Dr. Margarita Esponda SS 2012 1 Imperative Grundbestandteile Parameterübergabe String-Klasse Array-Klasse Konzepte objektorientierter Programmierung Vererbung
MehrC++ - Eine Ubersicht fur Java-Programmierer
C++ - Eine Ubersicht fur Java-Programmierer Daniel Wasserrab Lehrstuhl fur Programmierparadigmen Universitat Karlsruhe 23. April 2008 C++ I Entwickelt Anfang der 80er von Bjarne Stroustrup I Beeinut von
MehrEinstieg 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
MehrOOP 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 Templates Nochmal zusammengefasst Die Basis der OOP- Zusammengefasst 2 Templates Programmiersprachen
MehrAngewandte Mathematik und Programmierung
Angewandte Mathematik und Programmierung Einführung in das Konzept der objektorientierten Anwendungen zu mathematischen Rechnens WS2013/14 Inhalt Übung(Aufklärung) Vererbung(wdh.) Initilisierung bei Vererbung
MehrProgrammierkurs Java
Programmierkurs Java Konstruktor, Statische Methoden Packages Prof. Dr. Stefan Fischer Institut für Telematik, Universität zu Lübeck http://www.itm.uni-luebeck.de/people/fischer Initialisierung von Datenstrukturen
MehrSeminar Softwarereengineering/Merkmale der Programmiersprache C++
Seminar Softwarereengineering/Merkmale der Programmiersprache C++ Martin Aumüller TU Ilmenau 31. Mai 2007 Themen 1 Generelle Probleme Kompatibilität mit C Standardisierung 2 Verständnisprobleme - Präprozessor
MehrEinführung in die Informatik
Einführung in die Informatik Jochen Hoenicke Software Engineering Albert-Ludwigs-University Freiburg Sommersemester 2014 Jochen Hoenicke (Software Engineering) Einführung in die Informatik Sommersemester
MehrJavakurs 2013 Objektorientierung
Javakurs 2013 Objektorientierung Objektorientierte Programmierung I Armelle Vérité 7 März 2013 Technische Universität Berlin This work is licensed under the Creative Commons Attribution-ShareAlike 3.0
MehrKapitel 9: Klassen und höhere Datentypen. Klassen und höhere. Objekte, Felder, Methoden. Küchlin/Weber: Einführung in die Informatik
Klassen und höhere Datentypen Objekte, Felder, Methoden Küchlin/Weber: Einführung in die Informatik Klassen Klasse (class) stellt einen (i.a. benutzerdefinierten) Verbund-Datentyp dar Objekte sind Instanzen
MehrObjektorientierte 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
MehrDer Operator this. Wir betrachten nochmals die Klassendefinition von Ballon.
Der Operator this Wir betrachten nochmals die Klassendefinition von Ballon. public class Ballon { private int durchmesser; private int x1, y1; private Color farbe =Color.black; // Konstruktor ohne Farbe
MehrDie Programmiersprache C99: Zusammenfassung
Die Programmiersprache C99: Zusammenfassung Jörn Loviscach Versionsstand: 7. Dezember 2010, 19:30 Die nummerierten Felder sind absichtlich leer, zum Ausfüllen in der Vorlesung. Videos dazu: http://www.youtube.com/joernloviscach
MehrTheorie zu Übung 8 Implementierung in Java
Universität Stuttgart Institut für Automatisierungstechnik und Softwaresysteme Prof. Dr.-Ing. M. Weyrich Theorie zu Übung 8 Implementierung in Java Klasse in Java Die Klasse wird durch das class-konzept
MehrC++-Zusammenfassung. H. Schaudt. August 18, 2005
C++-Zusammenfassung H. Schaudt August 18, 2005 1 Datentypen 1.1 Grunddatentypen int (-32xxx bis +32xxx, implementerungs-abhängig) char -128 bis +128 float double bool (C++) int und char sind austauschbar:
MehrEinführung in die STL
1/29 in die STL Florian Adamsky, B. Sc. (PhD cand.) florian.adamsky@iem.thm.de http://florian.adamsky.it/ cbd Softwareentwicklung im WS 2014/15 2/29 Outline 1 3/29 Inhaltsverzeichnis 1 4/29 Typisierung
MehrZiel, Inhalt. Programmieren in C++ Wir lernen wie man Funktionen oder Klassen einmal schreibt, so dass sie für verschiedene Datentypen verwendbar sind
Templates und Containerklassen Ziel, Inhalt Wir lernen wie man Funktionen oder Klassen einmal schreibt, so dass sie für verschiedene Datentypen verwendbar sind Templates und Containerklassen 1 Ziel, Inhalt
MehrFunktionen Häufig müssen bestimmte Operationen in einem Programm mehrmals ausgeführt werden. Schlechte Lösung: Gute Lösung:
Funktionen Häufig müssen bestimmte Operationen in einem Programm mehrmals ausgeführt werden. Schlechte Lösung: Der Sourcecode wird an den entsprechenden Stellen im Programm wiederholt Programm wird lang
MehrAlgorithmen und Datenstrukturen 07
5. Dezember 2011 1 Besprechung Blatt 6 Fragen 2 Vererbung Allgemein abstract Interfaces 3 Unified Modeling Language (UML) Ablaufdiagramme Klassendiagramme Anwendungsfalldiagramme 4 Vorbereitung Blatt 7
MehrMeeting C++ C++11 R-Value Referenzen
Meeting C++ Detlef Wilkening http://www.wilkening-online.de 09.11.2012 Inhalt Motivation L-Values und R-Values R-Value Referenzen Move Semantik std::move Funktionen mit R-Value-Referenz Parametern Fazit
Mehr3 Objektorientierte Konzepte in Java
3 Objektorientierte Konzepte in Java Bisherige Beobachtungen zu Objekten: werden in Klassen zusammengefasst besitzen Eigenschaften und Verhalten verbergen private Informationen werden geboren, leben und
MehrC# im Vergleich zu Java
C# im Vergleich zu Java Serhad Ilgün Seminar Universität Dortmund SS 03 Gliederung Entstehung von C# und Java Überblick von C# und Java Unterschiede und Gemeinsamkeiten Zusammenfassung und Ausblick Entstehung
MehrDeklarationen in C. Prof. Dr. Margarita Esponda
Deklarationen in C 1 Deklarationen Deklarationen spielen eine zentrale Rolle in der C-Programmiersprache. Deklarationen Variablen Funktionen Die Deklarationen von Variablen und Funktionen haben viele Gemeinsamkeiten.
MehrEinführung in C++ mit Microsoft VS
Einführung in C++ mit Microsoft VS Gliederung Allgemeines zu C++ und Unterschiede zu Java Header-Files Zeiger/Strukturen Namespaces Programmierstil Einführung in Microsoft VS Projekte und Solutions Debugger
MehrObjektorientierte Programmierung
Objektorientierte Programmierung 1 Geschichte Dahl, Nygaard: Simula 67 (Algol 60 + Objektorientierung) Kay et al.: Smalltalk (erste rein-objektorientierte Sprache) Object Pascal, Objective C, C++ (wiederum
MehrJava, OO und UML Fortsetzung
Java, OO und UML Fortsetzung Das Objektorientierte Paradigma OO bildet keine geschlossene theoretisch abgegrenzte Basis (wie z.b. das Relationsmodell relationaler Datenbanken) OO ist eine Sammlung und
MehrSilke 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