Seminar: "Einführung in C/C++" Einführung in die Programmiersprache C/C++ Donnerstag Andreas Döring SS 2004.

Slides:



Advertisements
Ähnliche Präsentationen
Einführung in die Programmiersprache C/C++
Advertisements

Ziele von EINI I + II Einführen in „Informatik“
Einführung in die Programmiersprache C/C++
Objektorientierte Programmierung
Universität Dortmund, Lehrstuhl Informatik 1 EINI II Einführung in die Informatik für Naturwissenschaftler und Ingenieure.
Programmierkurs C/C++
Java: Objektorientierte Programmierung
Java: Dynamische Datentypen
Indirekte Adressierung
Java: Referenzen und Zeichenketten
Java: Grundlagen der Objektorientierung
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Kapitel 9 Claudio Moraga; Gisbert Dittrich FBI Unido
Universität Dortmund, Lehrstuhl Informatik 1 EINI II Einführung in die Informatik für Naturwissenschaftler und Ingenieure.
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Kapitel 7 Claudio Moraga, Gisbert Dittrich FBI Unido
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Kapitel 5 Claudio Moraga; Gisbert Dittrich FBI Unido
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Vorlesung 2 SWS WS 99/00 Gisbert Dittrich FBI Unido
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Vorlesung 2 SWS WS 99/00 Gisbert Dittrich FBI Unido
Universität Dortmund, Lehrstuhl Informatik 1 EINI II Einführung in die Informatik für Naturwissenschaftler und Ingenieure.
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Vorlesung 2 SWS WS 99/00 Gisbert Dittrich FBI Unido
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Vorlesung 2 SWS WS 99/00 Gisbert Dittrich FBI Unido
Imperative Programmierung
Einführung in die Programmierung mit Java
Programmieren mit JAVA
Programmieren mit JAVA
PKJ 2005/1 Stefan Dissmann Ausblick Es fehlen noch: Möglichkeiten zum Strukturieren größerer Programme Umgang mit variabler Zahl von Elementen Umgang mit.
PKJ 2005/1 Stefan Dissmann Rückblick auf 2005 Was zuletzt in 2005 vorgestellt wurde: Klassen mit Attributen, Methoden und Konstruktoren Referenzen auf.
Abstrakter Datentyp in C++ I - Klasse -
Die Skriptsprache Perl (8) Wolfgang Friebel DESY Zeuthen.
© 2002 Dr. Cavelius - Ley - Pohlig - Taulien Programmierung im Netz und Internet: Einführung in die Programmiersprache Java Teil I 1 Klassen Objekte von.
Einführung in die Programmierung
Informatik 1 Übung 8. NACHBESPRECHUNG Übung 8 Rekursion Existiert Weg von A nach B?
Einführung in die Programmierung
Einführung in die Programmierung Wintersemester 2008/09 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund.
Einführung in die Programmiersprache C 3.Tag Institut für Mathematische Optimierung - Technische Universität Braunschweig.
EPROG Tutorium Einheit 4 Klassen und Objekte. Wiederholung Schleifen do... while while for break/continue Strings String char Methoden für Strings Arrays.
Einführung in die Programmierung Wintersemester 2012/13 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund.
Einführung in die Programmierung Wintersemester 2008/09 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund.
Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fachbereich.
Einführung in die Programmierung Wintersemester 2008/09 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund.
Einführung in die Programmierung Wintersemester 2008/09 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund.
Einführung in die Informatik für Naturwissenschaftler und Ingenieure
Einführung in die Programmierung Wintersemester 2009/10 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund.
Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fachbereich.
Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fakultät.
Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fachbereich.
Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fachbereich.
Einführung in die Programmierung Wintersemester 2011/12 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund.
Einführung in die Programmiersprache C 4
Informatik 1 Letzte Übung.
Dynamische Datentypen
Lindenmayer-Systeme: Fraktale rekursiv zeichnen
Referenztypen (II) und Const- Referenzen Temporäre Objekte, Const- Referenzen, was genau ist konstant?
Dienstag Informatik 1 Tag 2
Parameterübergabemechanismen für den Methodenaufruf
Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fachbereich.
Polymorphie (Vielgestaltigkeit). Wenn eine Methode, wie z.B. print für verschiedene Programmteile steht (und z.B. einmal Objekte verschiedener Klassen.
early binding (frühe Bindung) late binding (späte Bindung)
Erweiterte Zuweisungskompatibilität. Wie kann man Objekte verschiedener Klassen einer Klassenhierarchie einander zuweisen ?
Tutorium Software-Engineering SS14 Florian Manghofer.
Tutorium Software-Engineering SS14 Florian Manghofer.
Tutorium Software-Engineering SS14 Florian Manghofer.
Tutorium Software-Engineering SS14 Florian Manghofer.
Tutorium Software-Engineering SS14 Florian Manghofer.
C++ FÜR cOMPUTERSPIELENTWICKLER
Tutorium Software-Engineering SS14 Florian Manghofer.
Strukturen (Eigenschaften) Strukturen dienen zur Zusammenfassung mehrerer Komponenten verschiedener Typen zu einer Einheit, die dann mit gemeinsamen Namen.
Tutorium Software-Engineering SS14 Florian Manghofer.
Dynamischer Speicher malloc wird in c++ eher nicht mehr verwendet.
Operatorüberladung + - * / % ^ & | ~ ! , = < > <= >= ++ --
Implementieren von Klassen
 Präsentation transkript:

Seminar: "Einführung in C/C++" Einführung in die Programmiersprache C/C++ Donnerstag Andreas Döring SS 2004

Seminar: "Einführung in C/C++"2 Member-Funktion kennt ihr Objekt Bei dem Aufruf einer Member-Funktion weiß diese, zu welchem Objekt der Aufruf geschieht: struct Hamster { void fuettern() { ++Gewicht; } int Gewicht; }; Hamster billy; billy.fuettern(); erhöhe billy.Gewicht

Seminar: "Einführung in C/C++"3 Der this -Pointer In einer Member-Funktion zeigt der this -Pointer auf das aktuelle Objekt: struct Hamster { void fuettern() { ++( this->Gewicht ); } int Gewicht; }; this hat den Typ Hamster *

Seminar: "Einführung in C/C++"4 Ctors und Dtor Konstruktoren: Aufruf bei Erzeugung eines Objekts. Destruktor: Aufruf bei der Zerstörung eines Objekts. Konstruktor ohne Argument: Default Ctor struct Hamster { Hamster() { } };

Seminar: "Einführung in C/C++"5 Ablaufplan beim Erzeugen/Zerstören Objekt erzeugen: 1.Rufe Default Ctors der Basisklassen auf. 2.Rufe Default Ctors der Member-Variablen auf. 3.Rufe den Ctor des Objektes selbst auf. (Ablaufplan bei Zerstörung: Übungsaufgabe)

Seminar: "Einführung in C/C++"6 Objekte kopieren Es gibt zwei Fälle, in denen Objekte kopiert werden: 1. Initialisierung: Hamster billy; Hamster sunny = billy; 2. Zuweisung: Hamster billy, sunny; sunny = billy;

Seminar: "Einführung in C/C++"7 1. Kopieren bei Initialisierung Objekte werden mit dem Copy Konstruktor bei der Initialisierung kopiert: struct Hamster { Hamster() { Alter = 0; } Hamster(Hamster const & ham){ Alter = ham.Alter; } int Alter; }; Hamster billy; Hamster sunny = billy;

Seminar: "Einführung in C/C++"8 Copy-Ctor im Detail Hamster (Hamster const & ham) { Alter = ham.Alter; } Anmerkungen: Das Argument ham ist const : Es wird durch den CTor nicht verändert. Alternative Schreibweise für Initialisierung: Hamster billy; Hamster sunny(billy);

Seminar: "Einführung in C/C++"9 2. Kopieren bei Zuweisung Bei Zuweisungen wird statt dessen der assignment- Operator ausgeführt: struct Hamster {... Hamster & operator= (Hamster const & ham) { Alter = ham.Alter; return *this; } int Alter; }; Hamster billy, sunny; sunny = billy;

Seminar: "Einführung in C/C++"10 operator= im Detail Hamster & operator= (Hamster const & ham) { Alter = ham.Alter; return *this; } Anmerkungen: Argument ham ist const : Es wird durch operator= nicht verändert. Es wird das Objekt selbst zurückgegeben: *this Der Typ der Rückgabe ist Hamster &.

Seminar: "Einführung in C/C++"11 Operatoren überladen Man kann fast alle Operatoren überladen. Ausnahmen (u.a.):. (Member selection) :: (Scope resolution) Zwei Möglichkeiten: 1.Durch Member-Funktion 2.Durch globale Funktion

Seminar: "Einführung in C/C++"12 1. Operatoren als Member-Funktion unäre Operatoren: Wirken aufs aktuelle Objekt Hamster & Hamster::operator~ () {...} binäre Operatoren: Aktuelles Objekt steht links. Hamster & Hamster::operator+ ( int const right ) {... }

Seminar: "Einführung in C/C++"13 2. Operatoren als globale Funktion unäre Operatoren: Hamster & operator~ (Hamster const & hams) {...} binäre Operatoren: Aktuelles Objekt steht links. Hamster & operator+ (Hamster const & left, int const right) {... }

Seminar: "Einführung in C/C++"14 virtuelle Funktionen (1) Das Problem: sei z.B. folgendes Programm gegeben: struct Auto { void tanken() { std::cout << "Benzin";...} void starten() { if (Tankfuellung == 0) tanken();... } }; struct Solarmobil: Auto { void tanken() { std::cout << "Sonne";... } };

Seminar: "Einführung in C/C++"15 virtuelle Funktionen (2)... Solarmobil mob; mob.starten(); Ausgabe: Benzin Grund: Die Basisklasse Auto kennt die abgeleitete Klasse Solarmobil nicht. void starten() { tanken(); this-Pointer hat Typ Auto * }

Seminar: "Einführung in C/C++"16 virtuelle Funktionen (3) Lösungsmöglichkeit: virtual struct Auto { virtual void tanken() {...} };... Solarmobil mob; mob.starten();//Ausgabe: "Sonne"

Seminar: "Einführung in C/C++"17 Standardlibraries Standard Headerdateien:

Seminar: "Einführung in C/C++"18 (Notizseite)