Grundlagen für das Projekt (Teil 2)



3. Objektorientierte Programmierung

3.1. Eine Klassenstruktur erstellen

Worum geht es? 

In diesem Codebeispiel werden drei Klassen erstellt: "Food", "Company" und "Person". Jede Klasse beschreibt einen Gegenstand oder ein Konzept, wie zum Beispiel ein Lebensmittel, ein Unternehmen oder eine Person. Die Klassen speichern Informationen über diese Dinge und können bestimmte Aktionen ausführen, die für diese Dinge relevant sind. Zum Beispiel kann eine Person ein Unternehmen besuchen, bei dem sie arbeitet, oder ein Lebensmittel essen, was ihr Gewicht beeinflusst.

Die Klassen können miteinander verknüpft werden, indem sie ineinander verwendet werden. So kann man komplexere Konzepte und Beziehungen beschreiben. Die Klassenstruktur dient dazu, Daten und Funktionalität in einer übersichtlichen und organisierten Art und Weise bereitzustellen.

Was kannst du danach?

  • Verknüpfen von Klassen durch gegenseitige Verwendung in Member-Variablen
  • Eine Klassenstruktur erstellen, um komplexere Konzepte und Beziehungen zu modellieren und zu implementieren


#include <iostream>
using namespace std; 

class Food
{
public:
    string name{};
    double weight{};
};

class Company
{
public:
    string m_name{}, m_city{};

    void PrintLocation()
    {
        cout << m_name << " liegt in " << m_city;
        cout << endl;
    }
};

class Person
{
public:
    string m_name{};
    double m_weight{};
    Company m_work{};

    void AppliesForWork(Company company)
    {
        m_work = company;
        cout << m_name << " arbeitet bei "
             << m_work.m_name << " " 
             << m_work.m_city << endl;
    }

    void Eats(Food food)
    {
        m_weight += food.weight / 1000; // g in kg
        cout << m_name << " wiegt "
             << m_weight << " kg\n";
    }
};

int main() 
{
    // Member-Funktionen aufrufen
    Company university{"Hochschule", "Emden"};
    Person andreas{"Andreas", 80.0};
    andreas.AppliesForWork(university);
    andreas.Eats(Food{"Apfel", 250});
    
    return 0;
}