Abgabe_neu
Neubauer_2_Vererbung.cpp@0:5cabd77ebde3, 2020-04-28 (annotated)
- Committer:
- gigo2191
- Date:
- Tue Apr 28 19:33:52 2020 +0000
- Revision:
- 0:5cabd77ebde3
Abgabe
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
gigo2191 | 0:5cabd77ebde3 | 1 | /****************************************************************************** |
gigo2191 | 0:5cabd77ebde3 | 2 | |
gigo2191 | 0:5cabd77ebde3 | 3 | C++ Kurs BULME 19/20 SM |
gigo2191 | 0:5cabd77ebde3 | 4 | Aufgane 02 |
gigo2191 | 0:5cabd77ebde3 | 5 | Vererbung |
gigo2191 | 0:5cabd77ebde3 | 6 | Mario Neubauer |
gigo2191 | 0:5cabd77ebde3 | 7 | |
gigo2191 | 0:5cabd77ebde3 | 8 | *******************************************************************************/ |
gigo2191 | 0:5cabd77ebde3 | 9 | |
gigo2191 | 0:5cabd77ebde3 | 10 | #include <stdio.h> |
gigo2191 | 0:5cabd77ebde3 | 11 | #include <math.h> |
gigo2191 | 0:5cabd77ebde3 | 12 | |
gigo2191 | 0:5cabd77ebde3 | 13 | enum eckig { ja = 0, nein = 1 }; |
gigo2191 | 0:5cabd77ebde3 | 14 | |
gigo2191 | 0:5cabd77ebde3 | 15 | //--------------------------------------------------- |
gigo2191 | 0:5cabd77ebde3 | 16 | // Basisklasse |
gigo2191 | 0:5cabd77ebde3 | 17 | |
gigo2191 | 0:5cabd77ebde3 | 18 | |
gigo2191 | 0:5cabd77ebde3 | 19 | class Form |
gigo2191 | 0:5cabd77ebde3 | 20 | { |
gigo2191 | 0:5cabd77ebde3 | 21 | |
gigo2191 | 0:5cabd77ebde3 | 22 | protected: //Variablen, welche Vererbt werden können, jedoch nicht öffentlich zugänglich sind |
gigo2191 | 0:5cabd77ebde3 | 23 | eckig m_hat_ecken; |
gigo2191 | 0:5cabd77ebde3 | 24 | float m_umfang; |
gigo2191 | 0:5cabd77ebde3 | 25 | float m_flaeche; |
gigo2191 | 0:5cabd77ebde3 | 26 | |
gigo2191 | 0:5cabd77ebde3 | 27 | public: //Variablen, welche öffentlich zugänglich sind |
gigo2191 | 0:5cabd77ebde3 | 28 | float leseUmfang() { return m_umfang; } |
gigo2191 | 0:5cabd77ebde3 | 29 | float leseFlaeche() { return m_flaeche; } |
gigo2191 | 0:5cabd77ebde3 | 30 | Form(eckig hat_ecken); |
gigo2191 | 0:5cabd77ebde3 | 31 | }; |
gigo2191 | 0:5cabd77ebde3 | 32 | |
gigo2191 | 0:5cabd77ebde3 | 33 | Form::Form(eckig ecken) { // im Konstruktor werden gem. Variablen initialisiert |
gigo2191 | 0:5cabd77ebde3 | 34 | m_hat_ecken = ecken; |
gigo2191 | 0:5cabd77ebde3 | 35 | m_umfang = 0; |
gigo2191 | 0:5cabd77ebde3 | 36 | m_flaeche = 0; |
gigo2191 | 0:5cabd77ebde3 | 37 | }; |
gigo2191 | 0:5cabd77ebde3 | 38 | |
gigo2191 | 0:5cabd77ebde3 | 39 | |
gigo2191 | 0:5cabd77ebde3 | 40 | //--------------------------------------------------------- |
gigo2191 | 0:5cabd77ebde3 | 41 | //Klasse Kreis |
gigo2191 | 0:5cabd77ebde3 | 42 | |
gigo2191 | 0:5cabd77ebde3 | 43 | |
gigo2191 | 0:5cabd77ebde3 | 44 | class Kreis : public Form { // Hier wird eine von Form abgeleitete Klasse Kreis deklariert |
gigo2191 | 0:5cabd77ebde3 | 45 | |
gigo2191 | 0:5cabd77ebde3 | 46 | protected: // Zugriffschutz protected bedeutet, dass abgeleitete |
gigo2191 | 0:5cabd77ebde3 | 47 | float m_radius; // Klassen ebenfalls zugreifen können. |
gigo2191 | 0:5cabd77ebde3 | 48 | |
gigo2191 | 0:5cabd77ebde3 | 49 | public: |
gigo2191 | 0:5cabd77ebde3 | 50 | float leseUmfang(); //Für den Umfang |
gigo2191 | 0:5cabd77ebde3 | 51 | float leseFlaeche(); //Für die Fläche |
gigo2191 | 0:5cabd77ebde3 | 52 | int Ecken(); //Prüft, ob Ecken vorhanden sind |
gigo2191 | 0:5cabd77ebde3 | 53 | Kreis(float radius); // Neuer Konstruktor erfordert nur den radius |
gigo2191 | 0:5cabd77ebde3 | 54 | }; |
gigo2191 | 0:5cabd77ebde3 | 55 | |
gigo2191 | 0:5cabd77ebde3 | 56 | Kreis::Kreis(float radius) : Form(nein) { |
gigo2191 | 0:5cabd77ebde3 | 57 | |
gigo2191 | 0:5cabd77ebde3 | 58 | m_umfang = 2 * radius * M_PI; // Der Umfang wird berechnet |
gigo2191 | 0:5cabd77ebde3 | 59 | m_flaeche = radius * radius * M_PI; //Die Fläche wird berechnet |
gigo2191 | 0:5cabd77ebde3 | 60 | }; |
gigo2191 | 0:5cabd77ebde3 | 61 | |
gigo2191 | 0:5cabd77ebde3 | 62 | float Kreis::leseUmfang() {return m_umfang; } //Der Wert vom Umfang wird zurückgegeben |
gigo2191 | 0:5cabd77ebde3 | 63 | float Kreis::leseFlaeche() { return m_flaeche;} //Der Wert von der Fläche wird zurückgegeben |
gigo2191 | 0:5cabd77ebde3 | 64 | int Kreis::Ecken() {return m_hat_ecken;} //Es wird zurückgegeben, ob Ecken vorhanden sind |
gigo2191 | 0:5cabd77ebde3 | 65 | |
gigo2191 | 0:5cabd77ebde3 | 66 | |
gigo2191 | 0:5cabd77ebde3 | 67 | //--------------------------------------------------------- |
gigo2191 | 0:5cabd77ebde3 | 68 | // Klasse Rechteck |
gigo2191 | 0:5cabd77ebde3 | 69 | |
gigo2191 | 0:5cabd77ebde3 | 70 | |
gigo2191 | 0:5cabd77ebde3 | 71 | class Rechteck : public Form{ //Klasse Rechteck wird erzeugt und Klasse Form wird vererbt |
gigo2191 | 0:5cabd77ebde3 | 72 | |
gigo2191 | 0:5cabd77ebde3 | 73 | protected: |
gigo2191 | 0:5cabd77ebde3 | 74 | float m_laenge; //Für die Länge |
gigo2191 | 0:5cabd77ebde3 | 75 | float m_breite; //Für die Breite |
gigo2191 | 0:5cabd77ebde3 | 76 | |
gigo2191 | 0:5cabd77ebde3 | 77 | public: |
gigo2191 | 0:5cabd77ebde3 | 78 | float leseUmfang(); //Für den Umfang |
gigo2191 | 0:5cabd77ebde3 | 79 | float leseFlaeche(); //Für die Fläche |
gigo2191 | 0:5cabd77ebde3 | 80 | int Ecken(); //Prüft, ob Ecken vorhanden sind |
gigo2191 | 0:5cabd77ebde3 | 81 | Rechteck(float laenge, float breite); //Konstruktor, welcher länge und breite erfordert |
gigo2191 | 0:5cabd77ebde3 | 82 | }; |
gigo2191 | 0:5cabd77ebde3 | 83 | |
gigo2191 | 0:5cabd77ebde3 | 84 | Rechteck::Rechteck(float laenge, float breite) : Form(ja) { //Die Membervariable wird initialisiert |
gigo2191 | 0:5cabd77ebde3 | 85 | |
gigo2191 | 0:5cabd77ebde3 | 86 | m_umfang = 2 * laenge + 2 * breite; //Der Umfang wird berechnet |
gigo2191 | 0:5cabd77ebde3 | 87 | m_flaeche = laenge * breite; //Die Fläche wird berechnet |
gigo2191 | 0:5cabd77ebde3 | 88 | |
gigo2191 | 0:5cabd77ebde3 | 89 | }; |
gigo2191 | 0:5cabd77ebde3 | 90 | |
gigo2191 | 0:5cabd77ebde3 | 91 | float Rechteck::leseUmfang() {return m_umfang;} //Der Wert vom Umfang wird zurückgegeben |
gigo2191 | 0:5cabd77ebde3 | 92 | float Rechteck::leseFlaeche(){return m_flaeche;} //Der Wert von der Fläche wird zurückgegeben |
gigo2191 | 0:5cabd77ebde3 | 93 | int Rechteck::Ecken() {return m_hat_ecken;} //Es wird zurückgegeben, ob Ecken vorhanden sind |
gigo2191 | 0:5cabd77ebde3 | 94 | |
gigo2191 | 0:5cabd77ebde3 | 95 | |
gigo2191 | 0:5cabd77ebde3 | 96 | //-------------------------------------------------------------------- |
gigo2191 | 0:5cabd77ebde3 | 97 | //Klasse Quadrat |
gigo2191 | 0:5cabd77ebde3 | 98 | |
gigo2191 | 0:5cabd77ebde3 | 99 | |
gigo2191 | 0:5cabd77ebde3 | 100 | class Quadrat : public Rechteck{ //Klasse Quadrat wird erzeugt und Klasse Rechteck wird vererbt |
gigo2191 | 0:5cabd77ebde3 | 101 | protected: |
gigo2191 | 0:5cabd77ebde3 | 102 | float m_laenge; //Nur eine Länge nötig |
gigo2191 | 0:5cabd77ebde3 | 103 | |
gigo2191 | 0:5cabd77ebde3 | 104 | public: |
gigo2191 | 0:5cabd77ebde3 | 105 | Quadrat(float laenge); //Nur die Länge ist erforderlich |
gigo2191 | 0:5cabd77ebde3 | 106 | }; |
gigo2191 | 0:5cabd77ebde3 | 107 | |
gigo2191 | 0:5cabd77ebde3 | 108 | Quadrat::Quadrat(float laenge) : Rechteck(m_laenge, m_breite) { |
gigo2191 | 0:5cabd77ebde3 | 109 | m_umfang = laenge * 4; //Der Umfang wird berechnet |
gigo2191 | 0:5cabd77ebde3 | 110 | m_flaeche = laenge * laenge; //Die Fläche wird berechnet |
gigo2191 | 0:5cabd77ebde3 | 111 | }; |
gigo2191 | 0:5cabd77ebde3 | 112 | |
gigo2191 | 0:5cabd77ebde3 | 113 | |
gigo2191 | 0:5cabd77ebde3 | 114 | //-------------------------------------------------------------- |
gigo2191 | 0:5cabd77ebde3 | 115 | //Hauptprogramm |
gigo2191 | 0:5cabd77ebde3 | 116 | |
gigo2191 | 0:5cabd77ebde3 | 117 | |
gigo2191 | 0:5cabd77ebde3 | 118 | int main() |
gigo2191 | 0:5cabd77ebde3 | 119 | { |
gigo2191 | 0:5cabd77ebde3 | 120 | //Klassen werden initialisiert |
gigo2191 | 0:5cabd77ebde3 | 121 | Kreis kr(1.0); |
gigo2191 | 0:5cabd77ebde3 | 122 | Rechteck rt(4.0, 2.0); |
gigo2191 | 0:5cabd77ebde3 | 123 | Quadrat qu(4.0); |
gigo2191 | 0:5cabd77ebde3 | 124 | |
gigo2191 | 0:5cabd77ebde3 | 125 | //-------------------------------------------------------------------------- |
gigo2191 | 0:5cabd77ebde3 | 126 | |
gigo2191 | 0:5cabd77ebde3 | 127 | //Werte werden übernommen |
gigo2191 | 0:5cabd77ebde3 | 128 | //Kreis |
gigo2191 | 0:5cabd77ebde3 | 129 | int ecke_Kreis = kr.Ecken(); |
gigo2191 | 0:5cabd77ebde3 | 130 | float um_Kreis = kr.leseUmfang(); |
gigo2191 | 0:5cabd77ebde3 | 131 | float fl_Kreis = kr.leseFlaeche(); |
gigo2191 | 0:5cabd77ebde3 | 132 | |
gigo2191 | 0:5cabd77ebde3 | 133 | //Rechteck |
gigo2191 | 0:5cabd77ebde3 | 134 | int ecke_Rechteck = rt.Ecken(); |
gigo2191 | 0:5cabd77ebde3 | 135 | float um_Rechteck = rt.leseUmfang(); |
gigo2191 | 0:5cabd77ebde3 | 136 | float fl_Rechteck = rt.leseFlaeche(); |
gigo2191 | 0:5cabd77ebde3 | 137 | |
gigo2191 | 0:5cabd77ebde3 | 138 | //Quadrat |
gigo2191 | 0:5cabd77ebde3 | 139 | int ecke_Quadrat = qu.Ecken(); |
gigo2191 | 0:5cabd77ebde3 | 140 | float um_Quadrat = qu.leseUmfang(); |
gigo2191 | 0:5cabd77ebde3 | 141 | float fl_Quadrat = qu.leseFlaeche(); |
gigo2191 | 0:5cabd77ebde3 | 142 | |
gigo2191 | 0:5cabd77ebde3 | 143 | //-------------------------------------------------------------------------- |
gigo2191 | 0:5cabd77ebde3 | 144 | |
gigo2191 | 0:5cabd77ebde3 | 145 | |
gigo2191 | 0:5cabd77ebde3 | 146 | //Werte werden ausgegeben |
gigo2191 | 0:5cabd77ebde3 | 147 | //Kreis |
gigo2191 | 0:5cabd77ebde3 | 148 | printf("Die Werte des Kreises:\n"); |
gigo2191 | 0:5cabd77ebde3 | 149 | printf("Der Umfang des Kreises beträgt: %f\n", um_Kreis); //Umfang |
gigo2191 | 0:5cabd77ebde3 | 150 | printf("Die Fläche des Kreises beträgt: %f\n", fl_Kreis); //Fläche |
gigo2191 | 0:5cabd77ebde3 | 151 | |
gigo2191 | 0:5cabd77ebde3 | 152 | //Ausgabe Ecken |
gigo2191 | 0:5cabd77ebde3 | 153 | switch(ecke_Kreis) { |
gigo2191 | 0:5cabd77ebde3 | 154 | case 0: printf("Der Kreis hat Ecken\n\n"); break; |
gigo2191 | 0:5cabd77ebde3 | 155 | default: printf("Der Kreis hat keine Ecken\n\n"); break; |
gigo2191 | 0:5cabd77ebde3 | 156 | } |
gigo2191 | 0:5cabd77ebde3 | 157 | |
gigo2191 | 0:5cabd77ebde3 | 158 | //-------------------------------------------------------------------------- |
gigo2191 | 0:5cabd77ebde3 | 159 | |
gigo2191 | 0:5cabd77ebde3 | 160 | //Rechteck |
gigo2191 | 0:5cabd77ebde3 | 161 | printf("Die Werte des Rechtecks:\n"); |
gigo2191 | 0:5cabd77ebde3 | 162 | printf("Der Umfang des Rechtecks beträgt: %f\n", um_Rechteck); |
gigo2191 | 0:5cabd77ebde3 | 163 | printf("Die Fläche des Rechtecks beträgt: %f\n", fl_Rechteck); |
gigo2191 | 0:5cabd77ebde3 | 164 | |
gigo2191 | 0:5cabd77ebde3 | 165 | //Ausgabe Ecken |
gigo2191 | 0:5cabd77ebde3 | 166 | switch(ecke_Rechteck) { |
gigo2191 | 0:5cabd77ebde3 | 167 | case 0: printf("Das Rechteck hat Ecken\n\n"); break; |
gigo2191 | 0:5cabd77ebde3 | 168 | default: printf("Das Rechteck hat keine Ecken\n\n"); break; |
gigo2191 | 0:5cabd77ebde3 | 169 | } |
gigo2191 | 0:5cabd77ebde3 | 170 | |
gigo2191 | 0:5cabd77ebde3 | 171 | //-------------------------------------------------------------------------- |
gigo2191 | 0:5cabd77ebde3 | 172 | |
gigo2191 | 0:5cabd77ebde3 | 173 | //Quadrat |
gigo2191 | 0:5cabd77ebde3 | 174 | printf("Die Werte des Quadrats:\n"); |
gigo2191 | 0:5cabd77ebde3 | 175 | printf("Der Umfang des Quadrats beträgt: %f\n", um_Quadrat); |
gigo2191 | 0:5cabd77ebde3 | 176 | printf("Die Fläche des Quadrats beträgt: %f\n", fl_Quadrat); |
gigo2191 | 0:5cabd77ebde3 | 177 | |
gigo2191 | 0:5cabd77ebde3 | 178 | //Ausgabe Ecken |
gigo2191 | 0:5cabd77ebde3 | 179 | switch(ecke_Quadrat) { |
gigo2191 | 0:5cabd77ebde3 | 180 | case 0: printf("Das Quadrat hat Ecken\n\n"); break; |
gigo2191 | 0:5cabd77ebde3 | 181 | default: printf("Das Quadrat hat keine Ecken\n\n"); break; |
gigo2191 | 0:5cabd77ebde3 | 182 | } |
gigo2191 | 0:5cabd77ebde3 | 183 | return 0; |
gigo2191 | 0:5cabd77ebde3 | 184 | } |