Vererbung_Aufgabe_1

Revision:
0:f277e7be6723
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Mesic_Vererbung_1.cpp	Wed Mar 25 22:17:56 2020 +0000
@@ -0,0 +1,183 @@
+#include <stdio.h>
+#include <math.h>
+
+enum eckig { ja, nein };
+
+class Form          // Basisklasse 
+    {                   
+                    // In der Basisklasse werden alle gemeinsamen Variablen
+  protected:          
+    eckig m_hat_ecken;
+    float m_umfang;
+    float m_flaeche;
+    float m_rechteckFlaeche;
+    float m_rechteckUmfang;
+
+  
+ 
+  public:                   // sowie auch alle gemeinsamen Methoden deklariert
+    float leseUmfang() { return m_umfang; }
+    float leseFlaeche() { return m_flaeche; }
+    float leseRechteckUmfang() { return m_rechteckUmfang; }
+    float leseRechteckFlaeche() { return m_rechteckFlaeche; }
+ 
+  
+
+    Form(eckig hat_ecken);
+    Form();
+    };
+
+Form::Form(eckig ecken) // im Konstruktor werden gem. Variablen initialisiert
+    {   
+    m_hat_ecken = ecken;
+    m_umfang = 0;
+    m_flaeche = 0;
+    };
+Form::Form()
+    {
+    m_rechteckFlaeche=0;
+    m_rechteckUmfang=0;
+    }
+
+class Kreis : public Form { // Hier wird eine von Form abgeleitete Klasse Kreis deklariert
+    
+  protected:                // Zugriffschutz protected bedeutet, dass abgeleitete 
+                            // Klassen ebenfalls zugreifen können.
+    float m_radius;
+    
+  public:                   // alle gemeinsame Methoden
+    float leseUmfang();
+    float leseFlaeche();
+    
+    Kreis(float radius);  // Neuer Konstruktor erfordert nur den radius 
+    };
+
+Kreis::Kreis(float radius) : Form(nein) // Konstruktor
+    { 
+    m_umfang = 2 * radius * M_PI;  // Die Konstante M_PI ist in math.h definiert
+    m_flaeche = radius * radius * M_PI;
+    };
+
+    float Kreis::leseUmfang() {// hier ist keine Änderung der Funktion nötig,
+                            // daher wird die Funktion der Basisklasse aufger.
+    return m_umfang; 
+    }
+    float Kreis::leseFlaeche() 
+    {
+    return m_flaeche; 
+    }
+
+
+class Rechteck : public Form { 
+    
+  protected:               
+    float m_seiteA;
+    float m_seiteB;
+    float m_seitea;
+    float m_quadratUmfang;
+    float m_quadratFlaeche;
+ 
+    
+  public:                   
+    float leseRechteckFlaeche();   // alle gemeinsame Methoden
+    float leseRechteckUmfang();
+    float leseQuadratUmfang() { return m_quadratUmfang; }
+    float leseQuadratFlaeche() { return m_quadratFlaeche; }
+
+    
+    Rechteck(float seiteA, float seiteB); // Deklaration des Konstruktors
+    Rechteck();                          // Deklaration des Konstruktors
+
+    };
+
+ 
+Rechteck::Rechteck(float seiteA,float seiteB) : Form(ja)  // Konstruktor
+    {
+    m_rechteckUmfang = 2 * seiteA + 2 * seiteB;  
+    m_rechteckFlaeche = seiteA * seiteB;
+    };
+
+Rechteck::Rechteck()   // Konstruktor
+    {
+    m_quadratUmfang=0;
+    m_quadratFlaeche=0;
+    };
+
+    float Rechteck::leseRechteckUmfang()
+    {
+    return m_rechteckUmfang; 
+    }
+    float Rechteck::leseRechteckFlaeche() 
+    {
+    return m_rechteckFlaeche; 
+    }
+    
+    
+
+
+
+class Quadrat : public Rechteck   //Deklaration der Klasse Quadrat
+    
+    {
+    protected:               
+    float m_seitea;
+ 
+    public:                   
+    float leseQuadratUmfang();
+    float leseQuadratFlaeche();
+    
+    Quadrat(float seitea); // Deklaration des Konstruktors
+    
+    };
+
+Quadrat::Quadrat(float seitea) : Rechteck() // Konstruktor
+    {
+    m_quadratFlaeche=seitea*seitea;
+    m_quadratUmfang= 4 * seitea;
+    };
+
+  
+    float Quadrat::leseQuadratUmfang()
+    {
+    return m_quadratUmfang; 
+    }
+    float Quadrat::leseQuadratFlaeche() 
+    {
+    return m_quadratFlaeche; 
+    }
+
+
+
+
+
+int main()
+{
+    printf("Wir arbeiten nun mit abgeleiteten Klassen!\n");
+    printf("Nun wird ein Objekt kr der Klasse Kreis erzeugt!\n");
+    Kreis kr(1.0);
+    Rechteck re(2.0,3.0);
+    Quadrat qu(5.0);
+    
+    float um = kr.leseUmfang();
+    float fl = kr.leseFlaeche();
+    
+    float reUm = re.leseRechteckUmfang();
+    float reFl = re.leseRechteckFlaeche();
+    
+    float quUm = qu.leseQuadratUmfang();
+    float quFl = qu.leseQuadratFlaeche();
+    
+    printf("Der Umfang des Kreis beträgt: %f\n", um);
+    printf("Die Flaeche des Kreis beträgt: %f\n", fl);
+    
+    printf("Der Umfang des Rechtecks beträgt: %f\n", reUm);
+    printf("Die Flaeche des Rechtecks beträgt: %f\n", reFl);
+    
+    printf("Der Umfang des Quadrats beträgt: %f\n", quUm);
+    printf("Die Flaeche des Quadrats beträgt: %f\n", quFl);
+    return 0;
+}
+
+
+
+