Zeichen ials Dezimal oder Hex ausgeben

Dependencies:   mbed

Committer:
jesephin
Date:
Wed Apr 29 16:44:06 2020 +0000
Revision:
2:b57deaf107b8
Xiaojingmao_2_Vererbung publishen wird

Who changed what in which revision?

UserRevisionLine numberNew contents of line
jesephin 2:b57deaf107b8 1 /* Ihre Aufgaben!
jesephin 2:b57deaf107b8 2 1. ErgC$nzen Sie die Klasse Kreis um die Methode float leseFlaeche();
jesephin 2:b57deaf107b8 3
jesephin 2:b57deaf107b8 4 2. Leiten Sie von der Basisklasse Form die Klasse Rechteck ab
jesephin 2:b57deaf107b8 5 Ueberlegen Sie sich welche Parameter der Konstruktur fC<r die Klasse
jesephin 2:b57deaf107b8 6 Rechteck benC6tigt. Implementieren sie neben dem Konstruktor auch alle
jesephin 2:b57deaf107b8 7 Methoden der Basisklasse, sodass korrekte Werte berechnet werden.
jesephin 2:b57deaf107b8 8
jesephin 2:b57deaf107b8 9 3. Optional: Leiten Sie von der Klasse Rechteck die Klasse Quadrat ab.
jesephin 2:b57deaf107b8 10 Implementieren Sie Konstruktor und alle Methoden in der Form, dass
jesephin 2:b57deaf107b8 11 die Implementierungen der Klasse Rechteck genutzt werden.
jesephin 2:b57deaf107b8 12 Quadrat soll eine Subklasse von Rechteck sein.
jesephin 2:b57deaf107b8 13
jesephin 2:b57deaf107b8 14 Format der Dateinamen: <Nachname>_<Übungsnummer>_<Titel>
jesephin 2:b57deaf107b8 15 Bsp: Brunnhofer_2_Vererbung
jesephin 2:b57deaf107b8 16
jesephin 2:b57deaf107b8 17 Hinweis: Der Quellcode der Programme sollte auch kommentiert werden!
jesephin 2:b57deaf107b8 18
jesephin 2:b57deaf107b8 19 */
jesephin 2:b57deaf107b8 20
jesephin 2:b57deaf107b8 21 #include <stdio.h>
jesephin 2:b57deaf107b8 22 #include <math.h>
jesephin 2:b57deaf107b8 23
jesephin 2:b57deaf107b8 24 enum eckig { ja, nein };
jesephin 2:b57deaf107b8 25
jesephin 2:b57deaf107b8 26 class Form // Basisklasse
jesephin 2:b57deaf107b8 27 {
jesephin 2:b57deaf107b8 28 // In der Basisklasse werden alle gemeinsamen Variablen
jesephin 2:b57deaf107b8 29 protected:
jesephin 2:b57deaf107b8 30 eckig m_hat_ecken;
jesephin 2:b57deaf107b8 31 float m_umfang;
jesephin 2:b57deaf107b8 32 float m_flaeche;
jesephin 2:b57deaf107b8 33 float m_diagonale;
jesephin 2:b57deaf107b8 34 float m_rechteckumfang;
jesephin 2:b57deaf107b8 35 float m_rechteckflaeche;
jesephin 2:b57deaf107b8 36 float m_quadratumfang;
jesephin 2:b57deaf107b8 37 float m_quadratflaeche;
jesephin 2:b57deaf107b8 38
jesephin 2:b57deaf107b8 39
jesephin 2:b57deaf107b8 40 public: // sowie auch alle gemeinsamen Methoden deklariert
jesephin 2:b57deaf107b8 41 float leseUmfang () {return m_umfang; }
jesephin 2:b57deaf107b8 42 float leseFlaeche () {return m_flaeche; }
jesephin 2:b57deaf107b8 43 float leseRechteckUmfang () {return m_rechteckumfang;}
jesephin 2:b57deaf107b8 44 float leseRechteckFlaeche () {return m_rechteckflaeche;}
jesephin 2:b57deaf107b8 45 float leseDiagonale () {return m_diagonale;}
jesephin 2:b57deaf107b8 46 float leseQuadratUmfang () {return m_quadratumfang;}
jesephin 2:b57deaf107b8 47 float leseQuadratFlaeche () {return m_quadratflaeche;}
jesephin 2:b57deaf107b8 48
jesephin 2:b57deaf107b8 49 Form (eckig hat_ecken);
jesephin 2:b57deaf107b8 50
jesephin 2:b57deaf107b8 51 };
jesephin 2:b57deaf107b8 52
jesephin 2:b57deaf107b8 53 Form::Form (eckig ecken)
jesephin 2:b57deaf107b8 54 { // im Konstruktor werden gem. Variablen initialisiert
jesephin 2:b57deaf107b8 55 m_hat_ecken = ecken;
jesephin 2:b57deaf107b8 56 m_umfang = 0;
jesephin 2:b57deaf107b8 57 m_flaeche = 0;
jesephin 2:b57deaf107b8 58 };
jesephin 2:b57deaf107b8 59
jesephin 2:b57deaf107b8 60 class Kreis:public Form
jesephin 2:b57deaf107b8 61 { // Hier wird eine von Form abgeleitete Klasse Kreis deklariert
jesephin 2:b57deaf107b8 62
jesephin 2:b57deaf107b8 63 protected: // Zugriffschutz protected bedeutet, dass abgeleitete
jesephin 2:b57deaf107b8 64 // Klassen ebenfalls zugreifen koennen.
jesephin 2:b57deaf107b8 65 float m_radius;
jesephin 2:b57deaf107b8 66
jesephin 2:b57deaf107b8 67 public:
jesephin 2:b57deaf107b8 68 float leseUmfang ();
jesephin 2:b57deaf107b8 69 float leseFlaeche ();
jesephin 2:b57deaf107b8 70
jesephin 2:b57deaf107b8 71 Kreis (float radius); // Neuer Konstruktor erfordert nur den radius
jesephin 2:b57deaf107b8 72 };
jesephin 2:b57deaf107b8 73
jesephin 2:b57deaf107b8 74 Kreis::Kreis (float radius): Form (nein)
jesephin 2:b57deaf107b8 75 {
jesephin 2:b57deaf107b8 76 // Im Konstruktor werden gleich die Membervariablen initialisiert
jesephin 2:b57deaf107b8 77
jesephin 2:b57deaf107b8 78 // Ueber den radius werden Umfang und Fläeche berechnet.
jesephin 2:b57deaf107b8 79 m_umfang = 2 * radius * M_PI; // Die Konstante M_PI ist in math.h definiert
jesephin 2:b57deaf107b8 80 m_flaeche = radius * radius * M_PI;
jesephin 2:b57deaf107b8 81 };
jesephin 2:b57deaf107b8 82
jesephin 2:b57deaf107b8 83 float Kreis::leseUmfang ()
jesephin 2:b57deaf107b8 84 {
jesephin 2:b57deaf107b8 85 // hier ist keine Aenderung der Funktion noetig,
jesephin 2:b57deaf107b8 86 // daher wird die Funktion der Basisklasse aufger.
jesephin 2:b57deaf107b8 87 return m_umfang;
jesephin 2:b57deaf107b8 88 };
jesephin 2:b57deaf107b8 89
jesephin 2:b57deaf107b8 90 float Kreis::leseFlaeche ()
jesephin 2:b57deaf107b8 91 {
jesephin 2:b57deaf107b8 92 return m_flaeche;
jesephin 2:b57deaf107b8 93 };
jesephin 2:b57deaf107b8 94
jesephin 2:b57deaf107b8 95
jesephin 2:b57deaf107b8 96 class Rechteck:public Form
jesephin 2:b57deaf107b8 97 { // Hier wird eine von Form abgeleitete Klasse Rechteck deklariert
jesephin 2:b57deaf107b8 98
jesephin 2:b57deaf107b8 99 protected: // Zugriffschutz protected bedeutet, dass abgeleitete
jesephin 2:b57deaf107b8 100 // Klassen ebenfalls zugreifen koennen.
jesephin 2:b57deaf107b8 101 float m_laenge;
jesephin 2:b57deaf107b8 102 float m_breit;
jesephin 2:b57deaf107b8 103 float m_diagonale;
jesephin 2:b57deaf107b8 104
jesephin 2:b57deaf107b8 105 public:
jesephin 2:b57deaf107b8 106 float leseRechteckFlaeche ();
jesephin 2:b57deaf107b8 107 float leseRechteckUmfang ();
jesephin 2:b57deaf107b8 108 float leseDiagonale ();
jesephin 2:b57deaf107b8 109
jesephin 2:b57deaf107b8 110 Rechteck (float laenge,float breit); // Neuer Konstruktor erfordert nur den radius
jesephin 2:b57deaf107b8 111
jesephin 2:b57deaf107b8 112 };
jesephin 2:b57deaf107b8 113
jesephin 2:b57deaf107b8 114 Rechteck::Rechteck (float laenge,float breit):Form (ja)
jesephin 2:b57deaf107b8 115 {
jesephin 2:b57deaf107b8 116 // Im Konstruktor werden gleich die Membervariablen initialisiert
jesephin 2:b57deaf107b8 117
jesephin 2:b57deaf107b8 118 // Ueber den Seiten werden Umfang und Flaeche berechnet.
jesephin 2:b57deaf107b8 119 m_rechteckumfang = 2 * (laenge + breit);
jesephin 2:b57deaf107b8 120 m_rechteckflaeche = laenge * breit;
jesephin 2:b57deaf107b8 121 m_diagonale=sqrt(pow(laenge,2)+ pow(breit,2));
jesephin 2:b57deaf107b8 122 };
jesephin 2:b57deaf107b8 123
jesephin 2:b57deaf107b8 124 float Rechteck::leseRechteckUmfang ()
jesephin 2:b57deaf107b8 125 {
jesephin 2:b57deaf107b8 126 // hier ist keine Aenderung der Funktion noetig,
jesephin 2:b57deaf107b8 127 // daher wird die Funktion der Basisklasse aufger.
jesephin 2:b57deaf107b8 128 return m_rechteckumfang;
jesephin 2:b57deaf107b8 129 };
jesephin 2:b57deaf107b8 130
jesephin 2:b57deaf107b8 131 float Rechteck::leseRechteckFlaeche ()
jesephin 2:b57deaf107b8 132 {
jesephin 2:b57deaf107b8 133 return m_rechteckflaeche;
jesephin 2:b57deaf107b8 134 };
jesephin 2:b57deaf107b8 135
jesephin 2:b57deaf107b8 136 float Rechteck::leseDiagonale ()
jesephin 2:b57deaf107b8 137 {
jesephin 2:b57deaf107b8 138 return m_diagonale;
jesephin 2:b57deaf107b8 139 };
jesephin 2:b57deaf107b8 140
jesephin 2:b57deaf107b8 141 class Quadrat : public Rechteck{
jesephin 2:b57deaf107b8 142 protected:
jesephin 2:b57deaf107b8 143 float m_laenge;
jesephin 2:b57deaf107b8 144 //float m_breit;
jesephin 2:b57deaf107b8 145 float m_diagonale;
jesephin 2:b57deaf107b8 146
jesephin 2:b57deaf107b8 147 //alle Variablen kann man von public Rechteck benutzen
jesephin 2:b57deaf107b8 148
jesephin 2:b57deaf107b8 149 /*Flächeninhalt = Seitenlänge * Seitenlänge
jesephin 2:b57deaf107b8 150 Umfang = Seite * 4
jesephin 2:b57deaf107b8 151 Diagonale = Wurzel aus Seite² + Seite²*/
jesephin 2:b57deaf107b8 152
jesephin 2:b57deaf107b8 153 public:
jesephin 2:b57deaf107b8 154 float leseQuadratFlaeche ();
jesephin 2:b57deaf107b8 155 float leseQuadratUmfang ();
jesephin 2:b57deaf107b8 156 float leseDiagonale ();
jesephin 2:b57deaf107b8 157
jesephin 2:b57deaf107b8 158 Quadrat(float laenge);
jesephin 2:b57deaf107b8 159 };
jesephin 2:b57deaf107b8 160
jesephin 2:b57deaf107b8 161 Quadrat::Quadrat (float laenge):Rechteck (laenge,laenge) //ohne datentyp bei rechteck
jesephin 2:b57deaf107b8 162
jesephin 2:b57deaf107b8 163 {
jesephin 2:b57deaf107b8 164 // Im Konstruktor werden gleich die Membervariablen initialisiert
jesephin 2:b57deaf107b8 165
jesephin 2:b57deaf107b8 166 // Ueber den Seiten werden Umfang und Flaeche berechnet.
jesephin 2:b57deaf107b8 167 m_quadratumfang = 4 * laenge ;
jesephin 2:b57deaf107b8 168 m_quadratflaeche = laenge * laenge;
jesephin 2:b57deaf107b8 169 m_diagonale=sqrt(pow(laenge,2)+ pow(laenge,2));
jesephin 2:b57deaf107b8 170 };
jesephin 2:b57deaf107b8 171
jesephin 2:b57deaf107b8 172 float Quadrat::leseQuadratUmfang ()
jesephin 2:b57deaf107b8 173 {
jesephin 2:b57deaf107b8 174 // hier ist keine Aenderung der Funktion noetig,
jesephin 2:b57deaf107b8 175 // daher wird die Funktion der Basisklasse aufger.
jesephin 2:b57deaf107b8 176 return m_quadratumfang;
jesephin 2:b57deaf107b8 177 };
jesephin 2:b57deaf107b8 178
jesephin 2:b57deaf107b8 179 float Quadrat::leseQuadratFlaeche ()
jesephin 2:b57deaf107b8 180 {
jesephin 2:b57deaf107b8 181 return m_quadratflaeche;
jesephin 2:b57deaf107b8 182 };
jesephin 2:b57deaf107b8 183
jesephin 2:b57deaf107b8 184 float Quadrat::leseDiagonale ()
jesephin 2:b57deaf107b8 185 {
jesephin 2:b57deaf107b8 186 return m_diagonale;
jesephin 2:b57deaf107b8 187 };
jesephin 2:b57deaf107b8 188
jesephin 2:b57deaf107b8 189 int main ()
jesephin 2:b57deaf107b8 190 {
jesephin 2:b57deaf107b8 191 Kreis kr(1.0); // Hier wird der Konstruktor aufgerufen und das
jesephin 2:b57deaf107b8 192 // damit das Objekt meineForm der Klasse Kreis
jesephin 2:b57deaf107b8 193 // mit dem radius 1.0 erstellt. auch instanziert.
jesephin 2:b57deaf107b8 194 float um = kr.leseUmfang(); // Methode wird aufgerufen von Kreis Methode
jesephin 2:b57deaf107b8 195 float fl = kr.leseFlaeche();
jesephin 2:b57deaf107b8 196
jesephin 2:b57deaf107b8 197 Rechteck re(3,5);
jesephin 2:b57deaf107b8 198 float um_r = re.leseRechteckUmfang(); // Methode wird aufgerufen von Rechteck Methode
jesephin 2:b57deaf107b8 199 float fl_r = re.leseRechteckFlaeche();
jesephin 2:b57deaf107b8 200 float di_r = re.leseDiagonale();
jesephin 2:b57deaf107b8 201
jesephin 2:b57deaf107b8 202 Quadrat qu(4.0);
jesephin 2:b57deaf107b8 203 float um_q = qu.leseQuadratUmfang(); // Methode wird aufgerufen von Quadrat Methode
jesephin 2:b57deaf107b8 204 float fl_q = qu.leseQuadratFlaeche();
jesephin 2:b57deaf107b8 205 float di_q = qu.leseDiagonale();
jesephin 2:b57deaf107b8 206
jesephin 2:b57deaf107b8 207 printf ("Der Kreis Umfang betraeggt: %f.\n", um);
jesephin 2:b57deaf107b8 208 printf ("Der Kreis Fläche betraeggt: %f.\n", fl);
jesephin 2:b57deaf107b8 209 printf ("Der Rechteck Umfang betraeggt: %f.\n", um_r);
jesephin 2:b57deaf107b8 210 printf ("Der Rechteck Fläche betraeggt: %f.\n", fl_r);
jesephin 2:b57deaf107b8 211 printf ("Der Rechteck Diagonale betraeggt: %f.\n", di_r);
jesephin 2:b57deaf107b8 212 printf ("Der Quadrat Umfang betraeggt: %f.\n", um_q);
jesephin 2:b57deaf107b8 213 printf ("Der Quadrat Fläche betraeggt: %f.\n", fl_q);
jesephin 2:b57deaf107b8 214 printf ("Der Quadrat Diagonale betraeggt: %f.\n", di_q);
jesephin 2:b57deaf107b8 215
jesephin 2:b57deaf107b8 216 return 0;
jesephin 2:b57deaf107b8 217 }