#include <iostream>
#include <string>
class Person
{
private:
std::string name;
int alter;
public:
/* Dies sind sogenannte Kontruktoren,
* 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);
};
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;
}
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 also eine Klasse erstellen, die einen Eintrag einer Personen-Kartei darstellt.
Der Name des neuen Typs steht hinter class, in diesem Fall Person.
Unter private stehen Einträge, die nur innerhalb der Klasse verfügbar sind, unter public stehen solche, die auch von außen aus aufrufbar sind. Man kann in einer Klasse sowohl Variablen, als auch Funktionen, sogenannte Methoden, definieren
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.