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