Programmieren - C++ Templates
|
|
- Rudolf Richter
- vor 6 Jahren
- Abrufe
Transkript
1 Programmieren - C++ Templates Reiner Nitsch r.nitsch@fbi.h-da.de
2 Was sind Templates? C++ Templates ermöglichen generische Programmierung. Das ist Programmierung unabhängig vom speziellen Objekt-Typ Templates sind Schablonen mit parametrisierten Datentypen d.h. mit Platzhaltern für Typen (Typ-Parameter). So wie Funktionen zur Laufzeit die deklarierten Parameter übergeben bekommen, werden bei Templates dem Compiler zur Compilezeit die deklarierten Typparameter übergeben. Dieser setzt die übergebenen aktuellen Typparameter dann anstelle der Platzhalter-Typen ein. C++ unterscheidet zwischen Funktionstemplates (siehe PG1: 4b-PG1-FktTemplates-Student.pdf) und Klassentemplates C++ Templates 2
3 Wiederholung: Funktionstemplates? Beispiele: Sortieren von int-, double-, string- oder Konto-Arrays, DynArray, Listen, Viele Sortieralgorithmen sortieren Arrays, indem sie Elemente solange vertauschen, bis die Sortierung stimmt. Funktion vertausche für Ganzzahlen void vertausche( int& a, int& b ) int tmp(a); a = b; b = tmp ; Funktion vertausche für Konten void vertausche( Konto& a, Konto& b ) Konto tmp(a); a = b; b = tmp ; Algorithmus ist unabhängig vom Datentyp! Wünschenswert wäre daher eine datentypunabhängige (generische) Implementierung, die die konkreten Typen ähnlich wie Werteparameter übergeben bekommt. Funktionstemplates C++ Templates 3
4 Beispiel 1: Funktion vertausche als Funktionstemplate Beispiel 1: Deklariert Funktion als Template (Bauplan), das vom Compiler erst bei Bedarf übersetzt wird. T ist hier Stellvertretertyp für den konkreten Datentyp! Auch mehrere kommaseparierte Typparameter sind möglich. void swap( int& a, int& b ) int tmp(a); a = b; b = tmp ; Anwendung des Templates swap void main() int a=5, b=6; swap( a, b ); double x=2.0, y=3.0; swap( x, y ); Compiler ersetzt jedes T durch int! template < typename T > void swap( T& a, T& b ) Achtung! T tmp(a); Copy-Konstruktor Problem wenn T ein und a = b; Zuweisung Klassenobjekt müssen ist? b = tmp ; für Typ T definiert sein! Referenzen oder Pointer werden hier nicht unterstützt Compiler erzeugt erst hier Code für Funktion swap mit Parametertyp int und deren Aufruf. Hier wird Funktion swap mit Parametertyp double gemäß Schablone erneut compiliert C++ Templates 4
5 Beispiel 2: Funktion sort als Funktionstemplate //Sortieren im Bereich [links,rechts) void SelectionSort( int Reihe[], int links, int rechts) int i, j, min; for( i = links; i < rechts ; i++) min = i; for( j=i+1; j < rechts; j++) if(reihe[j] < Reihe[min]) min = j; swap(reihe[i], Reihe[min]); Gründe: Es ist nicht selbstverständlich, daß der operator< für beliebige Klassen und Datentypen definiert ist. Durch Auslagern des Vergleichs braucht die Funktion SelectionSort nicht verändert zu werden, wenn der Operator anders definiert werden muss! (generische Programmierung) Die Vergleichsfunktion compare kann leichter spezialisiert werden. Soll z.b. nach den Beträgen von int- Werten sortiert werden, so ist dies mit dem operator< nicht möglich ohne den Sortieralgorithmus anzupassen. bool compare( const int& a, const int& b ) return a<b bool compare( const int& a, const int& b ) return abs(a)<abs(b) //Sortieren im Bereich [links,rechts) template < typename T > void SelectionSort( T Reihe[], int links, int rechts) int i, j, min; for( i = links; i < rechts ; i++) min = i; for( j=i+1; j < rechts; j++) if(reihe[j] < Reihe[min]) min = j; swap(reihe[i], Reihe[min]); oder besser: //Sortieren im Bereich [links,rechts) template < typename T > void SelectionSort( T Reihe[], int links, int rechts) int i, j, min; for( i = links; i < rechts ; i++) min = i; for( j=i+1; j < rechts; j++) if( compare( Reihe[j], Reihe[min] ) min = j; vertausche(reihe[i], Reihe[min]); predicate-funktion:= Funktion, die bool- Wert zurück gibt C++ Templates 5
6 C++ Klassen-Templates Werden oft benutzt, um typanpassbare Speicher-Container zu realisieren (z.b. in STL) Beispiel: Ein Objekt soll 2 Werte speichern, einen int und einen char Wert class Pair_int_char public: int first; char second; Pair_int_char ( int x, char y ) : first(x), second(y) ; // Beispiel-Anwendung Pair_int_char pair1( 13, 'a' ); cout << pair1.first << endl; cout << pair1.second << endl; Ein anderes Objekt soll ebenfalls 2 Werte speichern, einen bool und einen double Wert class Pair_bool_double public: bool first; double second; Pair_bool_double ( bool x, double y ) : first(x), second(y) ; // Beispiel-Anwendung Pair_bool_double pair2( true, 1.1 ); cout << pair2.first << endl; cout << pair2.second << endl; Mögliche Anwendungen von Containerklassen für 2 Werte: rationale Zahlen, Punkte in einer Ebene, Geldbeträge, Das Beispiel läßt den Wunsch aufkommen, die Klasse pair generisch, d.h. unabhängig von den speziellen Typen zu programmieren und die Typen (ähnlich wie Funktions-Parameter) als Typ- Parameter zu übergeben C++ Templates 6
7 Realisierung der Pair-Container als Klassen-Template template < typename T1, typename T2 > class Pair public: T1 first; T2 second; Pair( T1 f, T2 s ) : first(f), second(s) Anwendung: Vorinitialisierungsliste // Diese Syntax erklärt T1 und T2 zu Typparametern // (class statt typename in MS Visual C++ ) Pair < int, char > pair3( 13, 'a' ); Pair < bool, double > pair4( true, 0.1 ); // Gleiche Datenstruktur wie pair1! // Gleiche Datenstruktur wie pair2! Ohne zusätzliche neue Klassen sind beliebige andere Standardtyp-Kombinationen mit Template-Klasse Pair möglich: Pair < double, long > pair5( 3.456, 4711 ); Pair < int, int > pair6( 1, -1 ); Auch benutzerdefinierte Typen können als Aktualtyp eingesetzt werden: Pair < Pair_int_char, float > pair7( pair1, ); Pair < Pair<int,int>, float > pair8( pair6, ); Pair < Bruch, bool > pair9( Bruch(2,3), true ); C++ Templates 7
8 Verbesserung der Klasse Pair Der Pair-Konstruktor übernimmt Parameter "by value". Nachteil: Resourcenverschwendung, wenn große Objekte zu übergeben sind. Ausserdem stellt der Compiler keinen Standardkonstruktor mehr bereit. Weshalb? template < typename T1, typename T2 > class Pair public: T1 first; T2 second; Was Copy-Konstruktoren wird hier aufgerufen? Pair() : first( T1() ), second( T2() ) Pair( const T1& f, const T2& s ) : first(f), second(s) // Standardkonstruktor // call by reference! Die STL stellt eine Klasse std::pair<typ1,typ2> mit gleicher Funktionalität bereit. Anwendung siehe Skript 12-1-PG2-STL-Student.pdf C++ Templates 8
9 Beispiel 3: Klasse DynArray als Klassentemplate // DynArray für Elemente von Typ 'float' class DynArray public: DynArray( int arraysize = 0 ); DynArray( const DynArray& tocopy ); ~DynArray(); int getsize() const return size; DynArray& operator= ( const DynArray& toassign ); float& operator[] ( int i ); private: int size; float* parr; ; // DynArray C++ Templates 9
10 Beispiel 3: Klasse DynArray als Klassentemplate #include "DynArray.h" // Datei: DynArray.h Templatedefinitionen müssen in allen Dateien, die sie verwenden, verfügbar sein. Dazu können sie z.b. in Headerdateien abgelegt und mit #include eingelesen werden. // default Konstruktor für Klasse Array DynArray ::DynArray( int arraysize ) if (arraysize > 0) size = arraysize; parr = new float[arraysize]; Hier muss zusätzlich der Datentyp in spitzen Klammern angegeben werden, wenn die Methode ausserhalb der Klassen-Deklaration definiert wird. for( int i=0; i< arraysize; parr[i] = 0.0, i++ ); else size = 0; parr = NULL; // Ende Array default Konstruktor Das funktioniert hier auch für T = int, weil int i = 0; // i = 0 int i1 = int(0); // i1 = 0 int i2 = int(); // i2 = 0 // Destruktor für Klasse Array DynArray ::~DynArray() if (parr) delete [] parr; C++ Templates 10
11 Beispiel 3: Klasse DynArray als Klassentemplate // copy constructor für class DynArray; // call "by reference", um nicht abbrechenden rekursiven Aufruf zu vermeiden DynArray ::DynArray( const DynArray& arraytocopy ) size = arraytocopy.size; parr = new float[ size ]; // Speicherplatz für neues Array anfordern for ( int i = 0; i < size; i++ ) // Arraywerte kopieren parr[ i ] = arraytocopy.parr[ i ]; // end DynArray copy constructor // globale operator<< function für class DynArray ostream& operator<<( ostream& output, const DynArray &a ) int i; // Ausgabe aller Arrayelemente for ( i = 0; i < a.size; i++ ) output << setw( 12 ) << a.parr[ i ]; if ( ( i + 1 ) % 4 == 0 ) // 4 Werte pro Ausgabezeile output << endl; // end for if ( i % 4!= 0 ) // Zeilenvorschub am Zeilenende output << endl; return output; // ermöglicht cout << x << y; // end function operator<< Zur Intanzierung dieses Funkt- Templates muss die Klasse DynArray bekannt sein. -> Diese Definition hinter Klassendeklaration anordnen. Problem: Der operator<< muss als Template deklariert sein bevor man ihn zum friend von Klasse DynArray machen kann. Lösung: siehe nächste Seite C++ Templates 11
12 Template Friends - Vorwärtsdeklaration // Datei DynArray.h // Klasse DynArray für Elemente von bel. Typ template< typename T> class DynArray public: DynArray( int arraysize = 0 ); DynArray( const DynArray& tocopy ); ~DynArray(); int getsize() const return size; DynArray& operator= ( const DynArray& toassign ); T& operator[] ( int i ); private: int size; T* parr; ; // DynArray Vorwärtsdeklaration der Klasse DynArray: macht dem Compiler den Typ-Bezeichner bekannt. Man kann dann bereits Funktionen oder Klassen deklarieren, deren Argumente nur Zeiger oder Referenzen auf die so bekannt gemachte Klasse enthalten. Deklaration des Template-Ausgabeoperators Template Friend-Deklaration C++ Templates 12
13 Beispiel 3: Klasse DynArray als Klassentemplate // Überladener Index-Operator für r/w-arrays // gibt r/w-referenz auf gewünschtes Element zurück // Passt Arraygröße dynamisch an, wenn Index oberhalb des zul. Bereichs liegt float& DynArray ::operator[] ( int i ) if ( i < 0 ) cout << "Error: index " << i << " out of range" << endl; exit( 1 ); if ( i>=size ) int n=1; while( n<=size ) n = n<<1; // Neue Array-Größe festlegen float* ptmp = new float[ n ]; // Speicherplatz gemäß neuer Größe anfordern for (int j=0; j<size; j++) ptmp[j] = parr[j]; // Array elementweise kopieren for ( ; j < n ; j++ ) ptmp[j] = T(); // Rest mit 0 initialisieren delete [] parr; // bisherigen Speicherplatz freigeben parr = ptmp; size = n; // Attribute aktualisieren return *(parr + i); C++ Templates 13
14 Beispiel 3: Klasse DynArray als Klassentemplate // Zuweisungsoperator // Rückgabewert ermöglicht: a1 = a2 = a3 DynArray &DynArray::operator= (const DynArray &toassign) if ( &toassign!= this ) // Bei verschiedenen Array-Größen, linkes Orginal löschen, // dann Speicherplatz für neues linksseitiges Array anfordern if ( size>0 && size!= toassign.size ) delete [] parr; // bisherigen Speicherplatz freigeben size = toassign. size; // Größe des neuen Objekts festlegen parr = new float[ size ]; // Speicherplatz gemäß neuer Größe anfordern for (int i=0; i<size; i++) parr[i] = toassign.parr[i]; // Array elementweise kopieren return *this; Alle weiteren Methoden der Klasse sind auf die gleiche Weise abzuändern! C++ Templates 14
15 Beispiel 3: Klasse DynArray als Klassentemplate Templatedefinitionen müssen deshalb in allen Dateien, die sie verwenden, verfügbar sein. Dazu können sie z.b. in Headerdateien abgelegt und mit #include eingelesen werden. #include "DynArray.h" void main() // Testanwendung der Template-Klasse DynArray DynArray<int> intarr1(3); DynArray<int> intarr2(5); // Werte einlesen cout << "\n3 Ganzzahlen eingeben:\n"; for( int i=0; i<3; i++) cin >> intarr1[i]; cout << "\n5 Ganzzahlen eingeben:\n"; for( i=0; i<5; cin >> intarr2[i++]); 3 Ganzzahlen eingeben: Ganzzahlen eingeben: intarr1 hat die Groesse 4 Arraywerte nach der Initialisierung: intarr2 hat die Groesse 8 Arraywerte nach der Initialisierung: // Größe und Inhalt von intarr1 ausgeben cout << "intarr1 hat die Groesse " << intarr1.getsize() << "\narraywerte nach der Initialisierung:\n" << intarr1; // Größe und Inhalt von intarr2 ausgeben cout << "\nintarr2 hat die Groesse " << intarr2.getsize() << "\narraywerte nach der Initialisierung:\n" << intarr2; C++ Templates 15
16 Beispiel 3: Klasse DynArray als Klassentemplate DynArray<double> doublearr1(0); DynArray<double> doublearr2(0); cout << "\n6 Gleitpunktzahlen eingeben:\n"; for( i=0; i<6; i++) cin >> doublearr1[i]; cout << "\n2 Gleitpunktzahlen eingeben:\n"; for( i=0; i<2; i++) cin >> doublearr2[i]; 6 doubles eingeben: // Größe und Inhalt von doublearr1 ausgeben cout << "doublearr1 hat die Groesse " << doublearr1.getsize() << "\narraywerte nach der Initialisierung:\n" << doublearr1; 2 doubles eingeben: doublearr1 hat die Groesse 8 Arraywerte nach der Initialisierung: doublearr2 hat die Groesse 2 Arraywerte nach der Initialisierung: Press any key to continue // Größe und Inhalt von doublearr2 ausgeben cout << "\ndoublearr2 hat die Groesse " << doublearr2.getsize() << "\narraywerte nach der Initialisierung:\n" << doublearr2; // end main C++ Templates 16
Vorkurs C++ Programmierung
Vorkurs C++ Programmierung Klassen Letzte Stunde Speicherverwaltung automatische Speicherverwaltung auf dem Stack dynamische Speicherverwaltung auf dem Heap new/new[] und delete/delete[] Speicherklassen:
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
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:
MehrUnterprogramme. Funktionen. Bedeutung von Funktionen in C++ Definition einer Funktion. Definition einer Prozedur
Unterprogramme Unterprogramme sind abgekapselte Programmfragmente, welche es erlauben, bestimmte Aufgaben in wiederverwendbarer Art umzusetzen. Man unterscheidet zwischen Unterprogrammen mit Rückgabewert
MehrEinführung in C++ Operatoren überladen (Klassen)
Einführung in C++ Operatoren überladen (Klassen) Operatoren überladen Die Überladung von Operatoren ermöglicht es, vorhandene Operatoren (+,-,...) auch auf Objekte von Klassen anzuwenden. Die meisten der
MehrII. Grundlagen der Programmierung. 9. Datenstrukturen. Daten zusammenfassen. In Java (Forts.): In Java:
Technische Informatik für Ingenieure (TIfI) WS 2005/2006, Vorlesung 9 II. Grundlagen der Programmierung Ekkart Kindler Funktionen und Prozeduren Datenstrukturen 9. Datenstrukturen Daten zusammenfassen
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
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
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
MehrObjektorientierte Programmierung mit C++ Vector und List
Vector und List Ziel, Inhalt Wir lernen die Klassen vector und list aus der Standard-C++ Library kennen und anwenden. In einer Übung wenden wir diese Klassen an um einen Medienshop (CD s und Bücher) zu
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
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
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
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
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
MehrIn der Computersprache C ist die Standardmethode zur Behandlung von Matrizen durch
Kapitel Matrizen in C++ In der Computersprache C ist die Standardmethode zur Behandlung von Matrizen durch 1 const int n=10; 3 double a[n][n]; gegeben. Allerdings gibt es bei dieser Methode eine Reihe
MehrProgrammieren II Klassen. Programmieren II Klassen. Programmieren II Klassen. Programmieren II Klassen. Zur Erinnerung.
Vorbemerkungen Zur Erinnerung aktueller Standpunkt: Entwickler von (bibliotheken) jetzt sind wichtig interne Repräsentation der Daten Realisierung der gewünschten Funktionalität Bereitstellung geeigneter
MehrProgrammiersprache 1 (C++) Prof. Dr. Stefan Enderle NTA Isny
Programmiersprache 1 (C++) Prof. Dr. Stefan Enderle NTA Isny 7. Funktionen Einleitung Nach dem Prinzip Divide and Conquer bietet es sich an, größere Aufgaben in kleinere Teile zu unterteilen. Anweisungsblöcke,
MehrJavakurs für Anfänger
Javakurs für Anfänger Einheit 02: Klassen & Objekte Lorenz Schauer Lehrstuhl für Mobile und Verteilte Systeme Heutige Agenda 1. Teil: Klassen Grundstruktur einer Java-Klasse Eigenschaften (Attribute) Variablen
MehrEine Klasse beschreibt Objekte mit gleichen Attributen und Methoden.
Grundwissen Informatik Objekt Attribut Methoden Als Objekte bezeichnet man alle Gegenstände, Dinge, Lebewesen, Begriffe oder Strukturen unserer Welt ( Autos, Räume, Bakterien, Lehrer, Schüler, Kunden,
Mehr1. Übung zu "Numerik partieller Differentialgleichungen"
1. Übung zu "Numerik partieller Differentialgleichungen" Simon Gawlok, Eva Treiber Engineering Mathematics and Computing Lab 22. Oktober 2014 1 / 15 1 Organisatorisches 2 3 4 2 / 15 Organisatorisches Ort:
MehrPass by Value Pass by Reference Defaults, Overloading, variable Parameteranzahl
Funktionen Zusammenfassung von Befehlssequenzen als aufrufbare/wiederverwendbare Funktionen in einem Programmblock mit festgelegter Schnittstelle (Signatur) Derartige prozedurale Programmierung erlaubt
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
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.
MehrFunktionen und Parameter
Funktionen in C++ Funktionen und Parameter Wie in Java: Parameter sind lokale Variablen Argumente werden bei Aufruf zugewiesen Extras: Zeiger-Parameter für alle Typen: als Rückgabewerte um große Kopien
MehrEinführung Datentypen Verzweigung Schleifen. Java Crashkurs. Kim-Manuel Klein May 4, 2015
Java Crashkurs Kim-Manuel Klein (kmk@informatik.uni-kiel.de) May 4, 2015 Quellen und Editoren Internet Tutorial: z.b. http://www.java-tutorial.org Editoren Normaler Texteditor (Gedit, Scite oder ähnliche)
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,
MehrObjektorientierte Programmierung mit C++ Zusammenfassung der wichtigsten Topics rund um die objektorientierte Programmierung mit C++11
Objektorientierte Programmierung mit C++ Zusammenfassung der wichtigsten Topics rund um die objektorientierte Programmierung mit C++11 Wozu objektorientiertes Programmieren? Die Welt besteht für den Menschen
Mehr5.4 Klassen und Objekte
5.4 Klassen und Objekte Zusammenfassung: Projekt Figuren und Zeichner Figuren stellt Basisklassen für geometrische Figuren zur Verfügung Zeichner bietet eine übergeordnete Klasse Zeichner, welche die Dienstleistungen
MehrProgrammierkurs C++ Kapitel 9, Überladen Seite 1
Programmierkurs C++ Kapitel 9, Überladen Seite 1 Funktionen überladen int datum (int jahr); int datum (char person[]); sind in C++ zwei verschiedene Funktionen, die beide denselben Funktionsnamen haben.
MehrZusammenfassung des Handzettels für Programmieren in C
Zusammenfassung des Handzettels für Programmieren in C In der handschriftlichen Kopie werden mehr Abkürzungen verwendet. Alles Grün markierte dient zum lernen und wird nicht auf den Handzettel übertragen.
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
MehrEinstieg in die Informatik mit Java
Vorlesung vom 18.4.07, Grundlagen Übersicht 1 Kommentare 2 Bezeichner für Klassen, Methoden, Variablen 3 White Space Zeichen 4 Wortsymbole 5 Interpunktionszeichen 6 Operatoren 7 import Anweisungen 8 Form
MehrJava Kurs für Anfänger Einheit 5 Methoden
Java Kurs für Anfänger Einheit 5 Methoden Ludwig-Maximilians-Universität München (Institut für Informatik: Programmierung und Softwaretechnik von Prof.Wirsing) 22. Juni 2009 Inhaltsverzeichnis Methoden
Mehr1 Vom Problem zum Programm
Hintergrundinformationen zur Vorlesung GRUNDLAGEN DER INFORMATIK I Studiengang Elektrotechnik WS 02/03 AG Betriebssysteme FB3 Kirsten Berkenkötter 1 Vom Problem zum Programm Aufgabenstellung analysieren
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
MehrHochschule Darmstadt Informatik-Praktikum (INF 1) WS 2015/2016 Wirtschaftsingenieur Bachelor 5. Aufgabe Datenstruktur, Dateieingabe und -ausgabe
Aufgabenstellung Für eine Hausverwaltung sollen für maximal 500 Wohnungen Informationen gespeichert werden, die alle nach der gleichen Weise wie folgt strukturiert sind: Art Baujahr Wohnung Whnginfo Nebenkosten
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
MehrDAP2-Programmierpraktikum Einführung in C++ (Teil 1)
DAP2-Programmierpraktikum Einführung in C++ (Teil 1) Carsten Gutwenger 11. April 2008 Lehrstuhl 11 Algorithm Engineering Fakultät für Informatik, TU Dortmund Überblick Mein erstes C++-Programm Namensräume
MehrHochschule Darmstadt Informatik-Praktikum (INF 1) WS 2014/2015 Wirtschaftsingenieur Bachelor 4. Aufgabe Datenstruktur, Dateieingabe und -ausgabe
Aufgabenstellung Für ein Baumkataster sollen für maximal 500 Bäume Informationen gespeichert werden, die alle nach der gleichen Weise wie folgt strukturiert sind: Nummer Bauminfo Baumart Hoehe Baum Umfang
MehrRelationen-Algebra und Persistenz Teil I
Relationen-Algebra und Persistenz Teil I Implementierungskonzepte und Anforderungen an Attributdatentypen LG Datenbanksysteme für neue Anwendungen Inhalt FLOBs DBArrays Attributsdatentypen Folie 2 Bisher:
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
MehrC++ - Operatoren. Eigene Klassen mit neuen Funktionen
C++ - Operatoren Eigene Klassen mit neuen Funktionen Übersicht Klassen bisher Eigene Operatoren definieren 2 Bisher Durch Kapselung, Vererbung und Polymorphy können nun eigene Klassen definiert werden,
MehrC++ Kurs Teil 1. Architektur, Anwendungsspektrum, primitive Datentypen, Funktionsaufrufe, Referenzen, Klassen
C++ Kurs Teil 1 "hello world" Vergleich von C++ und Java Architektur, Anwendungsspektrum, primitive Datentypen, Funktionsaufrufe, Referenzen, Klassen C++ Spezialitäten Schlüsselwort 'const', Copy Constructor,
MehrFortgeschrittene C++-Programmierung
Vorlesung: "Fortgeschrittene C++-Programmierung" 16.04.2009 Fortgeschrittene C++-Programmierung SS 2009 Teil 1 Sandro Andreotti - andreott@inf.fu-berlin.de 1 Vorlesung: "Fortgeschrittene C++-Programmierung"
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
MehrC++ - Einführung in die Programmiersprache Objektorientierte Programmierung
C++ - Einführung in die Programmiersprache Objektorientierte Programmierung hat Kanten hat eine Farbe hat eine Kantenfarbe Rechteck zeichnen Rechteck einfärben Rechteck drehen Modulare Programmierung Projekt
Mehr(allgemeine) OOP in C++ Klassen und header-files Konstruktorn / Destruktoren Speicherverwaltung C++ Standard Library / SLT
Architektur Übersicht (allgemeine) OOP in C++ Polymorphie Virtuelle Funktionen Kompilieren Linken dynamische/statische Bibliotheken Tutorial: vs2008+ogre+(campus modell) Architektur (allgemeine) OOP in
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
MehrObjektorientierte Programmierung mit C++ SS 2007
Objektorientierte Programmierung mit C++ SS 2007 Andreas F. Borchert Universität Ulm 10. Juli 2007 Fortgeschrittene Template-Techniken C++ bietet eine Vielfalt weiterer Techniken für Templates: Templates
MehrC++ für Ingenieure. Einführung in die objektorientierte Programmierung. Seite Programmverzeichnis VII HARALD NAHRSTEDT
VII HARALD NAHRSTEDT C++ für Ingenieure Einführung in die objektorientierte Programmierung Seite Erstellt am 15.01.2009 Beschreibung VIII 1 Grundlagen der Programmierung 1-1 Struktur einer Header-Datei
MehrZusammengesetzte Datentypen -- Arrays und Strukturen
Zusammengesetzte Datentypen -- und Strukturen Informatik für Elektrotechnik und Informationstechnik Benedict Reuschling benedict.reuschling@h-da.de Hochschule Darmstadt Fachbereich Informatik WS 2013/14
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
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?...
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
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
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.
Mehr3 Klassen, Attribute, Methoden
3 Klassen, Attribute, Methoden Jörn Loviscach Versionsstand: 10. April 2011, 10:25 Die nummerierten Felder sind absichtlich leer, zum Ausfüllen in der Vorlesung. Videos dazu: http://www.j3l7h.de/videos.html
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!
MehrProgrammierung in C. Grundlagen. Stefan Kallerhoff
Programmierung in C Grundlagen Stefan Kallerhoff Vorstellungsrunde Name Hobby/Beruf Schon mal was programmiert? Erwartungen an den Kurs Lieblingstier Für zu Hause C-Buch online: http://openbook.rheinwerk-verlag.de/c_von_a_bis_z/
MehrC vs. C++ Sebastian Meyer. Proseminar C - Grundlagen und Konzepte. Universität Hamburg
C vs. C++ Sebastian Meyer Universität Hamburg Proseminar C - Grundlagen und Konzepte 2013 1 / 31 Gliederung 1 Einführung 2 Vergleich der Spracheigenschaften 3 Neue Sprachelemente in C++ 4 Fazit 5 Zusammenfassung
MehrGrundlagen der Programmierung Prof. H. Mössenböck. 6. Methoden
Grundlagen der Programmierung Prof. H. Mössenböck 6. Methoden Parameterlose Methoden Beispiel: Ausgabe einer Überschrift class Sample { static void printheader() { // Methodenkopf Out.println("Artikelliste");
MehrModellierung und Programmierung 1
Modellierung und Programmierung 1 Prof. Dr. Sonja Prohaska Computational EvoDevo Group Institut für Informatik Universität Leipzig 19. November 2015 Gültigkeitsbereich (Scope) von Variablen { int m; {
MehrObjektorientiertes Programmieren für Ingenieure
Uwe Probst Objektorientiertes Programmieren für Ingenieure Anwendungen und Beispiele in C++ 18 2 Von C zu C++ 2.2.2 Referenzen und Funktionen Referenzen als Funktionsparameter Liefert eine Funktion einen
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
MehrTechnische Infor matik 2 C/C++-Kurs. Datenabstraktion (Klassen) 2005 AG Rechner netze 4.1
Technische Infor matik 2 C/C++-Kurs Datenabstraktion (Klassen) 2005 AG Rechner netze 4.1 Overloading Überladene Funktionen Auswahl einer Funktion anhand ihrer Signatur Signatur : Name + Parameter Rückgabe-Wer
MehrEinführung Datentypen Verzweigung Schleifen Funktionen Dynamische Datenstrukturen. Java Crashkurs. Kim-Manuel Klein (kmk@informatik.uni-kiel.
Java Crashkurs Kim-Manuel Klein (kmk@informatik.uni-kiel.de) May 7, 2015 Quellen und Editoren Internet Tutorial: z.b. http://www.java-tutorial.org Editoren Normaler Texteditor (Gedit, Scite oder ähnliche)
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,
MehrEs ist für die Lösung der Programmieraufgabe nicht nötig, den mathematischen Hintergrund zu verstehen, es kann aber beim Verständnis helfen.
Ziele sind das Arbeiten mit Funktionen und dem Aufzählungstyp (enum), sowie - einfache Verzweigung (if else) - Alternativen switch case - einfache Schleifen (while oder do while) Aufgabe 3: Diese Aufgabe
MehrGebundene Typparameter
Gebundene Typparameter interface StringHashable { String hashcode(); class StringHashMap { public void put (Key k, Value v) { String hash = k.hashcode();...... Objektorientierte
MehrKlausur C++ #1 Jahr: 2001; Dozent: Dipl.Ing. Sorber
Klausur C++ #1 Jahr: 2001; Dozent: Dipl.Ing. Sorber 1) Welche Antworten zur Operatorüberladung sind richtig? (1) a) C++ - Operatoren können zusammen mit Objekten funktionieren b) C++ - Operatoren wird
MehrZum Abschluss wird gezeigt, wie aus einem C++ Quell-Programm ein ausführbares Programm erzeugt wird. 1. Installation von NetBeans...
Erste Schritte Dieser Teil der Veranstaltung gibt einen ersten Eindruck der Programmierung mit C++. Es wird ein erstes Gefühl von Programmiersprachen vermittelt, ohne auf die gezeigten Bestandteile genau
MehrProgrammieren Tutorium
Programmieren Tutorium Tom Schildhauer Tutorium 12 Universität Karlsruhe (TH) Institut für Programmstrukturen und Datenorganisation (IPD) Lehrstuhl Programmierparadigmen WS 2008/2009 c 2008 by Tom Schildhauer,
MehrDie Programmiersprache C
Die Programmiersprache C höhere Programmiersprache (mit einigen Assembler-ähnlichen Konstrukten) gut verständliche Kommandos muss von Compiler in maschinenlesbaren Code (Binärdatei) übersetzt werden universell,
MehrProgrammieren I. Strategie zum Entwurf von Klassen. Beispiele. Design von Klassen. Dr. Klaus Höppner. Beispiel: Bibliothek
Programmieren I Dr. Klaus Höppner Hochschule Darmstadt Wintersemester 2008/2009 1 / 22 2 / 22 Strategie zum Entwurf von Klassen Beispiele Objektorientierte Sichtweise: Mit welchen Objekten habe ich es
MehrTutorium Rechnerorganisation
Woche 2 Tutorien 3 und 4 zur Vorlesung Rechnerorganisation 1 Christian A. Mandery: KIT Universität des Landes Baden-Württemberg und nationales Grossforschungszentrum in der Helmholtz-Gemeinschaft www.kit.edu
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,
MehrPIWIN I. Praktische Informatik für Wirtschaftsmathematiker, Ingenieure und Naturwissenschaftler I. Vorlesung 3 SWS WS 2007/2008
PIWIN I Kap. 7 Objektorientierte Programmierung - Einführung 1 PIWIN I Praktische Informatik für Wirtschaftsmathematiker, Ingenieure und Naturwissenschaftler I Vorlesung 3 SWS WS 2007/2008 FB Informatik
Mehreinkonto.zahle(+100); //Transaktion Einzahlung einkonto.zahle(-20); //Transaktion Auszahlung einkonto.zahle(+30); //Transaktion Einzahlung
PIWIN I Kap. 7 Objektorientierte Programmierung - Einführung 28 Testklasse public class TestGirokonto { public static void main(string[] args) { // erzeuge neues Konto Girokonto einkonto = new Girokonto();
MehrÜbersicht. Informatik 2 Teil 3 Anwendungsbeispiel für objektorientierte Programmierung
Übersicht 3.1 Modell Konto 3.2 Modell Konto - Erläuterungen 3.3 Benutzer Ein- und Ausgabe mit Dialogfenster I 3.4 Benutzer Ein- und Ausgabe mit Dialogfenster II 3.5 Klassen- und Objekteigenschaften des
MehrTeil 10: Operator Überladung. Prof. Dr. Herbert Fischer Fachhochschule Deggendorf Prof. Dr. Manfred Beham Fachhochschule Amberg-Weiden
Teil 10: Operator Überladung Prof. Dr. Herbert Fischer Fachhochschule Deggendorf Prof. Dr. Manfred Beham Fachhochschule Amberg-Weiden Inhaltsverzeichnis 10 Operator-Überladung... 3 10.1 Übersicht aller
MehrZusammengehörige Daten struct. Strukturierte Datentypen und Funktionszeiger. Zugriff auf struct-elemente. Variablendeklarationen mit struct
Zusammengehörige Daten Anstatt logisch zusammengehörende Daten in mehreren unabhängigen Variablen zu speichern, kann man für sie einen eigenen Datentyp ( Verbund, Record ) definieren, der diesen Zusammenhang
MehrDer C++ Crashkurs v1.0
Der C++ Crashkurs v1.0 Daniel Stöckel, M. Sc. October 14, 2013 1 Grundlegendes 1.1 Das erste Programm Wir beginnen mit einem einfachen Hello world Programm. Listing 1: hello world.cpp // Einbinden der
MehrObjektorientierte Programmierung
Programmierkurs C++ Kapitel 7:Objektorientierte Programmierung Seite 1 Objektorientierte Programmierung If programming in PASCAL is like put in a straightjacket, then programming in C is like playing with
MehrFB Informatik. Fehler. Testplan
Fehler #include int i,n,summe; int summe (int); cout 0) cin>n; i=summme(n); cout
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
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
MehrKonstruktoren und Destruktoren Initialisierung von Objekten
Konstruktoren und Destruktoren Initialisierung von Objekten Breymann [15] Abschn. 3.3, S. 161ff Konstruktoren Konstruktoren haben keinen Return-Wert, auch nicht void. Methoden sorgen dafür, dass sich das
MehrEinführung in die Programmiersprache C
Einführung in die Programmiersprache C Marcel Arndt arndt@ins.uni-bonn.de Institut für Numerische Simulation Universität Bonn Der Anfang Ein einfaches Programm, das Hello World! ausgibt: #include
MehrC++-Entwicklung mit Linux
C++-Entwicklung mit Linux Eine Einführung in die Sprache und die wichtigsten Werkzeuge von GCC und XEmacs bis Eclipse Thomas Wieland [Druckvorlage vom 10. August 2004] xiii Inhaltsverzeichnis 1 Programmieren
MehrRepetitorium Informatik (Java)
Repetitorium Informatik (Java) Tag 8 Lehrstuhl für Informatik 2 (Programmiersysteme) Übersicht 1 Vererbung Vererbung Statischer Typ Dynamischer Typ 2 Polymorphie Overloading: Methoden überladen Overriding:
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
MehrProgrammieren in C++ Arrays, Strings und Zeigerarithmetik
Programmieren in C++ Arrays, Strings und Zeigerarithmetik Inhalt Eindimensionale C-Arrays C-Strings und Strings (Mehrdimensionale C-Arrays) Arrays und Vektoren (C++) Unique Pointers (C++11) Zeigerarithmetik
MehrInhaltsverzeichnis. Grundbegriffe der C-Programmierung Für den HI-TECH C-Compiler
Inhaltsverzeichnis Grundbegriffe der C-Programmierung 1. Grundsätzliches... 2 1.1 Darstellung von Werten... 2 1.1.1 Dezimale Zahlendarstellung... 2 1.1.2 Binäre Zahlendarstellung... 3 1.1.3 Hexadezimale
MehrTHE GO PROGRAMMING LANGUAGE. Michael Karnutsch & Marko Sulejic
THE GO PROGRAMMING LANGUAGE Part 1: Michael Karnutsch & Marko Sulejic Gliederung Geschichte / Motivation Compiler Formatierung, Semikolons Variablen, eigene Typen Kontrollstrukturen Funktionen, Methoden
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
MehrWiederholung Wozu Methoden? Methoden Schreiben Methoden Benutzen Rekursion?! Methoden. Javakurs 2012, 3. Vorlesung
Wiederholung Wozu? Schreiben Benutzen Rekursion?! Javakurs 2012, 3. Vorlesung maggyrz@freitagsrunde.org 5. März 2013 Wiederholung Wozu? Schreiben Benutzen Rekursion?! 1 Wiederholung 2 Wozu? 3 Schreiben
MehrAlltagsnotizen eines Softwareentwicklers
Alltagsnotizen eines Softwareentwicklers Entkoppeln von Objekten durch Callbacks mit c++-interfaces oder boost.function und boost.bind Tags: c++, entkoppeln, objekt, oop, callback, boost.bind, boost.function,
MehrKurze Einführung in die Programmiersprache C++ und in Root
Kurze Einführung in die Programmiersprache C++ und in Root Statistik, Datenanalyse und Simulation; 31.10.2006 Inhalt 1 Einführung in die Programmiersprache C++ Allgemeines Variablen Funktionen 2 1 Einführung
Mehr