Vererbung_Aufgabe_1

Committer:
mirzamesic
Date:
Tue Apr 28 14:46:56 2020 +0000
Revision:
5:0c5eeee1465b
Parent:
0:f277e7be6723
Ver2

Who changed what in which revision?

UserRevisionLine numberNew 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