TINF_Abgaben
Harg_2_Vererbung.cpp@0:bedc26f35995, 2020-04-29 (annotated)
- Committer:
- haunsi
- Date:
- Wed Apr 29 11:18:41 2020 +0000
- Revision:
- 0:bedc26f35995
Namespace_Vererbung_final
Who changed what in which revision?
User | Revision | Line number | New 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 | } |