summaryrefslogtreecommitdiffstats
path: root/contents/wissen/cpp-tutorial/10-klassen.php
blob: 96905c77929a491941f7ce83a1d0bccdef56e939 (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
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
<?php
	$author = 'Jakob und Matthias';
	$pathToRoot = '../../../';
?>
<?php
	include($pathToRoot . 'includes/firstinclude.inc.php');
	include($pathToRoot . 'includes/header.inc.php');
	include($pathToRoot . 'includes/mainmenu.inc.php');
	
	include($pathToRoot . 'sidebars/wissen/cpp.inc.php');
?>

<div id="inhalt">
	<h2>
		10. Klassen
	</h2>
	<p>
		<code style="white-space:pre">
#include &lt;iostream&gt;
#include &lt;string&gt;
	
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 = &quot;Unbekannt&quot;;
  // -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 &lt;&lt; &quot;Der Name ist: &quot; &lt;&lt; name &lt;&lt; std::endl;
}
	
void Person::setName(std::string n) {
  name = n;
}
	
void Person::printAlter() {
  if(alter &lt; 0) std::cout &lt;&lt; &quot;Das Alter ist unbekannt.&quot; &lt;&lt; std::endl;
  else std::cout &lt;&lt; &quot;Das Alter ist: &quot; &lt;&lt; alter &lt;&lt; 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(&quot;Hans&quot;, 20);
  	
  p.printName();
  p.printAlter();
  	
  p2.printName();
  p2.printAlter();
  	
  p.setName(std::string(&quot;Horst&quot;));
  p.setAlter(19);
  p.printName();
  p.printAlter();
  
  return 0;
}
	
		</code>
	</p>
	
	<p>
		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.
	</p>
	<p>
		Wir wollen also eine Klasse erstellen, die einen Eintrag einer Personen-Kartei darstellt.
	</p>
	<p>
 		Der Name des neuen Typs steht hinter class, in diesem Fall Person.
	</p>
	<p>
	  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
	</p>
	<p>
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.
	</p>
</div>
	
<?php
	include($pathToRoot . 'includes/footer.inc.php');
	include($pathToRoot . 'includes/lastinclude.inc.php');
?>