diff --git a/.idea/workspace.xml b/.idea/workspace.xml
index 96512c1..9c6c366 100644
--- a/.idea/workspace.xml
+++ b/.idea/workspace.xml
@@ -10,21 +10,8 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
@@ -249,6 +236,7 @@
+
diff --git a/_pruefung/classes.cpp b/_pruefung/classes.cpp
new file mode 100644
index 0000000..010c104
--- /dev/null
+++ b/_pruefung/classes.cpp
@@ -0,0 +1,97 @@
+#include "iostream"
+#include "string"
+#include "vector"
+#include
+
+class University;
+class UniMember {
+public:
+ University* uni;
+ std::string name;
+ int id;
+
+ UniMember(University* university, std::string name, int id) {
+ this->uni = university;
+ this->name = name;
+ this->id = id;
+ }
+};
+
+class UniWorker: public UniMember {
+public:
+ UniWorker(University* university, std::string name, int id)
+ : UniMember(university, name, id) {}
+
+};
+
+class UniStudent: public UniMember {
+public:
+ UniStudent(University* university, std::string name, int id)
+ : UniMember(university, name, id) {}
+
+ void evaluate_exam(double grade){
+ grades.push_back(grade);
+ }
+
+ double calc_avg(){
+ if(grades.empty()) return 0;
+ auto const count = static_cast(grades.size());
+ return std::reduce(grades.begin(), grades.end()) / count;
+ }
+
+private:
+ std::vector grades;
+};
+
+class University {
+public:
+ std::string name;
+ UniWorker* dean;
+
+ University(std::string name) {
+ this->name = name;
+ }
+
+ UniWorker* create_worker(std::string mem_name) {
+ int id = members.size() + 1;
+ UniWorker* worker = new UniWorker(this, mem_name, id);
+ members.push_back(worker);
+ return worker;
+ }
+
+ UniStudent* create_student(std::string mem_name) {
+ int id = members.size() + 1;
+ UniStudent* student = new UniStudent(this, mem_name, id);
+ members.push_back(student);
+ return student;
+ }
+
+ void elect_dean(UniWorker* worker) {
+ dean = worker;
+ }
+
+ int count_members() {
+ return members.size();
+ }
+private:
+ std::vector members;
+};
+
+
+int main() {
+ University* trier = new University("Trier");
+ UniWorker* dean = trier->create_worker("Eva Eckkrammer");
+ trier->elect_dean(dean);
+ UniStudent* student = trier->create_student("Jan-Niclas Loosen");
+ student->evaluate_exam(1.3);
+ student->evaluate_exam(2.3);
+ student->evaluate_exam(1.3);
+ student->evaluate_exam(3.3);
+
+ std::cout << "Die Universitaet " << trier->name << " hat " << trier->count_members() << " Mitglieder." << std::endl;
+ std::cout << "Die Dekanin der Universitaet " << trier->name << " heisst " << trier->dean->name << "." << std::endl;
+ std::cout << student->name << " hat einen Notenschnitt von " << student->calc_avg() << "." << std::endl;
+}
+
+
+
diff --git a/_pruefung/classes.exe b/_pruefung/classes.exe
new file mode 100644
index 0000000..7680678
Binary files /dev/null and b/_pruefung/classes.exe differ
diff --git a/_pruefung/empty.txt b/_pruefung/empty.txt
deleted file mode 100644
index 26eb25c..0000000
--- a/_pruefung/empty.txt
+++ /dev/null
@@ -1 +0,0 @@
-Ad astra per aspera.
\ No newline at end of file
diff --git a/_pruefung/plan.txt b/_pruefung/plan.txt
new file mode 100644
index 0000000..83b4a9e
--- /dev/null
+++ b/_pruefung/plan.txt
@@ -0,0 +1,2 @@
+1. Begriffe durchgehen
+2. Nochmal C++ mit Pointern und so abchecken (Arrays vs. Vectors insbesondere)
\ No newline at end of file