Seminar Einfhrung in CC Einfhrung in die Programmiersprache

  • Slides: 27
Download presentation
Seminar: "Einführung in C/C++" Einführung in die Programmiersprache C/C++ “Mittwoch” Andreas Döring doering@inf. fu-berlin.

Seminar: "Einführung in C/C++" Einführung in die Programmiersprache C/C++ “Mittwoch” Andreas Döring doering@inf. fu-berlin. de SS 2004

Seminar: "Einführung in C/C++" 2 Organisatorisches: Es werden keine benoteten Scheine ausgegeben. Wer einen

Seminar: "Einführung in C/C++" 2 Organisatorisches: Es werden keine benoteten Scheine ausgegeben. Wer einen unbenoteten Schein haben will, muss Donnerstag Nachmittag an den praktischen Übungen teilnehmen und dort eine Aufgabe am Rechner lösen und vorführen. (Gruppenarbeit erlaubt). Der unbenotete Schein wird 2 credits (ETCS) ausweisen. In wie weit der Schein in den Studiengängen der Teilnehmer als Studienleistung angerechnet werden kann, entscheiden die einzelnen Prüfungsämter.

Seminar: "Einführung in C/C++" 3 Zur Einstimmung: Überladung Verschiedene Funktionen mit gleichem Namen: int

Seminar: "Einführung in C/C++" 3 Zur Einstimmung: Überladung Verschiedene Funktionen mit gleichem Namen: int max(int a, int b) { if (a > b) return a; return b; } int max(int a, int b, int c) { return max(a, b), c ); }

Seminar: "Einführung in C/C++" 4 Überladung: Regeln Die überladenen Funktionen müssen sich (paarweise) voneinander

Seminar: "Einführung in C/C++" 4 Überladung: Regeln Die überladenen Funktionen müssen sich (paarweise) voneinander unterscheiden: Durch die Zahl ihrer Argumente oder Durch den Typ des i-ten Arguments

