C++ Programmierkurs. 5. Klassen. Wintersemester 04 / 05. Christian Hagemeier Lehrstuhl Prof. Dr. Schrader
|
|
- Jutta Feld
- vor 7 Jahren
- Abrufe
Transkript
1 C++ Programmierkurs Wintersemester 04 / 05 Christian Hagemeier Lehrstuhl Prof. Dr. Schrader Institut für Informatik Universität zu Köln mittwochs 17 18:30 Uhr Hörsaal II der Physikalischen Institute Klassen 5.1 Einführung in Objektorientierung 5.2 Implementation von Klassen 5.3 Zugriffssteuerung in Klassen 5.4 Konstruktoren und Destruktoren 5.5 Objektorientiertes Softwaredesign 5.6 Konstante Klassenelemente 5.7 friend-elemente 5.8 Dynamische Speicherverwaltung: new, delete 5.9 Statische Klassenelemente 5.10 Überladen von Operatoren Gliederung der Vorlesung : Organisatorisches und Einführung : Einführung und Kontrollstrukturen : Kontrollstrukturen : Kontrollstrukturen und Funktionen : Funktionen : Vektoren, Zeiger : Zeiger, Strings : Klassen (1) : Klassen (2), Überladen von Operatoren : Vererbung und Polymorphismus : Datei und Stream Ein /Ausgabe Wiederholung: Objektorientierung Zentraler Aspekt: Kapselung von Daten (Eigenschaften) Funktionen (Verhalten) in Klassen Klassen können als Vorlagen betrachtet werden: es können beliebig viele konkrete Instanzen davon erzeugt werden Prinzip des Information Hiding es wird definiert, wie Klassen miteinander kommunizieren (Interfaces) es wird versteckt, wie die jeweilige Aufgabe erledigt wird Aktionsorientierung (strukturierte Programmierung) vs. Objektorientierung (OO Programmierung)
2 5 7 Wiederholung: Implementation von Klassen Schlüsselwort class Aufbau üblicherweise: class name { public: Methodendeklaration private: Attribute ; Konstante Methoden Bisher: Schlüsselwort const nur für (eingebaute) Variablen Ist Instanz einer Klasse konstant, so dürfen nur konstante Funktionen verwendet werden! Schlüsselwort const muß sowohl in Prototyp als auch Definition der Funktion angegeben werden: Prototyp: nach Parameterliste Definition: vor öffnender geschweifter Klammer Konstruktoren und Destruktor können nicht konstant sein Konstruktor muß in der Lage sein Objekt zu initialisieren Destruktor muß Aktionen zur Beendigung durchführen können Konstante Klassenelemente Prinzip der geringsten Legitimierung: Erlaube nur notwendige Modifikationen an Objekten Schlüsselwort const spezifiziert Objekt, das nicht modifiziert werden soll Syntaxfehler, falls konstantes Objekt modifiziert wird Beispiel: const Time mittag (12, 0, 0); definiert konstantes Objekt mittag der Klasse Time wird mir 12 initialisiert Auszug: konstante Methoden (1) 7 class Time { 8 9 public: 10 Time( int = 0, int = 0, int = 0 ); // default constructor 18 // get functions (normally declared const) 19 int gethour() const; // return hour 32 // end class Time ; const Funktionen modifizieren 54 nicht das Objekt. // return hour value 55 int Time::getHour() const 56 { 57 return hour; 59 // end function gethour
3 Auszug: konstante Methoden (2) friend-elemente 11 8 int main() 9 { 10 Time wakeup( 6, 45, 0 ); // non-constant object 11 const Time noon( 12, 0, 0 ); // constant object // OBJECT MEMBER FUNCTION 14 wakeup.sethour( 18 ); // non-const non-const noon.sethour( 12 ); // const non-const wakeup.gethour(); // non-const const 19 Versuch der Ausführung einer 20 noon.getminute(); // const const nicht konstanten Methode auf 21 noon.printuniversal(); // const const konstantem Objekt ist Syntaxfehler noon.printstandard(); // const non-const return 0; // end main werden außerhalb der Klasse definiert haben das Recht nicht-öffentliche Elemente der Klasse zu verwenden Deklaration: bei Funktionen: Schlüsselwort friend vor Prototyp schreiben Alle Funktionen von KlasseZwei sollen friend von KlasseEins sein: Deklaration der Form friend class KlasseZwei in die Definition von KlasseEins. Variableninitialisierung in Klassen Spezielle Initialisierung bei Konstruktoren kann für alle Variablen einer Klasse verwendet werden muß für konstante Variablen eingesetzt werden Liste der Initialisierungen nach Doppelpunkt hinter Argumentliste: Date::Date( int h, int m, int s ) : hour (h), minute (m), second (s) { Eigenschaften von friend Freundschaft wird zugewiesen (also von der Klasse, auf die zugegriffen werden soll), nicht genommen KlasseZwei Freund von KlasseEins: KlasseEins muß Freundschaft explizit deklarieren Nicht symmetrisch: KlasseZwei ist Freund von KlasseEins KlasseEins ist dann aber nicht automatisch Freund von KlasseZwei Nicht transitiv: KlasseZwei ist friend von KlasseEins KlasseDrei ist friend von KlasseZwei Dann ist KlasseDrei nicht automatisch friend von KlasseEins 12
4 Beispiel: friend (1) 13 Beispiel: friend (3) 15 1 // Fig. 7.11: fig07_11.cpp 2 // Friends can access private members of a class. 3 #include <iostream> 4 5 using std::cout; 6 using std::endl; Funktionsprototyp wird mit 7 Schlüsselwort friend. 8 // Count class definition 9 class Count { Gestartet. 10 friend void setx( Count &, int ); // friend declaration public: // constructor 15 Count() 16 : x( 0 ) // initialize x to 0 17 { 18 // empty body // end Count constructor int main() 43 { 44 Count counter; // create Count object cout << "counter.x after instantiation: "; 47 counter.print(); setx( counter, 8 ); // set x with a friend cout << "counter.x after call to setx friend function: "; 52 counter.print(); Hier wird friend Funktion return 0; für Zugriff und Modifikation 55 von x verwendet. 56 // end main counter.x after instantiation: 0 counter.x after call to setx friend function: 8 Beispiel: friend (2) Dynamische Speicherverwaltung // output x 23 void print() const 24 { 25 cout << x << endl; // end function print private: 30 int x; // data member Count Objekt muß normal 31 für Funktion übergeben 32 ; // end class Count werden, da keine Methode // function setx can modify private data of Count 35 // because setx is declared as a friend of Count 36 void setx( Count &c, int val ) 37 { 38 c.x = val; // legal: setx is a friend of Count 39 Da setx friend von 40 // end function setx 41 Count ist, kann es auf private Variable x zugreifen und sie modifizieren. Bisher: Speicherbeschaffung automatisch durch Compiler bei Initialisierung von Variablen Jetzt: explizite Anforderung neuen Speichers kontrolliert Beschaffung und Freigabe von Speicher mittels Operatoren new und delete Headerdatei <new>
5 Operatoren new und delete 17 Zugriff auf statische Variablen 19 new Beispiel: Time *timeptr; timeptr = new Time; Operator new Erzeugt Objekt von entsprechender Größe des Typs Time ruft Defaultkonstruktor des Objekts auf liefert Zeiger auf entsprechenden Speicher zurück Initialisierung möglich: double *ptr = new double( ); Time *timeptr = new Time( 12, 0, 0 ); delete zerstört dynamisch erzeugtes Objekt und gib Speicher frei ruft Destruktor auf ansprechbar über beliebige Instanz public static Variablen können auch direkt mittels Bereichsauflösungsoperator angesprochen werden: Employee::count private static Variablen (falls keine Instanz existiert): kann nur über public static Methode angesprochen werden zum Aufruf dieser Funktion: Bereichsauflösungsoperator: Employee::getCount() 5.9 Statische Klassenelemente 18 Statische Methoden 20 spiegelt klassenweite Daten wieder Eigenschaft der Klasse, die sich nicht an einem bestimmten Objekt festmachen läßt erscheinen zuerst wie globale Variablen, besitzen aber nach wie vor Klassengeltungsbereich (sind also nur aus der Klasse heraus ansprechbar) werden genau einmal initialisiert: bei Abarbeitung der entsprechenden Stelle der Datei durch Compiler existiert, auch wenn kein Objekt der Klasse existiert Kann selbst wieder public, private (oder protected) sein auch Methoden können statisch sein Sollen Methoden auch unabhängig von Instanzen (Objekten) der Klasse aufrufbar sein, so müssen diese statisch sein: Schlüsselwort static vor Methodendeklaration statische Methoden dürfen keine nicht-statischen Variablen der Klasse verwenden (da diese zum Ausführungszeitpunkt nicht existieren müssen) Statische Methoden und Variablen existieren unabhängig von Objekten der Klasse!
6 5.10 Überladen von Operatoren Grundlagen Methoden vs. friend-funktionen Details zum Überladen von Operatoren Überladen von stream-operatoren 21 Details Nicht geändert werden kann: Funktionsweise bei eingebauten Datentypen Auswertungsreihenfolge der Operatoren Evtl. Verwendung von Klammern Assoziativität (links-rechts oder rechts-links) Anzahl der Operanden Neue Operatoren können nicht definiert werden! Alle Operatoren müssen explizit überladen werden: Überladen von + erzeugt keinen entsprechenden Operator += 23 Grundlagen zum Überladen von Operatoren Warum Operatoren? Intuitiver zu lesen: a + b besser als a.add(b) Kontextsensitivität << ist entweder Ausgabeoperator oder Leftshift-Operator Es können existierende Operatoren für eigene Klassen genutzt werden Neue Operatoren können nicht definiert werden Überladen von Operatoren funktioniert genauso wie Überladen "normaler" Funktionen: entsprechender Funktionsname: "operator" plus entsprechendes Zeichen Beispiel: operator+(... ) 22 Ausnahmen Operators that can be overloaded + - * / % ^ & ~! = < > += -= *= /= %= ^= &= = << >> >>= <<= ==!= <= >= && >*, -> [] () new delete new[] delete[] Operators that cannot be overloaded..* ::?: sizeof 24
7 Methoden vs. friend-funktionen 25 Beispiel: Überladen von << und >> (1) 27 Operator als Methode der entsprechenden Klasse erster (oder einziger) Operand ist automatisch aktuelle Instanz der Klasse Operator als friend-funktion Operator kann als "normale" Funktion definiert werden dann müssen alle Operatoren explizit als Argumente in Argumentliste übergeben werden Bei Zugriff auf private/protected Klassenvariablen: Operator-Funktion muß friend sein Operatoren werden ausgeführt, wenn entsprechende Operation mit den definierten Argumenttypen verwendet wird 1 // Fig. 8.3: fig08_03.cpp 2 // Overloading the stream-insertion and 3 // stream-extraction operators. Prototypen für überladene Operatoren 4 #include <iostream> >> und << können keine Methoden 12 #include <iomanip> sein, da linker Operand nicht von 13 #include <string> Klasse Phonenumber ist: 14 using namespace std; // PhoneNumber class definition 17 class PhoneNumber { cin << object cout >> object 18 friend ostream &operator<<( ostream&, const PhoneNumber & ); 19 friend istream &operator>>( istream&, PhoneNumber & ); private: 22 string areacode; // 3-digit area code 23 string exchange; // 3-digit exchange 24 string line; // 4-digit line // end class PhoneNumber ; Beispiel Methode vs. Funktion 26 Beispiel: Überladen von << und >> (2) 28 Beispiel Klassenmethode: class Test { public: Test operator+( const Test &t ) const; private: int data; ; Test operator+( const Test &t ) const { return data + t.data; Beispiel Funktion: Test operator+( const Test &t1, const Test &t2) const { return t1.data + t2.data; 28 // overloaded stream-insertion operator; cannot be 29 // a member function if we would like to invoke it with 30 // cout << somephonenumber; 31 ostream &operator<<( ostream &output, const PhoneNumber &num ) 32 { 33 output << "(" << num.areacode << ") " 34 << num.exchange << "-" << num.line; return output; // enables cout << a << b << c; // end function operator<< // overloaded stream-extraction operator; 43 istream &operator>>( istream &input, PhoneNumber &num ) 44 { 45 input.ignore(); // skip ( 46 input >> setw( 4 // input area ) >> num.areacode; code 47 input.ignore( 2 ); // skip ) and space 48 input >> setw( 4 ) // input exchange >> num.exchange; 49 input.ignore(); // skip dash (-) 50 input >> setw( 5 ) >> num.line; // input line 52 return input; // enables cin >> a >> b >> c; 54 // end function operator>>
8 Beispiel: Überladen von << und >> (2) // overloaded stream-insertion operator; cannot Der be Ausdruck 29 // a member function if we would like to invoke it with cout << phone; 30 // cout << somephonenumber; wird als folgender Funktionsaufruf 31 ostream &operator<<( ostream &output, const PhoneNumber &num ) interpretiert: 32 { 33 output << "(" << num.areacode << ") " operator<<(cout, phone); 34 << num.exchange << "-" << num.line; output ist ein Alias für cout return output; // enables cout << a << b << c; 37 ignore() überspringt 38 // angegebene end function Anzahl operator<< an 39 Eingabebuchstaben (1 als 40 // Defaultwert). overloaded stream-extraction operator; Hierdurch können Objekte bei Ausgabe 43 istream &operator>>( istream &input, PhoneNumber &num ) "geschachtelt" werden: 44 { cout << phone1 << phone2; 45 input.ignore(); // skip ( ruft als erstes 46 input >> setw( 4 // input area code ) >> num.areacode; 47 input.ignore( 2 ); // skip operator<<(cout, ) and space phone1) auf und 48 input >> setw( 4 ) >> num.exchange; // input liefert exchange cout zurück. Stream Manipulator setw 49 input.ignore(); // skip Dann dash wird (-) cout << phone2 ausgeführt. beschränkt die Anzahl der zu 50 input >> setw( 5 ) >> num.line; lesenden Buchstaben. // input line 52 return input; // enables cin >> a >> b >> c; setw(4) erlaubt das 54 // end function operator>> Einlesen von 3 Zeichen. Beispiel: Überladen von << und >> (3) int main() 57 { 58 PhoneNumber phone; // create object phone cout << "Enter phone number in the form (123) :\n"; // cin >> phone invokes operator>> by implicitly issuing 63 // the non-member function call operator>>( cin, phone ) 64 cin >> phone; cout << "The phone number entered was: " ; // cout << phone invokes operator<< by implicitly issuing 69 // the non-member function call operator<<( cout, phone ) 70 cout << phone << endl; return 0; 74 // end main Enter phone number in the form (123) : (800) The phone number entered was: (800)
C++ Programmierkurs. Wintersemester 04 / 05. Christian Hagemeier. Lehrstuhl Prof. Dr. Schrader Institut für Informatik Universität zu Köln
C++ Programmierkurs 1 Wintersemester 04 / 05 Christian Hagemeier Lehrstuhl Prof. Dr. Schrader Institut für Informatik Universität zu Köln mittwochs 17 18:30 Uhr Hörsaal II der Physikalischen Institute
MehrC++ Programmierkurs. Nachtrag: Vektoren. Wintersemester 04 / 05. Christian Hagemeier Lehrstuhl Prof. Dr. Schrader
C++ Programmierkurs Wintersemester 04 / 05 Christian Hagemeier Lehrstuhl Prof. Dr. Schrader Institut für Informatik Universität zu Köln mittwochs 17 18:30 Uhr Hörsaal II der Physikalischen Institute http://www.zaik.de/afs/teachings/
MehrEinfü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
Mehr7. Ü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
MehrEinfü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
MehrMapra: 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Überladen von Operatoren
- Überladen des Indexoperators [] - Überladen des Ausgabeoperators > Programmieren in C++ Informatik FH Trier C++12-1 ähnlich dem Überladen von Funktionen Überladen
MehrC++ 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
MehrC++ 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
MehrVorlesungsprüfung Programmiersprache 1
Vorlesungsprüfung Programmiersprache 1 Termin der Prüfung: 1) Di 20.03.2018 16:15 17:00 HSB 3 2) Di 15.05.2018 16:15 17:00 HSB 3 3) Di 12.06.2018 16:15 17:00 HSB 3 Stoffgebiete: 1) Ganzzahltypen: char,
MehrDynamische Datentypen. Destruktor, Copy-Konstruktor, Zuweisungsoperator, Dynamischer Datentyp, Vektoren
Dynamische Datentypen Destruktor, Copy-Konstruktor, Zuweisungsoperator, Dynamischer Datentyp, Vektoren Probleme mit Feldern (variabler Länge) man kann sie nicht direkt kopieren und zuweisen Probleme mit
MehrAngewandte Mathematik und Programmierung
Angewandte Mathematik und Programmierung Einführung in das Konzept der objektorientierten Anwendungen zu mathematischen Rechnens WS 2013/14 Operatoren Operatoren führen Aktionen mit Operanden aus. Der
MehrC++ - 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
MehrInformatik - Übungsstunde
Informatik - Übungsstunde Jonas Lauener (jlauener@student.ethz.ch) ETH Zürich Woche 12-23.05.2018 Lernziele Klassen Dynamic Memory Jonas Lauener (ETH Zürich) Informatik - Übung Woche 12 2 / 20 Structs
MehrThema 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:
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
MehrProgrammiertechnik. Teil 4. C++ Funktionen: Prototypen Overloading Parameter. C++ Funktionen: Eigenschaften
Programmiertechnik Teil 4 C++ Funktionen: Prototypen Overloading Parameter C++ Funktionen: Eigenschaften Funktionen (Unterprogramme, Prozeduren) fassen Folgen von Anweisungen zusammen, die immer wieder
MehrC++ - 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
MehrObjektorientierte Programmierung mite**
mc Jürgen Franz/Christoph Mattheis Objektorientierte Programmierung mite** Systemunabhängig umsteigen auf C ++ Windowsprogrammierung Beispiele für UNIX Mit 66 Abbildungen Franzis 9 Inhalt 1 Überblick C++
MehrKapitel 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
MehrProgrammierung und Angewandte Mathematik
Programmierung und Angewandte Mathematik C++ /Scilab Programmierung und Einführung in das Konzept der objektorientierten Anwendungen zu wissenschaftlichen Rechnens SS 2012 Inhalt Compiler/Editor Klassendeklaration
MehrProgrammierkurs. 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
MehrKlassen. 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)
Mehr9. Funktionen Teil II
9. Funktionen Teil II Prof. Dr. Markus Gross Informatik I für D-ITET (WS 03/04)!Inline Funktionen!Referenz-Variablen!Pass by Reference!Funktionsüberladung!Templates Copyright: M. Gross, ETHZ, 2003 2 Inline
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++ Teil 5. Sven Groß. 12. Nov IGPM, RWTH Aachen. Sven Groß (IGPM, RWTH Aachen) C++ Teil Nov / 16
C++ Teil 5 Sven Groß IGPM, RWTH Aachen 12. Nov 2014 Sven Groß (IGPM, RWTH Aachen) C++ Teil 5 12. Nov 2014 1 / 16 Themen der letzten Vorlesung Eingabestrom, Verhalten von cin Namensräume Live Programming
MehrRepetitorium Programmieren I + II
Repetitorium Programmieren I + II Stephan Gimbel Johanna Mensik Michael Roth 24. September 2012 Agenda 1 Funktionen Aufbau und Anwendung Call by Value Call by Reference Überladen von Funktionen Default
MehrEinführung in die Programmierung Wintersemester 2016/17
Einführung in die Programmierung Wintersemester 2016/17 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund : Gültigkeitsbereiche Inhalt Lokale und globale
MehrVerschlüsseln eines Bildes. Visuelle Kryptographie. Verschlüsseln eines Bildes. Verschlüsseln eines Bildes
Verschlüsseln eines Bildes Visuelle Kryptographie Anwendung von Zufallszahlen Wir wollen ein Bild an Alice und Bob schicken, so dass Alice allein keine Information über das Bild bekommt Bob allein keine
MehrObjektorientierte 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
MehrVisuelle Kryptographie. Anwendung von Zufallszahlen
Visuelle Kryptographie Anwendung von Zufallszahlen Verschlüsseln eines Bildes Wir wollen ein Bild an Alice und Bob schicken, so dass Verschlüsseln eines Bildes Wir wollen ein Bild an Alice und Bob schicken,
MehrC++ 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
MehrAuswahlen (Selektionen)
1 Anhang 10.3 Ein/Ausgaben Eingabe mit Prompt (Beispiel) cout ; // Prompt ohne endl cin
MehrDAP2-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
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
MehrInformatik 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:
MehrC++ - 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
MehrEinstieg in die Informatik mit Java
1 / 27 Einstieg in die Informatik mit Java Klassen als Datenstrukturen Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 27 1 Überblick: Klassen als Datenstruktur 2 Vereinbarung
MehrC++ - 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.
MehrEinstieg 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
MehrEinführung in die Programmierung
: Inhalt Einführung in die Programmierung Wintersemester 2010/11 Lokale und globale Variablen Namensräume Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund
MehrPolymorphismus 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
Mehr8. Referenzen und Zeiger
8. Referenzen und Zeiger Motivation Variable werden in C++ an speziellen Positionen im Speicher abgelegt. An jeder Position befindet sich 1 Byte. Sie sind durchnummeriert beginnend bei 0. Diese Positionen
MehrEinfü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
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
MehrPolymorphismus 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
Mehr10.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
MehrImplementieren 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
MehrProgrammieren 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
MehrProgrammierkurs 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
MehrThemen. Formatierte und unformatierte Eingabe Bedingungsoperator Namespaces Kommandozeilenargumente
Themen Formatierte und unformatierte Eingabe Bedingungsoperator Namespaces Kommandozeilenargumente Formatierte Eingabe mit cin Die Formatierung der Eingabe ist der Ausgabe sehr ähnlich: Die Flags werden
MehrInstitut für Programmierung und Reaktive Systeme. Java 6. Markus Reschke
Institut für Programmierung und Reaktive Systeme Java 6 Markus Reschke 13.10.2014 OOP Objekte = Verhalten (durch Methoden) + Daten (durch Attribute) Klassen = Baupläne für Objekte Kapselung von Programmteilen
MehrEinstieg in die Informatik mit Java
1 / 39 Einstieg in die Informatik mit Java Objektorientierte Programmierung und Klassen mit Instanzmethoden Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 39 1 Überblick:
MehrGrundlagen C und C++ Einheit 04: Weitere Grundlagen in C++ Lorenz Schauer Lehrstuhl für Mobile und Verteilte Systeme
Grundlagen C und C++ Einheit 04: Weitere Grundlagen in C++ Lorenz Schauer Lehrstuhl für Mobile und Verteilte Systeme Heutige Agenda Teil 1: Weitere Grundlagen von C++ Das assert Statement File Input und
MehrProgrammierkurs 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
MehrObjektorientierte 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
MehrRepetitorium Programmieren I + II
Repetitorium Programmieren I + II Stephan Gimbel Johanna Mensik Michael Roth 6. März 2012 Agenda 1 Operatoren 2 Datentypen Gleitpunkt Zahl Typkonvertierung 3 Strommanipulatoren 4 Bedingungen if-else switch-case
MehrProgrammierung und Angewandte Mathematik
Programmierung und Angewandte Mathematik C++ /Scilab Programmierung und Einführung in das Konzept der objektorientierten Anwendungen zu wissenschaftlichen Rechnens SS 2012 Ablauf Was sind Funktionen/Methoden
MehrCrashkurs 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
MehrProgrammier-Befehle - Woche 08
Datentypen Vektoren (mehrdim.) eines bestimmten Typs Erfordert: #include Wichtige Befehle: Definition: std::vector my vec (n rows, std::vector(n cols, init value)) Zugriff:
MehrWintersemester 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
Mehr7.2 Dynamischer Speicher in Objekten/Kopierkonstruktor
7.2 Dynamischer Speicher in Objekten/Kopierkonstruktor Das Programmbeispiel aus dem letzten Abschnitt läßt sich bisher nicht zufriedenstellend zu Ende bringen. Unerklärliche Abstürze und Fehlverhalten
MehrC++ Teil 7. Sven Groß. 3. Juni Sven Groß (IGPM, RWTH Aachen) C++ Teil 7 3. Juni / 16
C++ Teil 7 Sven Groß 3. Juni 2016 Sven Groß (IGPM, RWTH Aachen) C++ Teil 7 3. Juni 2016 1 / 16 Themen der letzten Vorlesung dynamische Speicherverwaltung (Wdh.) Cast bei Zeigern STL-Vektoren + Live Programming
MehrObjektorientierte Programmierung Studiengang Medieninformatik
Objektorientierte Programmierung Studiengang Medieninformatik Hans-Werner Lang Hochschule Flensburg Vorlesung 5 12.04.2017 Was bisher geschah... Objektorientierte Programmierung Klassen und Objekte, Attribute
MehrC++ Teil 8. Sven Groß. 5. Dez IGPM, RWTH Aachen. Sven Groß (IGPM, RWTH Aachen) C++ Teil 8 5. Dez / 16
C++ Teil 8 Sven Groß IGPM, RWTH Aachen 5. Dez 2014 Sven Groß (IGPM, RWTH Aachen) C++ Teil 8 5. Dez 2014 1 / 16 Themen der letzten Vorlesung Casts bei Zeigern dynamische Speicherverwaltung Vektoren Typedefs
MehrOOP 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
MehrSimpleStat mit Methoden
SimpleStat mit Methoden Als Ausgangspunkt nehmen wir folgende Definition (Version 1) von SimpleStat: double sum2; -Quadrate Dieser Objekttyp verfügt über keine Methoden und alle Datenattribute sind public.
Mehr7 Funktionen. 7.1 Definition. Prototyp-Syntax: {Speicherklasse} {Typ} Name ({formale Parameter});
S. d. I.: Programieren in C Folie 7-1 7 Funktionen 7.1 Definition Prototyp-Syntax: Speicherklasse Typ Name (formale Parameter); der Funktions-Prototyp deklariert eine Funktion, d.h. er enthält noch nicht
MehrProbeklausur. Musterlösung
Programmierkurs Probeklausur Dr. Steffen Müthing Abgabe 08. Februar 2019 IWR, Universität Heidelberg ipk-exercises:2018-ws-55-gc187ae0 Allgemeine Hinweise: Probeklausur Dieses Übungsblatt wird nicht bewertet.
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 Test-Besprechung! Ziele verdeutlichen Große Bild von OOP Wiederholung: Einbettung als Technik
Mehr16. Structs und Klassen I. Rationale Zahlen, Struct-Definition, Operator-Überladung, Datenkapselung, Klassen-Typen
491 16. Structs und Klassen I Rationale Zahlen, Struct-Definition, Operator-Überladung, Datenkapselung, Klassen-Typen Rechnen mit rationalen Zahlen 492 Rationale Zahlen (Q) sind von der Form n d mit n
MehrInfo B VL 11: Innere Klassen/Collections
Info B VL 11: Innere Klassen/Collections Objektorientiere Programmierung in Java 2003 Ute Schmid (Vorlesung) Elmar Ludwig (Übung) FB Mathematik/Informatik, Universität Osnabrück Info B VL 11: Innere Klassen/Collections
MehrHydroinformatik I: Referenzen und Zeiger
Hydroinformatik I: Referenzen und Zeiger Prof. Dr.-Ing. habil. Olaf Kolditz 1 Helmholtz Centre for Environmental Research UFZ, Leipzig 2 Technische Universität Dresden TUD, Dresden Dresden, 06. Januar
Mehr9. Vektoren. (auch Felder/array)
9. Vektoren (auch Felder/array) Motivation Hat man mehrere Objekte gleichen Datentyps, so kann man sie explizit deklarieren, wenn die Anzahl bekannt ist double x1,x2,x3,x4; Nachteile: versagt, -wenn die
MehrC++ Teil 7. Sven Groß. 26. Nov IGPM, RWTH Aachen. Sven Groß (IGPM, RWTH Aachen) C++ Teil Nov / 18
C++ Teil 7 Sven Groß IGPM, RWTH Aachen 26. Nov 2014 Sven Groß (IGPM, RWTH Aachen) C++ Teil 7 26. Nov 2014 1 / 18 Themen der letzten Vorlesung Referenzen Zeiger Felder dynamische Speicherverwaltung Sven
MehrC++ - Variablen: Gültigkeit - Sichtbarkeit
C++ - Variablen: Gültigkeit - Sichtbarkeit Reiner Nitsch 8417 r.nitsch@fbi.h-da.de Attribute von Variablen und Funktionen Attribute von Variablen sind Name (name), Typ (type), Wert (value) Attribute von
Mehr3 Dateien 5. 4 Aufgaben 5. 5 Ausblick 6. Wir wenden uns der Implementierung von Datenstrukturen mittels objekt-orientierter Programmierung
Contents 1 Ziele dieser Uebung 1 2 Eine Matrix-Klasse 1 3 Dateien 4 Aufgaben Ausblick 6 1 Ziele dieser Uebung 1.1 Einleitung Wir wenden uns der Implementierung von Datenstrukturen mittels objekt-orientierter
MehrInformatik 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
MehrAlgorithmen 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
MehrWo und wie lange leben Objekte? globale Objekte lokale Objekte dynamische Objekte
Wo und wie lange leben Objekte? globale Objekte lokale Objekte dynamische Objekte entstehen durch... globale Objektvereinbarung: T o; blocklokale Objektvereinbarung: {.. T o;.. durch expliziten Aufruf
Mehr1 KLASSENKOMPONENTEN. Leitideen: Klassen sind aus Datenkomponenten und Komponentenfunktionen
1 KLASSENKOMPONENTEN Leitideen: Klassen sind aus Datenkomponenten und Komponentenfunktionen zusammengesetzt. Die Komponentenfunktionen haben über eine Zeigervariable direkten Zugriff auf das Objekt. Die
MehrKlassen als Datenstrukturen
Einstieg in die Informatik mit Java, Vorlesung vom 27.11.07 Übersicht 1 Klassen als Datenstruktur 2 Vereinbarung von Klassen 3 Erzeugen von Objekten - Instanzen einer Klasse 4 Zugriff auf Attribute 5 Initialisierung
MehrC++ Klassen, Vererbung. Philipp Lucas. Sebastian Hack. Wintersemester 2008/09. saarland.
C++ Klassen, Vererbung Philipp Lucas phlucas@cs.uni-sb.de Sebastian Hack hack@cs.uni-sb.de Wintersemester 2008/09 saarland university computer science 1 Inhalt Klassen in C++ Sichtbarkeit Erzeugen von
MehrEinführung in die Programmierung mit C++
1 Seite 1 Einführung in die Programmierung mit C++ Teil III - Objektorientierte Programmierung 10. Vererbung und Polymorphie Vererbung und Polymorphie in C++ Seite 2 Klassen können von anderen Klassen
MehrC++ Teil 5. Sven Groß. 13. Mai Sven Groß (IGPM, RWTH Aachen) C++ Teil Mai / 18
C++ Teil 5 Sven Groß 13. Mai 2016 Sven Groß (IGPM, RWTH Aachen) C++ Teil 5 13. Mai 2016 1 / 18 Themen der letzten Vorlesung Funktionen Funktionsüberladung, Signatur Rekursion const-deklaration Referenzen
MehrVerwendung 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
Mehr17. Klassen. Überladen von Funktionen. Funktionsüberladung. Operator-Überladung (Operator Overloading) operatorop
Überladen von Funktionen 17. Klassen Funktions- und Operatorüberladung, Datenkapselung, Klassen, Memberfunktionen, Konstruktoren Funktionen sind durch Ihren Namen im Gültigkeitsbereich ansprechbar Es ist
MehrProf. 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!
MehrProgrammierkurs. 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
MehrObjektorientierte Programmierung mit C++
2. Neudefinition von globalen Operatoren // Beispiel: allocation trace void* operator new (std::size_t s, const char* info = 0) { if (info) printf("%s\n", info); // NOT cout
MehrKonstruktor/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
MehrPhilipp Güttler Objektorientierung und komplexe Datentypen
Philipp Güttler 23.04.2008 Objektorientierung und komplexe Datentypen Seite 2 Was bedeutet objekt-orientiert? Programmierung ist die Umsetzung von Sachverhalten und Aufgaben Zusammenfassen und Aufteilen
MehrC++ Teil 6. Sven Groß. 23. Nov Sven Groß (IGPM, RWTH Aachen) C++ Teil Nov / 15
C++ Teil 6 Sven Groß 23. Nov 2015 Sven Groß (IGPM, RWTH Aachen) C++ Teil 6 23. Nov 2015 1 / 15 Themen der letzten Vorlesung const-deklaration Referenzen Zeiger Felder Sven Groß (IGPM, RWTH Aachen) C++
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
Mehr4. Objektorientierte Programmierung mit C++
4. Objektorientierte Programmierung mit C++ Einführung C++ / Entwicklung der Sprachfamilie Erweiterungen der Sprache C: Ein- und Ausgabe, Referenzen, Speicherallokation und Freigabe Grundlagen des Typkonzepts
MehrInformatik I (D-ITET)
Informatik I (D-ITET) Übungsstunde 2, 5.10.2009 ETH Zürich? Übungsgruppenwechsel? Abgabe der Übungen... Bis Mo, 24:00 Theorie: Programme: per mail oder auf Papier.cpp Datei per mail Bin euch noch Demos
Mehr