SS 2025
This commit is contained in:
@@ -0,0 +1,162 @@
|
||||
#include <iostream>
|
||||
#include <string>
|
||||
|
||||
/*
|
||||
KLassenhierarchie
|
||||
|
||||
1. tier
|
||||
Attribute: gewicht, groesse
|
||||
Methoden: fortbewegen(), atmen(), essen()
|
||||
1.1. saeugetier
|
||||
1.1.1. hund
|
||||
Attribute: gattung
|
||||
Methoden: anbellen(tier t), fortpflanzen(hund h)
|
||||
1.1.1.1. pudel
|
||||
1.2. insekt
|
||||
1.2.1. biene
|
||||
*/
|
||||
|
||||
/*
|
||||
Klasse Tier: Basis-Klasse in der Klassenstruktur.
|
||||
Kann genutzt werden, um allgemeine Eigenschaften und Verhaltensweisen von Tieren abzubilden.
|
||||
Wir haben die Methoden essen(), atmen(), und fortbewegen() als virtual in der Basisklasse Tier definiert, was bedeutet, dass sie in den abgeleiteten Klassen überschrieben werden koennen, wenn dies gewünscht wird.
|
||||
*/
|
||||
class Tier
|
||||
{
|
||||
public:
|
||||
int gewicht;
|
||||
int groesse;
|
||||
|
||||
// Konstruktor: Kann aufgerufen werden, um ein neues Tierobjekt mit definiertem Gewicht und Groesse zu erstellen.
|
||||
// Gibt ein neues Tierobjekt zurück.
|
||||
// Fügt dem Programmzustand ein neues Tierobjekt hinzu.
|
||||
Tier(int gewicht, int groesse) : gewicht(gewicht), groesse(groesse) {}
|
||||
|
||||
// Destruktor: Wird aufgerufen, wenn ein Tierobjekt geloescht wird.
|
||||
// Gibt nichts zurück.
|
||||
// Entfernt das Tierobjekt aus dem Zustand des Programms.
|
||||
~Tier() {}
|
||||
|
||||
// Kann aufgerufen werden, um das Verhalten eines Tiers zu simulieren, sich fortzubewegen.
|
||||
// Gibt Text zurück und hat keine Effekte.
|
||||
virtual void fortbewegen()
|
||||
{
|
||||
std::cout << "Tier bewegt sich fort." << std::endl;
|
||||
}
|
||||
|
||||
// Kann aufgerufen werden, um das Verhalten eines Tiers zu simulieren, zu atmen.
|
||||
// Gibt Text zurück und hat keine Effekte.
|
||||
virtual void atmen()
|
||||
{
|
||||
std::cout << "Tier atmet." << std::endl;
|
||||
}
|
||||
|
||||
// Kann aufgerufen werden, um das Verhalten eines Tiers zu simulieren, zu essen.
|
||||
// Gibt Text zurück und hat keine Effekte.
|
||||
virtual void essen()
|
||||
{
|
||||
std::cout << "Tier isst." << std::endl;
|
||||
}
|
||||
|
||||
// Kann aufgerufen werden, um das Gewicht des Tiers zu ermitteln.
|
||||
// Gibt das Gewicht des Tiers als Integer zurück.
|
||||
// Ändert den Zustand des Programms nicht.
|
||||
int getGewicht()
|
||||
{
|
||||
return gewicht;
|
||||
}
|
||||
|
||||
// Kann aufgerufen werden, um die Groesse des Tiers zu ermitteln.
|
||||
// Gibt die Groesse des Tiers als Integer zurück.
|
||||
// Ändert den Zustand des Programms nicht.
|
||||
int getGroesse()
|
||||
{
|
||||
return groesse;
|
||||
}
|
||||
};
|
||||
|
||||
// Klasse Saeugetier (Säugetier): Erbt von der Klasse Tier.
|
||||
// Kann genutzt werden, um ein spezifisches Tier zu erstellen, das ein Säugetier ist.
|
||||
class Saeugetier : public Tier
|
||||
{
|
||||
public:
|
||||
// Konstruktor: Kann aufgerufen werden, um ein neues Saeugetier-Objekt mit definiertem Gewicht und Groesse zu erstellen.
|
||||
// Gibt ein neues Saeugetier-Objekt zurück.
|
||||
// Fügt dem Programmzustand ein neues Saeugetier-Objekt hinzu.
|
||||
Saeugetier(int gewicht, int groesse) : Tier(gewicht, groesse) {}
|
||||
};
|
||||
|
||||
// Klasse Hund: Erbt von der Klasse Saeugetier.
|
||||
// Kann genutzt werden, um ein spezifisches Tier zu erstellen, das ein Hund ist.
|
||||
class Hund : public Saeugetier
|
||||
{
|
||||
|
||||
public:
|
||||
std::string gattung;
|
||||
|
||||
// Konstruktor: Kann aufgerufen werden, um ein neues Hund-Objekt mit definiertem Gewicht, Groesse und Gattung zu erstellen.
|
||||
// Gibt ein neues Hund-Objekt zurück.
|
||||
// Fügt dem Programmzustand ein neues Hund-Objekt hinzu.
|
||||
Hund(int gewicht, int groesse, std::string gattung) : Saeugetier(gewicht, groesse), gattung(gattung) {}
|
||||
|
||||
// Destruktor: Wird aufgerufen, wenn ein Hund-Objekt geloescht wird.
|
||||
// Gibt nichts zurück.
|
||||
// Entfernt das Hund-Objekt aus dem Zustand des Programms.
|
||||
~Hund() {}
|
||||
|
||||
// Kann aufgerufen werden, um das Verhalten eines Hundes zu simulieren, ein anderes Tier anzubellen.
|
||||
// Gibt Text zurück und hat keine Effekte.
|
||||
void anbellen(Tier t)
|
||||
{
|
||||
std::cout << "Hund bellt anderen Hund an" << std::endl;
|
||||
}
|
||||
|
||||
// Kann aufgerufen werden, um das Verhalten eines Hundes zu simulieren, sich fortzupflanzen.
|
||||
// Gibt Text zurück und hat keine Effekte.
|
||||
void fortpflanzen(Hund h)
|
||||
{
|
||||
std::cout << "Hund pflanzt sich mit anderem Hund fort" << std::endl;
|
||||
}
|
||||
|
||||
// Kann aufgerufen werden, um die Gattung des Hundes zu ermitteln.
|
||||
// Gibt die Gattung des Hundes als String zurück.
|
||||
// Ändert den Zustand des Programms nicht.
|
||||
std::string getGattung()
|
||||
{
|
||||
return gattung;
|
||||
}
|
||||
};
|
||||
|
||||
// Klasse Pudel: Erbt von der Klasse Hund.
|
||||
// Kann genutzt werden, um ein spezifisches Tier zu erstellen, das ein Pudel ist.
|
||||
class Pudel : public Hund
|
||||
{
|
||||
public:
|
||||
// Konstruktor: Kann aufgerufen werden, um ein neues Pudel-Objekt mit definiertem Gewicht, Groesse und Gattung zu erstellen.
|
||||
// Gibt ein neues Pudel-Objekt zurück.
|
||||
// Fügt dem Programmzustand ein neues Pudel-Objekt hinzu.
|
||||
Pudel(int gewicht, int groesse, std::string gattung) : Hund(gewicht, groesse, gattung) {}
|
||||
|
||||
// Destruktor: Wird aufgerufen, wenn ein Pudel-Objekt geloescht wird.
|
||||
// Gibt nichts zurück.
|
||||
// Entfernt das Pudel-Objekt aus dem Zustand des Programms.
|
||||
~Pudel() {}
|
||||
};
|
||||
|
||||
int main()
|
||||
{
|
||||
Pudel Bello(10, 45, "Pudel");
|
||||
Pudel Strolch(20, 60, "Pudel");
|
||||
|
||||
int gewichtBello = Bello.getGewicht();
|
||||
int groesseBello = Bello.getGroesse();
|
||||
std::string gattungBello = Bello.getGattung();
|
||||
|
||||
std::cout << "Ein Hund der gattung " << gattungBello << ", mit der groesse " << groesseBello << " und mit dem Gewicht " << gewichtBello << " wurde erstellt" << std::endl;
|
||||
|
||||
Bello.essen();
|
||||
Bello.atmen();
|
||||
Bello.fortbewegen();
|
||||
Bello.anbellen(Strolch);
|
||||
Bello.fortpflanzen(Strolch);
|
||||
}
|
||||
Reference in New Issue
Block a user