Seminar: "Einführung in C/C++" 5 Default Argumente Funktionsargumente können Defaults bekommen: int print_person (char

Seminar: "Einführung in C/C++" 5 Default Argumente Funktionsargumente können Defaults bekommen: int print_person (char * name, int alter = 18, char * initialen = "N. N. ") { std: : cout << name << "(" << alter << ")" << initialen; } print_person ( "Cindy", 20); Ausgabe: Cindy(20)N. N.

Seminar: "Einführung in C/C++" 6 Klassen sind Typen, die gewisse Member zusammenfassen. Member können

Seminar: "Einführung in C/C++" 6 Klassen sind Typen, die gewisse Member zusammenfassen. Member können Variablen oder Funktionen sein. Objekte sind Variablen vom Typ einer Klasse. Bsp. : struct Hamster { int Alter; char Name[256]; void fuettern(); };

Seminar: "Einführung in C/C++" 7 Deklaration einer Klassen werden wie folgt deklariert: struct NAME;

Seminar: "Einführung in C/C++" 7 Deklaration einer Klassen werden wie folgt deklariert: struct NAME; Oder: class NAME;

Seminar: "Einführung in C/C++" 8 Definition einer Klasse Bei der Definition einer Klasse müssen

Seminar: "Einführung in C/C++" 8 Definition einer Klasse Bei der Definition einer Klasse müssen alle Member deklariert werden: struct Hamster { int Alter; char Name[256]; void fuettern(); }; Member-Variablen: Schreibe wie Definition. Member-Funktionen: Schreibe wie Deklaration.

Seminar: "Einführung in C/C++" 9 Member-Funktionen definieren Member-Funktionen müssen definiert werden. 1. Möglichkeit: Innerhalb

Seminar: "Einführung in C/C++" 9 Member-Funktionen definieren Member-Funktionen müssen definiert werden. 1. Möglichkeit: Innerhalb der Klassendefinition struct Hamster { void fuettern() { //jetzt bekommt der Hamster Futter! } };

Seminar: "Einführung in C/C++" 10 Member-Funktionen definieren 2. Möglichkeit: Außerhalb der Klassendefinition struct Hamster

Seminar: "Einführung in C/C++" 10 Member-Funktionen definieren 2. Möglichkeit: Außerhalb der Klassendefinition struct Hamster { void fuettern(); }; void Hamster: : fuettern() { //jetzt bekommt der Hamster Futter! }

Seminar: "Einführung in C/C++" 11 Klassen programmieren Typisches Vorgehen: In eine. h-Datei: Klassendefinition In

Seminar: "Einführung in C/C++" 11 Klassen programmieren Typisches Vorgehen: In eine. h-Datei: Klassendefinition In eine. cpp-Datei: Definition der Member. Funktionen. Anmerkung: Bei Klassen ist die Definition in einer Headerdatei erlaubt.

Seminar: "Einführung in C/C++" 12 Objekte erzeugen Objekte erzeugt man wie andere Variablen auch:

Seminar: "Einführung in C/C++" 12 Objekte erzeugen Objekte erzeugt man wie andere Variablen auch: struct Hamster { int Alter; char Name[256]; void fuettern(); }; Hamster billy; Preisfrage: Wie deklariert man ein Objekt?

Seminar: "Einführung in C/C++" 13 Objekte benutzen Auf die Member eines Objektes kann man

Seminar: "Einführung in C/C++" 13 Objekte benutzen Auf die Member eines Objektes kann man mit dem member-selection-Operator. zugreifen: struct Hamster { int Alter; char Name[256]; void fuettern(); }; Hamster billy; billy. Alter = 4; billy. fuettern();

Seminar: "Einführung in C/C++" 14 Objektpointer benutzen Hat man einen Pointer auf ein Objekt,

Seminar: "Einführung in C/C++" 14 Objektpointer benutzen Hat man einen Pointer auf ein Objekt, so kann man auch den Pfeiloperator -> benutzen. Hamster billy; Hamster * mein_hamster = & billy; mein_hamster->fuettern(); ist das gleiche wie: (*mein_hamster). fuettern();

Seminar: "Einführung in C/C++" 15 Objektpointer als Member Eine Klasse C kann Member vom

Seminar: "Einführung in C/C++" 15 Objektpointer als Member Eine Klasse C kann Member vom Typ C * enthalten. Bsp. : struct Hamster { Hamster * Sohn; Hamster * Mutter; }; Hamster nina; Hamster billy; billy. Mutter = & nina; billy. Mutter->Sohn = & billy;

Seminar: "Einführung in C/C++" 16 Member-Funktion ruft Member Von einer Member-Funktion aus kann man

Seminar: "Einführung in C/C++" 16 Member-Funktion ruft Member Von einer Member-Funktion aus kann man direkt auf die Member des Objekts zugreifen: struct Hamster { bool ist_satt; void fuettern(); }; void Hamster: : fuettern() { ist_satt = true; }

Seminar: "Einführung in C/C++" 17 public und private schützt Member vor Zugriff „von außen“:

Seminar: "Einführung in C/C++" 17 public und private schützt Member vor Zugriff „von außen“: struct Hamster { private: bool ist_satt; public: void fuettern() { ist_satt = true; } }; Hamster billy; billy. ist_satt = true; //Fehler!

Seminar: "Einführung in C/C++" 18 Vererbung Klassen können die Member anderer Klasse „erben“: struct

Seminar: "Einführung in C/C++" 18 Vererbung Klassen können die Member anderer Klasse „erben“: struct Tier { int gewicht; void fuettern() { ++gewicht; } }; struct Goldfisch: Tier { int wert; }; Goldfisch billy; billy. gewicht = 100; billy. fuettern();

Seminar: "Einführung in C/C++" 19 Multiple Vererbung Eine Klasse kann auch mehrere Basisklassen haben:

Seminar: "Einführung in C/C++" 19 Multiple Vererbung Eine Klasse kann auch mehrere Basisklassen haben: struct Fahrzeug { int Geschwindigkeit; }; struct Wertgegenstand { int Wert; }; struct Golf: Fahrzeug, Wertgegenstand { }; Golf mein. Auto; mein. Auto. Geschwindigkeit = 180; mein. Auto. Wert = 18000;

Seminar: "Einführung in C/C++" 20 Member überladen Die Member-Definitionen in der abgeleiteten Klasse überladen

Seminar: "Einführung in C/C++" 20 Member überladen Die Member-Definitionen in der abgeleiteten Klasse überladen die der Basisklassen: struct Auto { void tanken() { std: : cout << "Benzin"; } }; struct Solarmobil: Auto { void tanken() { std: : cout << "Sonne"; } };

Seminar: "Einführung in C/C++" 21 Auswahl bei Überladung. . . Solarmobil mob; mob. tanken();

Seminar: "Einführung in C/C++" 21 Auswahl bei Überladung. . . Solarmobil mob; mob. tanken(); //Ausgabe "Sonne" Zugriff auf die Basisklassen-Funktion: mob. Auto: : tanken(); //Ausgabe "Benzin" Alternative: Auto * aut = & mob; aut->tanken(); //Ausgabe "Benzin"

Seminar: "Einführung in C/C++" 22 Private Basisklassen Die Member von privaten Basisklassen sind nur

Seminar: "Einführung in C/C++" 22 Private Basisklassen Die Member von privaten Basisklassen sind nur den Member-Funktionen der abgeleiteten Klasse zugänglich: struct Geldboerse { int Betrag; }; struct Panzerschrank: private Geldboerse { void ausrauben() { Betrag = 0; } }; Panzerschrank p; p. Betrag = 10; //Fehler!

Seminar: "Einführung in C/C++" 23 Konstruktoren Spezielle Member-Funktionen, die automatisch bei der Erzeugung eines

Seminar: "Einführung in C/C++" 23 Konstruktoren Spezielle Member-Funktionen, die automatisch bei der Erzeugung eines Objektes aufgerufen werden: struct Hamster { Hamster() { int Alter; }; Alter = 0; } Konstruktoren geben keinen Typen zurück (nicht einmal void).

Seminar: "Einführung in C/C++" 24 Überladene Member-Funktionen Memberfunktionen können überladen werden: struct Hamster {

Seminar: "Einführung in C/C++" 24 Überladene Member-Funktionen Memberfunktionen können überladen werden: struct Hamster { void fuettern(int X) { Gewicht += X; } void fuettern() { ++Gewicht; } int Gewicht; };

Seminar: "Einführung in C/C++" 25 Überladene Konstruktoren sind oft überladen: struct Hamster { Hamster

Seminar: "Einführung in C/C++" 25 Überladene Konstruktoren sind oft überladen: struct Hamster { Hamster () { Gewicht = 0; } Hamster (int X) { Gewicht = X; } int Gewicht; }; Hamster billy(20); std: : cout << billy. Gewicht; //20

Seminar: "Einführung in C/C++" 26 Destruktoren werden aufgerufen, wenn das Objekt zerstört wird. struct

Seminar: "Einführung in C/C++" 26 Destruktoren werden aufgerufen, wenn das Objekt zerstört wird. struct Hamster { Hamster (char * name = "Billy") { Name = name; std: : cout << "Hamster geboren! : -)n"; } ~Hamster () { std: : cout << "Hamster stirbt! : -(n"; } char * Name; };

Seminar: "Einführung in C/C++" 27 (Fortsetzung) void hamsterleben() { Hamster billy; std: : cout

Seminar: "Einführung in C/C++" 27 (Fortsetzung) void hamsterleben() { Hamster billy; std: : cout << "Es lebe der Hamster!n"; std: : cout << "Er heißt" << billy. Name << ". n"; } Starte: hamsterleben() Ausgabe: Hamster geboren! : -) Es lebe der Hamster! Es heißt Billy. Hamster stirbt! : -(