Vererbung_Aufgabe_1
Mesic_Vererbung_1.cpp@5:0c5eeee1465b, 2020-04-28 (annotated)
- Committer:
- mirzamesic
- Date:
- Tue Apr 28 14:46:56 2020 +0000
- Revision:
- 5:0c5eeee1465b
- Parent:
- 0:f277e7be6723
Ver2
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
mirzamesic | 0:f277e7be6723 | 1 | #include <stdio.h> |
mirzamesic | 0:f277e7be6723 | 2 | #include <math.h> |
mirzamesic | 0:f277e7be6723 | 3 | |
mirzamesic | 0:f277e7be6723 | 4 | enum eckig { ja, nein }; |
mirzamesic | 0:f277e7be6723 | 5 | |
mirzamesic | 0:f277e7be6723 | 6 | class Form // Basisklasse |
mirzamesic | 0:f277e7be6723 | 7 | { |
mirzamesic | 0:f277e7be6723 | 8 | // In der Basisklasse werden alle gemeinsamen Variablen |
mirzamesic | 0:f277e7be6723 | 9 | protected: |
mirzamesic | 0:f277e7be6723 | 10 | eckig m_hat_ecken; |
mirzamesic | 0:f277e7be6723 | 11 | float m_umfang; |
mirzamesic | 0:f277e7be6723 | 12 | float m_flaeche; |
mirzamesic | 0:f277e7be6723 | 13 | float m_rechteckFlaeche; |
mirzamesic | 0:f277e7be6723 | 14 | float m_rechteckUmfang; |
mirzamesic | 0:f277e7be6723 | 15 | |
mirzamesic | 0:f277e7be6723 | 16 | |
mirzamesic | 0:f277e7be6723 | 17 | |
mirzamesic | 0:f277e7be6723 | 18 | public: // sowie auch alle gemeinsamen Methoden deklariert |
mirzamesic | 0:f277e7be6723 | 19 | float leseUmfang() { return m_umfang; } |
mirzamesic | 0:f277e7be6723 | 20 | float leseFlaeche() { return m_flaeche; } |
mirzamesic | 0:f277e7be6723 | 21 | float leseRechteckUmfang() { return m_rechteckUmfang; } |
mirzamesic | 0:f277e7be6723 | 22 | float leseRechteckFlaeche() { return m_rechteckFlaeche; } |
mirzamesic | 0:f277e7be6723 | 23 | |
mirzamesic | 0:f277e7be6723 | 24 | |
mirzamesic | 0:f277e7be6723 | 25 | |
mirzamesic | 0:f277e7be6723 | 26 | Form(eckig hat_ecken); |
mirzamesic | 0:f277e7be6723 | 27 | Form(); |
mirzamesic | 0:f277e7be6723 | 28 | }; |
mirzamesic | 0:f277e7be6723 | 29 | |
mirzamesic | 0:f277e7be6723 | 30 | Form::Form(eckig ecken) // im Konstruktor werden gem. Variablen initialisiert |
mirzamesic | 0:f277e7be6723 | 31 | { |
mirzamesic | 0:f277e7be6723 | 32 | m_hat_ecken = ecken; |
mirzamesic | 0:f277e7be6723 | 33 | m_umfang = 0; |
mirzamesic | 0:f277e7be6723 | 34 | m_flaeche = 0; |
mirzamesic | 0:f277e7be6723 | 35 | }; |
mirzamesic | 0:f277e7be6723 | 36 | Form::Form() |
mirzamesic | 0:f277e7be6723 | 37 | { |
mirzamesic | 0:f277e7be6723 | 38 | m_rechteckFlaeche=0; |
mirzamesic | 0:f277e7be6723 | 39 | m_rechteckUmfang=0; |
mirzamesic | 0:f277e7be6723 | 40 | } |
mirzamesic | 0:f277e7be6723 | 41 | |
mirzamesic | 0:f277e7be6723 | 42 | class Kreis : public Form { // Hier wird eine von Form abgeleitete Klasse Kreis deklariert |
mirzamesic | 0:f277e7be6723 | 43 | |
mirzamesic | 0:f277e7be6723 | 44 | protected: // Zugriffschutz protected bedeutet, dass abgeleitete |
mirzamesic | 0:f277e7be6723 | 45 | // Klassen ebenfalls zugreifen können. |
mirzamesic | 0:f277e7be6723 | 46 | float m_radius; |
mirzamesic | 0:f277e7be6723 | 47 | |
mirzamesic | 0:f277e7be6723 | 48 | public: // alle gemeinsame Methoden |
mirzamesic | 0:f277e7be6723 | 49 | float leseUmfang(); |
mirzamesic | 0:f277e7be6723 | 50 | float leseFlaeche(); |
mirzamesic | 0:f277e7be6723 | 51 | |
mirzamesic | 0:f277e7be6723 | 52 | Kreis(float radius); // Neuer Konstruktor erfordert nur den radius |
mirzamesic | 0:f277e7be6723 | 53 | }; |
mirzamesic | 0:f277e7be6723 | 54 | |
mirzamesic | 0:f277e7be6723 | 55 | Kreis::Kreis(float radius) : Form(nein) // Konstruktor |
mirzamesic | 0:f277e7be6723 | 56 | { |
mirzamesic | 0:f277e7be6723 | 57 | m_umfang = 2 * radius * M_PI; // Die Konstante M_PI ist in math.h definiert |
mirzamesic | 0:f277e7be6723 | 58 | m_flaeche = radius * radius * M_PI; |
mirzamesic | 0:f277e7be6723 | 59 | }; |
mirzamesic | 0:f277e7be6723 | 60 | |
mirzamesic | 0:f277e7be6723 | 61 | float Kreis::leseUmfang() {// hier ist keine Änderung der Funktion nötig, |
mirzamesic | 0:f277e7be6723 | 62 | // daher wird die Funktion der Basisklasse aufger. |
mirzamesic | 0:f277e7be6723 | 63 | return m_umfang; |
mirzamesic | 0:f277e7be6723 | 64 | } |
mirzamesic | 0:f277e7be6723 | 65 | float Kreis::leseFlaeche() |
mirzamesic | 0:f277e7be6723 | 66 | { |
mirzamesic | 0:f277e7be6723 | 67 | return m_flaeche; |
mirzamesic | 0:f277e7be6723 | 68 | } |
mirzamesic | 0:f277e7be6723 | 69 | |
mirzamesic | 0:f277e7be6723 | 70 | |
mirzamesic | 0:f277e7be6723 | 71 | class Rechteck : public Form { |
mirzamesic | 0:f277e7be6723 | 72 | |
mirzamesic | 0:f277e7be6723 | 73 | protected: |
mirzamesic | 0:f277e7be6723 | 74 | float m_seiteA; |
mirzamesic | 0:f277e7be6723 | 75 | float m_seiteB; |
mirzamesic | 0:f277e7be6723 | 76 | float m_seitea; |
mirzamesic | 0:f277e7be6723 | 77 | float m_quadratUmfang; |
mirzamesic | 0:f277e7be6723 | 78 | float m_quadratFlaeche; |
mirzamesic | 0:f277e7be6723 | 79 | |
mirzamesic | 0:f277e7be6723 | 80 | |
mirzamesic | 0:f277e7be6723 | 81 | public: |
mirzamesic | 0:f277e7be6723 | 82 | float leseRechteckFlaeche(); // alle gemeinsame Methoden |
mirzamesic | 0:f277e7be6723 | 83 | float leseRechteckUmfang(); |
mirzamesic | 0:f277e7be6723 | 84 | float leseQuadratUmfang() { return m_quadratUmfang; } |
mirzamesic | 0:f277e7be6723 | 85 | float leseQuadratFlaeche() { return m_quadratFlaeche; } |
mirzamesic | 0:f277e7be6723 | 86 | |
mirzamesic | 0:f277e7be6723 | 87 | |
mirzamesic | 0:f277e7be6723 | 88 | Rechteck(float seiteA, float seiteB); // Deklaration des Konstruktors |
mirzamesic | 0:f277e7be6723 | 89 | Rechteck(); // Deklaration des Konstruktors |
mirzamesic | 0:f277e7be6723 | 90 | |
mirzamesic | 0:f277e7be6723 | 91 | }; |
mirzamesic | 0:f277e7be6723 | 92 | |
mirzamesic | 0:f277e7be6723 | 93 | |
mirzamesic | 0:f277e7be6723 | 94 | Rechteck::Rechteck(float seiteA,float seiteB) : Form(ja) // Konstruktor |
mirzamesic | 0:f277e7be6723 | 95 | { |
mirzamesic | 0:f277e7be6723 | 96 | m_rechteckUmfang = 2 * seiteA + 2 * seiteB; |
mirzamesic | 0:f277e7be6723 | 97 | m_rechteckFlaeche = seiteA * seiteB; |
mirzamesic | 0:f277e7be6723 | 98 | }; |
mirzamesic | 0:f277e7be6723 | 99 | |
mirzamesic | 0:f277e7be6723 | 100 | Rechteck::Rechteck() // Konstruktor |
mirzamesic | 0:f277e7be6723 | 101 | { |
mirzamesic | 0:f277e7be6723 | 102 | m_quadratUmfang=0; |
mirzamesic | 0:f277e7be6723 | 103 | m_quadratFlaeche=0; |
mirzamesic | 0:f277e7be6723 | 104 | }; |
mirzamesic | 0:f277e7be6723 | 105 | |
mirzamesic | 0:f277e7be6723 | 106 | float Rechteck::leseRechteckUmfang() |
mirzamesic | 0:f277e7be6723 | 107 | { |
mirzamesic | 0:f277e7be6723 | 108 | return m_rechteckUmfang; |
mirzamesic | 0:f277e7be6723 | 109 | } |
mirzamesic | 0:f277e7be6723 | 110 | float Rechteck::leseRechteckFlaeche() |
mirzamesic | 0:f277e7be6723 | 111 | { |
mirzamesic | 0:f277e7be6723 | 112 | return m_rechteckFlaeche; |
mirzamesic | 0:f277e7be6723 | 113 | } |
mirzamesic | 0:f277e7be6723 | 114 | |
mirzamesic | 0:f277e7be6723 | 115 | |
mirzamesic | 0:f277e7be6723 | 116 | |
mirzamesic | 0:f277e7be6723 | 117 | |
mirzamesic | 0:f277e7be6723 | 118 | |
mirzamesic | 0:f277e7be6723 | 119 | class Quadrat : public Rechteck //Deklaration der Klasse Quadrat |
mirzamesic | 0:f277e7be6723 | 120 | |
mirzamesic | 0:f277e7be6723 | 121 | { |
mirzamesic | 0:f277e7be6723 | 122 | protected: |
mirzamesic | 0:f277e7be6723 | 123 | float m_seitea; |
mirzamesic | 0:f277e7be6723 | 124 | |
mirzamesic | 0:f277e7be6723 | 125 | public: |
mirzamesic | 0:f277e7be6723 | 126 | float leseQuadratUmfang(); |
mirzamesic | 0:f277e7be6723 | 127 | float leseQuadratFlaeche(); |
mirzamesic | 0:f277e7be6723 | 128 | |
mirzamesic | 0:f277e7be6723 | 129 | Quadrat(float seitea); // Deklaration des Konstruktors |
mirzamesic | 0:f277e7be6723 | 130 | |
mirzamesic | 0:f277e7be6723 | 131 | }; |
mirzamesic | 0:f277e7be6723 | 132 | |
mirzamesic | 0:f277e7be6723 | 133 | Quadrat::Quadrat(float seitea) : Rechteck() // Konstruktor |
mirzamesic | 0:f277e7be6723 | 134 | { |
mirzamesic | 0:f277e7be6723 | 135 | m_quadratFlaeche=seitea*seitea; |
mirzamesic | 0:f277e7be6723 | 136 | m_quadratUmfang= 4 * seitea; |
mirzamesic | 0:f277e7be6723 | 137 | }; |
mirzamesic | 0:f277e7be6723 | 138 | |
mirzamesic | 0:f277e7be6723 | 139 | |
mirzamesic | 0:f277e7be6723 | 140 | float Quadrat::leseQuadratUmfang() |
mirzamesic | 0:f277e7be6723 | 141 | { |
mirzamesic | 0:f277e7be6723 | 142 | return m_quadratUmfang; |
mirzamesic | 0:f277e7be6723 | 143 | } |
mirzamesic | 0:f277e7be6723 | 144 | float Quadrat::leseQuadratFlaeche() |
mirzamesic | 0:f277e7be6723 | 145 | { |
mirzamesic | 0:f277e7be6723 | 146 | return m_quadratFlaeche; |
mirzamesic | 0:f277e7be6723 | 147 | } |
mirzamesic | 0:f277e7be6723 | 148 | |
mirzamesic | 0:f277e7be6723 | 149 | |
mirzamesic | 0:f277e7be6723 | 150 | |
mirzamesic | 0:f277e7be6723 | 151 | |
mirzamesic | 0:f277e7be6723 | 152 | |
mirzamesic | 0:f277e7be6723 | 153 | int main() |
mirzamesic | 0:f277e7be6723 | 154 | { |
mirzamesic | 0:f277e7be6723 | 155 | printf("Wir arbeiten nun mit abgeleiteten Klassen!\n"); |
mirzamesic | 0:f277e7be6723 | 156 | printf("Nun wird ein Objekt kr der Klasse Kreis erzeugt!\n"); |
mirzamesic | 0:f277e7be6723 | 157 | Kreis kr(1.0); |
mirzamesic | 0:f277e7be6723 | 158 | Rechteck re(2.0,3.0); |
mirzamesic | 0:f277e7be6723 | 159 | Quadrat qu(5.0); |
mirzamesic | 0:f277e7be6723 | 160 | |
mirzamesic | 0:f277e7be6723 | 161 | float um = kr.leseUmfang(); |
mirzamesic | 0:f277e7be6723 | 162 | float fl = kr.leseFlaeche(); |
mirzamesic | 0:f277e7be6723 | 163 | |
mirzamesic | 0:f277e7be6723 | 164 | float reUm = re.leseRechteckUmfang(); |
mirzamesic | 0:f277e7be6723 | 165 | float reFl = re.leseRechteckFlaeche(); |
mirzamesic | 0:f277e7be6723 | 166 | |
mirzamesic | 0:f277e7be6723 | 167 | float quUm = qu.leseQuadratUmfang(); |
mirzamesic | 0:f277e7be6723 | 168 | float quFl = qu.leseQuadratFlaeche(); |
mirzamesic | 0:f277e7be6723 | 169 | |
mirzamesic | 0:f277e7be6723 | 170 | printf("Der Umfang des Kreis beträgt: %f\n", um); |
mirzamesic | 0:f277e7be6723 | 171 | printf("Die Flaeche des Kreis beträgt: %f\n", fl); |
mirzamesic | 0:f277e7be6723 | 172 | |
mirzamesic | 0:f277e7be6723 | 173 | printf("Der Umfang des Rechtecks beträgt: %f\n", reUm); |
mirzamesic | 0:f277e7be6723 | 174 | printf("Die Flaeche des Rechtecks beträgt: %f\n", reFl); |
mirzamesic | 0:f277e7be6723 | 175 | |
mirzamesic | 0:f277e7be6723 | 176 | printf("Der Umfang des Quadrats beträgt: %f\n", quUm); |
mirzamesic | 0:f277e7be6723 | 177 | printf("Die Flaeche des Quadrats beträgt: %f\n", quFl); |
mirzamesic | 0:f277e7be6723 | 178 | return 0; |
mirzamesic | 0:f277e7be6723 | 179 | } |
mirzamesic | 0:f277e7be6723 | 180 | |
mirzamesic | 0:f277e7be6723 | 181 | |
mirzamesic | 0:f277e7be6723 | 182 | |
mirzamesic | 0:f277e7be6723 | 183 |