TINF_Abgaben

Committer:
haunsi
Date:
Wed Apr 29 11:18:41 2020 +0000
Revision:
0:bedc26f35995
Namespace_Vererbung_final

Who changed what in which revision?

UserRevisionLine numberNew contents of line
haunsi 0:bedc26f35995 1 #include <stdio.h>
haunsi 0:bedc26f35995 2 #include <math.h>
haunsi 0:bedc26f35995 3
haunsi 0:bedc26f35995 4 enum eckig { ja, nein };
haunsi 0:bedc26f35995 5
haunsi 0:bedc26f35995 6 class Form // Basisklasse
haunsi 0:bedc26f35995 7 {
haunsi 0:bedc26f35995 8 // In der Basisklasse werden alle gemeinsamen Variablen
haunsi 0:bedc26f35995 9 protected:
haunsi 0:bedc26f35995 10 eckig m_hat_ecken;
haunsi 0:bedc26f35995 11 float m_umfang;
haunsi 0:bedc26f35995 12 float m_flaeche;
haunsi 0:bedc26f35995 13
haunsi 0:bedc26f35995 14 public: // sowie auch alle gemeinsamen Methoden deklariert
haunsi 0:bedc26f35995 15 float leseUmfang() { return m_umfang; }
haunsi 0:bedc26f35995 16 float leseFlaeche() { return m_flaeche; }
haunsi 0:bedc26f35995 17
haunsi 0:bedc26f35995 18 Form(eckig hat_ecken);
haunsi 0:bedc26f35995 19 };
haunsi 0:bedc26f35995 20
haunsi 0:bedc26f35995 21 Form::Form(eckig ecken) { // im Konstruktor werden gem. Variablen initialisiert
haunsi 0:bedc26f35995 22 m_hat_ecken = ecken;
haunsi 0:bedc26f35995 23 m_umfang = 0;
haunsi 0:bedc26f35995 24 m_flaeche = 0;
haunsi 0:bedc26f35995 25 };
haunsi 0:bedc26f35995 26
haunsi 0:bedc26f35995 27 class Kreis : public Form // erstellen einer neuen Klasse mit Verweis auf die Basisklasse
haunsi 0:bedc26f35995 28 {
haunsi 0:bedc26f35995 29
haunsi 0:bedc26f35995 30 protected:
haunsi 0:bedc26f35995 31 float m_radius; // eigentlich überflüssig, da nie verwendet
haunsi 0:bedc26f35995 32
haunsi 0:bedc26f35995 33 public: // nicht benötigt, da in Form schon ausprogrammiert
haunsi 0:bedc26f35995 34 float leseUmfang() { return m_umfang; }
haunsi 0:bedc26f35995 35 float leseFlaeche() { return m_flaeche; }
haunsi 0:bedc26f35995 36
haunsi 0:bedc26f35995 37 Kreis(float radius);
haunsi 0:bedc26f35995 38 };
haunsi 0:bedc26f35995 39
haunsi 0:bedc26f35995 40 Kreis::Kreis(float radius) : Form(nein)
haunsi 0:bedc26f35995 41 {
haunsi 0:bedc26f35995 42 m_umfang = 2 * radius * M_PI;
haunsi 0:bedc26f35995 43 m_flaeche = radius * radius * M_PI;
haunsi 0:bedc26f35995 44 };
haunsi 0:bedc26f35995 45
haunsi 0:bedc26f35995 46
haunsi 0:bedc26f35995 47 class Rechteck : public Form // erstellen einer neuen Klasse mit Verweis auf die Basisklasse
haunsi 0:bedc26f35995 48 {
haunsi 0:bedc26f35995 49 protected:
haunsi 0:bedc26f35995 50 float m_seiteA; // eigentlich überflüssig, da nie verwendet
haunsi 0:bedc26f35995 51 float m_seiteB; // eigentlich überflüssig, da nie verwendet
haunsi 0:bedc26f35995 52
haunsi 0:bedc26f35995 53 public:
haunsi 0:bedc26f35995 54 float leseUmfang() { return m_umfang; }
haunsi 0:bedc26f35995 55 float leseFlaeche() { return m_flaeche; }
haunsi 0:bedc26f35995 56
haunsi 0:bedc26f35995 57 Rechteck(float m_seiteA); // Deklaration des Konstruktors
haunsi 0:bedc26f35995 58 Rechteck(float m_seiteA, float m_seiteB);
haunsi 0:bedc26f35995 59 };
haunsi 0:bedc26f35995 60
haunsi 0:bedc26f35995 61 // :: gibt die Klassenzugehörigkeit an
haunsi 0:bedc26f35995 62 Rechteck::Rechteck(float m_seiteA) : Form(ja){}; // Definition des Konstruktors
haunsi 0:bedc26f35995 63 Rechteck::Rechteck(float m_seiteA, float m_seiteB) : Form(ja)
haunsi 0:bedc26f35995 64 {
haunsi 0:bedc26f35995 65 m_umfang = 2*m_seiteA + 2*m_seiteB; // Berechnungen
haunsi 0:bedc26f35995 66 m_flaeche = m_seiteA * m_seiteB;
haunsi 0:bedc26f35995 67 };
haunsi 0:bedc26f35995 68
haunsi 0:bedc26f35995 69 class Quadrat : public Rechteck // erstellen einer neuen Unterklasse mit Verweis auf die vorherige
haunsi 0:bedc26f35995 70 {
haunsi 0:bedc26f35995 71 public:
haunsi 0:bedc26f35995 72 float leseUmfang() { return m_umfang; }
haunsi 0:bedc26f35995 73 float leseFlaeche() { return m_flaeche; }
haunsi 0:bedc26f35995 74
haunsi 0:bedc26f35995 75 Quadrat(float m_seiteA); // Deklaration des Konstruktors
haunsi 0:bedc26f35995 76 };
haunsi 0:bedc26f35995 77
haunsi 0:bedc26f35995 78 // :: gibt die Klassenzugehörigkeit an
haunsi 0:bedc26f35995 79 Quadrat::Quadrat(float m_seiteA) : Rechteck (m_seiteA) // Definition des Konstruktors
haunsi 0:bedc26f35995 80 {
haunsi 0:bedc26f35995 81 m_umfang = 4*m_seiteA; // Berechnungen
haunsi 0:bedc26f35995 82 m_flaeche = m_seiteA*m_seiteA;
haunsi 0:bedc26f35995 83 };
haunsi 0:bedc26f35995 84
haunsi 0:bedc26f35995 85 int main()
haunsi 0:bedc26f35995 86 {
haunsi 0:bedc26f35995 87 Kreis kr(1.0);
haunsi 0:bedc26f35995 88
haunsi 0:bedc26f35995 89 printf("Der Umfang des Kreis beträgt: %f m.\n", kr.leseUmfang());
haunsi 0:bedc26f35995 90 printf("Der Fläche des Kreis beträgt: %f m².\n\n", kr.leseFlaeche());
haunsi 0:bedc26f35995 91
haunsi 0:bedc26f35995 92 Rechteck rk(2.3,2.6);
haunsi 0:bedc26f35995 93
haunsi 0:bedc26f35995 94 printf("Der Umfang des Rechtecks beträgt: %f m.\n", rk.leseUmfang());
haunsi 0:bedc26f35995 95 printf("Die Fläche des Rechtecks beträgt: %f m².\n\n", rk.leseFlaeche());
haunsi 0:bedc26f35995 96
haunsi 0:bedc26f35995 97 Quadrat qu(3.0);
haunsi 0:bedc26f35995 98
haunsi 0:bedc26f35995 99 printf("Der Umfang des Quadrats beträgt: %f m.\n", qu.leseUmfang());
haunsi 0:bedc26f35995 100 printf("Der Fläche des Quadrats beträgt: %f m².\n\n", qu.leseFlaeche());
haunsi 0:bedc26f35995 101 return 0;
haunsi 0:bedc26f35995 102 }