summaryrefslogtreecommitdiffstats
path: root/contents/wissen/cpp-tutorial/10-klassen.php
diff options
context:
space:
mode:
Diffstat (limited to 'contents/wissen/cpp-tutorial/10-klassen.php')
-rw-r--r--contents/wissen/cpp-tutorial/10-klassen.php115
1 files changed, 115 insertions, 0 deletions
diff --git a/contents/wissen/cpp-tutorial/10-klassen.php b/contents/wissen/cpp-tutorial/10-klassen.php
new file mode 100644
index 0000000..96905c7
--- /dev/null
+++ b/contents/wissen/cpp-tutorial/10-klassen.php
@@ -0,0 +1,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');
+?>