From d0668d3cd77ad617c83f6c2f124d84417285766b Mon Sep 17 00:00:00 2001 From: Matthias Schiffer Date: Tue, 16 Sep 2008 17:01:28 +0200 Subject: Initialer Import --- fortgeschritten/01_Klassen/01_Klassen.cpp | 23 +++++++++++++++++++ fortgeschritten/01_Klassen/Makefile | 2 ++ fortgeschritten/01_Klassen/Person.cpp | 32 ++++++++++++++++++++++++++ fortgeschritten/01_Klassen/Person.h | 38 +++++++++++++++++++++++++++++++ fortgeschritten/01_Klassen/README | 3 +++ 5 files changed, 98 insertions(+) create mode 100644 fortgeschritten/01_Klassen/01_Klassen.cpp create mode 100644 fortgeschritten/01_Klassen/Makefile create mode 100644 fortgeschritten/01_Klassen/Person.cpp create mode 100644 fortgeschritten/01_Klassen/Person.h create mode 100644 fortgeschritten/01_Klassen/README (limited to 'fortgeschritten/01_Klassen') diff --git a/fortgeschritten/01_Klassen/01_Klassen.cpp b/fortgeschritten/01_Klassen/01_Klassen.cpp new file mode 100644 index 0000000..b1fa6cb --- /dev/null +++ b/fortgeschritten/01_Klassen/01_Klassen.cpp @@ -0,0 +1,23 @@ +#include +#include "Person.h" + + +int main() { + Person p; + + Person p2("Hans", 20); + + p.printName(); + p.printAlter(); + + p2.printName(); + p2.printAlter(); + + p.setName("Horst"); + p.setAlter(19); + p.printName(); + p.printAlter(); + + return 0; +} + diff --git a/fortgeschritten/01_Klassen/Makefile b/fortgeschritten/01_Klassen/Makefile new file mode 100644 index 0000000..4fc43c4 --- /dev/null +++ b/fortgeschritten/01_Klassen/Makefile @@ -0,0 +1,2 @@ +01_Klassen: 01_Klassen.o Person.o + g++ -o $@ $^ diff --git a/fortgeschritten/01_Klassen/Person.cpp b/fortgeschritten/01_Klassen/Person.cpp new file mode 100644 index 0000000..4beede7 --- /dev/null +++ b/fortgeschritten/01_Klassen/Person.cpp @@ -0,0 +1,32 @@ +#include "Person.h" +#include + + +Person::Person() { + name = "Unbekannt"; + // -1 bedeutet bei uns jetzt, dass wir das Alter nicht wissen + alter = -1; +} + +Person::Person(const std::string &n, int a) { + name = n; + alter = a; +} + +void Person::printName() { + std::cout << "Der Name ist: " << name << std::endl; +} + +void Person::setName(const 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; +} + diff --git a/fortgeschritten/01_Klassen/Person.h b/fortgeschritten/01_Klassen/Person.h new file mode 100644 index 0000000..9109ac6 --- /dev/null +++ b/fortgeschritten/01_Klassen/Person.h @@ -0,0 +1,38 @@ +// Dies sind Präprozessorkommandos, die dafür sorgen, dass Person.h nur einmal eingebunden werden kann +#ifndef _PERSON_H_ +#define _PERSON_H_ + +#include + + +class Person { + private: + std::string name; + int alter; + + public: + Person(); + + // Das & sorgt dafür, dass der String direkt übergeben und nicht kopiert wird, das macht das Programm schneller + // const heißt, dass n nicht verändert wird in der Methode + Person(const std::string &n, int a); + + void printName(); + void setName(const std::string &n); + + // Einfache Methoden können direkt in die Klassendefinition geschrieben werden + // Normalerweise gibt es in einer Klasse zu jeder Eigenschaft eine get- und eine set-Methode + std::string getName() { + return name; + } + + void printAlter(); + void setAlter(int a); + + int getAlter() { + return alter; + } +}; + +#endif //_PERSON_H_ + diff --git a/fortgeschritten/01_Klassen/README b/fortgeschritten/01_Klassen/README new file mode 100644 index 0000000..2bc9921 --- /dev/null +++ b/fortgeschritten/01_Klassen/README @@ -0,0 +1,3 @@ +Normalerweise wird jede Klasse in eigenen Dateien definiert, die Definition in einer .h-Datei, die Methoden in einer .cpp-Datei, das hält die einzelnen Dateien überschaubar. + +In der Datei Makefile ist angegeben, wie das Programm dann aus den einzelnen Dateien erzeugt wird. 'make Klassen_01' wird hier also ein Programm aus Klassen_01 und Person erzeugen, man kann aber auch einfach 'make' eingeben, dann wird die erste Zeile des Makefiles ausgeführt, hier also Klassen_01. -- cgit v1.2.3