summaryrefslogtreecommitdiffstats
path: root/grundelemente/10_Klassen/10_Klassen.cpp
blob: 6aba0f19a3f6517f5d44e296ad79e4baea88f2e7 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
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;
}