diff options
author | Matthias Schiffer <matthias@gamezock.de> | 2008-09-16 17:01:28 +0200 |
---|---|---|
committer | Matthias Schiffer <matthias@gamezock.de> | 2008-09-16 17:01:28 +0200 |
commit | d0668d3cd77ad617c83f6c2f124d84417285766b (patch) | |
tree | 9fad24568d43505120df46a297e0b352d836acc0 /grundelemente/10_Klassen | |
download | c++-tutorial-d0668d3cd77ad617c83f6c2f124d84417285766b.tar c++-tutorial-d0668d3cd77ad617c83f6c2f124d84417285766b.zip |
Diffstat (limited to 'grundelemente/10_Klassen')
-rw-r--r-- | grundelemente/10_Klassen/10_Klassen.cpp | 84 |
1 files changed, 84 insertions, 0 deletions
diff --git a/grundelemente/10_Klassen/10_Klassen.cpp b/grundelemente/10_Klassen/10_Klassen.cpp new file mode 100644 index 0000000..6aba0f1 --- /dev/null +++ b/grundelemente/10_Klassen/10_Klassen.cpp @@ -0,0 +1,84 @@ +#include <iostream> +#include <string> + + +/* Im letzten Teil haben wir std::string kennengelernt. Dieser Typ ist eine sogenannte Klasse. In diesem Teil lernen + * wir nun, wie wir selbst solche Typen definieren. + */ + +// Wir wollen nun eine Klasse erstellen, die einen Eintrag einer Personen-Kartei darstellt + +// Person ist der Name des Typs +class Person { + // Hier stehen Einträge, die nur innerhalb der Klasse verfügbar sind + private: + // Man kann in einer Klasse sowohl Variablen, als auch Funktionen, sogenannte Methoden, definieren + std::string name; + int alter; + + // Dies sind Einträge, die von außen aufrufbar sind + public: + /* Dies sind sogenannte Konstruktoren, sie haben keinen Rückgabewert und den gleichen Namen wie die Klasse; + * sie werden beim erstellen einer neuen Variable vom Typ der Klasse benutzt + */ + Person(); + Person(std::string n, int a); + + void printName(); + void setName(std::string n); + + void printAlter(); + void setAlter(int a); +}; + +/* Außerhalb der Klasse werden die Methoden dann mit Inhalt gefüllt; mit :: beschreibt man, zu welcher Klasse + * die Methoden gehören. Die Variablen der Klasse können dabei genauso benutzt werden wie die Variablen der Funktion + */ +Person::Person() { + name = "Unbekannt"; + // -1 bedeutet bei uns jetzt, dass wir das Alter nicht wissen + alter = -1; +} + +Person::Person(std::string n, int a) { + name = n; + alter = a; +} + +void Person::printName() { + std::cout << "Der Name ist: " << name << std::endl; +} + +void Person::setName(std::string n) { + name = n; +} + +void Person::printAlter() { + if(alter < 0) std::cout << "Das Alter ist unbekannt." << std::endl; + else std::cout << "Das Alter ist: " << alter << std::endl; +} + +void Person::setAlter(int a) { + alter = a; +} + +int main() { + // Hier wird der Konstruktor Person() benutzt + Person p; + + // Hier wird der Konstruktor Person(std::string n, int a) benutzt + Person p2("Hans", 20); + + p.printName(); + p.printAlter(); + + p2.printName(); + p2.printAlter(); + + p.setName(std::string("Horst")); + p.setAlter(19); + p.printName(); + p.printAlter(); + + return 0; +} |