TINF_Abgaben
Diff: Simbuerger_02_Vererbung.cpp
- Revision:
- 1:636c6bfc9174
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Simbuerger_02_Vererbung.cpp Tue Mar 31 08:35:15 2020 +0000 @@ -0,0 +1,123 @@ +#include <stdio.h> +#include <math.h> + +enum eckig { ja, nein }; + +// Basisklasse +class Form +{ + + protected: + eckig m_hat_ecken; + float m_umfang; + float m_flaeche; + + public: + float leseUmfang() { return m_umfang; } + float leseFlaeche() { return m_flaeche; } + + Form(eckig hat_ecken); +}; + +Form::Form(eckig ecken) { + m_hat_ecken = ecken; + m_umfang = 0; + m_flaeche = 0; +}; + +// Abgeleite Klasse von Forms +class Kreis : public Form { + + public: + float leseUmfang() {return m_umfang;} // holt sich die Werte aus der Variable m_umfang + float leseFlaeche() {return m_flaeche;} + + Kreis(float radius); +}; + +// Berechnet Fläche und Umfang und speichert es in der Basisklasse +Kreis::Kreis(float radius) : Form(nein) { + + m_umfang = 2 * radius * M_PI; + m_flaeche = radius * radius * M_PI; +}; + +// Neue von Forms abgleitete Unterklasse +class Rechteck : public Form{ + protected: + + float m_kantenLaenge_a; + float m_kantenLaenge_b; + + public: + + float leseUmfang(); + float leseFlaeche(); + + Rechteck(float a, float b); +}; + +// Speichert die Paramter vom Objekt in die Member +Rechteck::Rechteck(float a, float b):Form(ja){ + m_kantenLaenge_a = a; + m_kantenLaenge_b = b; +}; + +// Holt sich die Werte aus den Membern und gibt den Wert auf die Methode zurück +float Rechteck::leseFlaeche(){ + return m_kantenLaenge_a * m_kantenLaenge_b; + +} +// Holt sich die Werte aus den Membern und gibt den Wert auf die Methode zurück +float Rechteck::leseUmfang(){ + return (m_kantenLaenge_a * 2) + (m_kantenLaenge_b * 2); + +} + +// Die abgleitete Klasse von Rechteck +class Quadrad : public Rechteck{ + + public: + + float leseUmfang(); + float leseFlaeche(); + + Quadrad(float a); +}; + +// Speichert die Paramter vom Objekt in die Member +Quadrad::Quadrad(float a) : Rechteck(a, a){ + m_kantenLaenge_a = a; + +}; +// Holt sich die Werte aus den Membern und gibt den Wert auf die Methode zurück +float Quadrad::leseUmfang(){ + return m_kantenLaenge_a * 4; +} +// Holt sich die Werte aus den Membern und gibt den Wert auf die Methode zurück +float Quadrad::leseFlaeche(){ + return m_kantenLaenge_a * m_kantenLaenge_a; +} + +int main() +{ + // Hier werden neue Objekte erstellt + Kreis kr(1.0); + Rechteck re(2.0, 3.0); + Quadrad qu(5.0); + + // Hier greifen die Objekte auf die Methoden zu und werden mit Printf ausgegeben + printf("Alle Werte des Kreises: \n"); + printf("Der Umfang des Kreises beträgt: %f\n", kr.leseUmfang()); + printf("Die Fläche des Kreises beträgt: %f\n", kr.leseFlaeche()); + + printf("Alle Werte des Rechtecks: \n"); + printf("Der Umfang des Rechtecks beträgt: %f\n", re.leseUmfang()); + printf("Die Fläche des Rechtecks beträgt: %f\n", re.leseFlaeche()); + + printf("Alle Werte des Quadrads: \n"); + printf("Der Umfang des Quadrads beträgt: %f\n", qu.leseUmfang()); + printf("Die Fläche des Quadrads beträgt: %f\n", qu.leseFlaeche()); + + return 0; +} \ No newline at end of file