TINF_Abgaben

Committer:
Ursukar
Date:
Tue Mar 31 08:35:15 2020 +0000
Revision:
1:636c6bfc9174
Vererbung

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Ursukar 1:636c6bfc9174 1 #include <stdio.h>
Ursukar 1:636c6bfc9174 2 #include <math.h>
Ursukar 1:636c6bfc9174 3
Ursukar 1:636c6bfc9174 4 enum eckig { ja, nein };
Ursukar 1:636c6bfc9174 5
Ursukar 1:636c6bfc9174 6 // Basisklasse
Ursukar 1:636c6bfc9174 7 class Form
Ursukar 1:636c6bfc9174 8 {
Ursukar 1:636c6bfc9174 9
Ursukar 1:636c6bfc9174 10 protected:
Ursukar 1:636c6bfc9174 11 eckig m_hat_ecken;
Ursukar 1:636c6bfc9174 12 float m_umfang;
Ursukar 1:636c6bfc9174 13 float m_flaeche;
Ursukar 1:636c6bfc9174 14
Ursukar 1:636c6bfc9174 15 public:
Ursukar 1:636c6bfc9174 16 float leseUmfang() { return m_umfang; }
Ursukar 1:636c6bfc9174 17 float leseFlaeche() { return m_flaeche; }
Ursukar 1:636c6bfc9174 18
Ursukar 1:636c6bfc9174 19 Form(eckig hat_ecken);
Ursukar 1:636c6bfc9174 20 };
Ursukar 1:636c6bfc9174 21
Ursukar 1:636c6bfc9174 22 Form::Form(eckig ecken) {
Ursukar 1:636c6bfc9174 23 m_hat_ecken = ecken;
Ursukar 1:636c6bfc9174 24 m_umfang = 0;
Ursukar 1:636c6bfc9174 25 m_flaeche = 0;
Ursukar 1:636c6bfc9174 26 };
Ursukar 1:636c6bfc9174 27
Ursukar 1:636c6bfc9174 28 // Abgeleite Klasse von Forms
Ursukar 1:636c6bfc9174 29 class Kreis : public Form {
Ursukar 1:636c6bfc9174 30
Ursukar 1:636c6bfc9174 31 public:
Ursukar 1:636c6bfc9174 32 float leseUmfang() {return m_umfang;} // holt sich die Werte aus der Variable m_umfang
Ursukar 1:636c6bfc9174 33 float leseFlaeche() {return m_flaeche;}
Ursukar 1:636c6bfc9174 34
Ursukar 1:636c6bfc9174 35 Kreis(float radius);
Ursukar 1:636c6bfc9174 36 };
Ursukar 1:636c6bfc9174 37
Ursukar 1:636c6bfc9174 38 // Berechnet Fläche und Umfang und speichert es in der Basisklasse
Ursukar 1:636c6bfc9174 39 Kreis::Kreis(float radius) : Form(nein) {
Ursukar 1:636c6bfc9174 40
Ursukar 1:636c6bfc9174 41 m_umfang = 2 * radius * M_PI;
Ursukar 1:636c6bfc9174 42 m_flaeche = radius * radius * M_PI;
Ursukar 1:636c6bfc9174 43 };
Ursukar 1:636c6bfc9174 44
Ursukar 1:636c6bfc9174 45 // Neue von Forms abgleitete Unterklasse
Ursukar 1:636c6bfc9174 46 class Rechteck : public Form{
Ursukar 1:636c6bfc9174 47 protected:
Ursukar 1:636c6bfc9174 48
Ursukar 1:636c6bfc9174 49 float m_kantenLaenge_a;
Ursukar 1:636c6bfc9174 50 float m_kantenLaenge_b;
Ursukar 1:636c6bfc9174 51
Ursukar 1:636c6bfc9174 52 public:
Ursukar 1:636c6bfc9174 53
Ursukar 1:636c6bfc9174 54 float leseUmfang();
Ursukar 1:636c6bfc9174 55 float leseFlaeche();
Ursukar 1:636c6bfc9174 56
Ursukar 1:636c6bfc9174 57 Rechteck(float a, float b);
Ursukar 1:636c6bfc9174 58 };
Ursukar 1:636c6bfc9174 59
Ursukar 1:636c6bfc9174 60 // Speichert die Paramter vom Objekt in die Member
Ursukar 1:636c6bfc9174 61 Rechteck::Rechteck(float a, float b):Form(ja){
Ursukar 1:636c6bfc9174 62 m_kantenLaenge_a = a;
Ursukar 1:636c6bfc9174 63 m_kantenLaenge_b = b;
Ursukar 1:636c6bfc9174 64 };
Ursukar 1:636c6bfc9174 65
Ursukar 1:636c6bfc9174 66 // Holt sich die Werte aus den Membern und gibt den Wert auf die Methode zurück
Ursukar 1:636c6bfc9174 67 float Rechteck::leseFlaeche(){
Ursukar 1:636c6bfc9174 68 return m_kantenLaenge_a * m_kantenLaenge_b;
Ursukar 1:636c6bfc9174 69
Ursukar 1:636c6bfc9174 70 }
Ursukar 1:636c6bfc9174 71 // Holt sich die Werte aus den Membern und gibt den Wert auf die Methode zurück
Ursukar 1:636c6bfc9174 72 float Rechteck::leseUmfang(){
Ursukar 1:636c6bfc9174 73 return (m_kantenLaenge_a * 2) + (m_kantenLaenge_b * 2);
Ursukar 1:636c6bfc9174 74
Ursukar 1:636c6bfc9174 75 }
Ursukar 1:636c6bfc9174 76
Ursukar 1:636c6bfc9174 77 // Die abgleitete Klasse von Rechteck
Ursukar 1:636c6bfc9174 78 class Quadrad : public Rechteck{
Ursukar 1:636c6bfc9174 79
Ursukar 1:636c6bfc9174 80 public:
Ursukar 1:636c6bfc9174 81
Ursukar 1:636c6bfc9174 82 float leseUmfang();
Ursukar 1:636c6bfc9174 83 float leseFlaeche();
Ursukar 1:636c6bfc9174 84
Ursukar 1:636c6bfc9174 85 Quadrad(float a);
Ursukar 1:636c6bfc9174 86 };
Ursukar 1:636c6bfc9174 87
Ursukar 1:636c6bfc9174 88 // Speichert die Paramter vom Objekt in die Member
Ursukar 1:636c6bfc9174 89 Quadrad::Quadrad(float a) : Rechteck(a, a){
Ursukar 1:636c6bfc9174 90 m_kantenLaenge_a = a;
Ursukar 1:636c6bfc9174 91
Ursukar 1:636c6bfc9174 92 };
Ursukar 1:636c6bfc9174 93 // Holt sich die Werte aus den Membern und gibt den Wert auf die Methode zurück
Ursukar 1:636c6bfc9174 94 float Quadrad::leseUmfang(){
Ursukar 1:636c6bfc9174 95 return m_kantenLaenge_a * 4;
Ursukar 1:636c6bfc9174 96 }
Ursukar 1:636c6bfc9174 97 // Holt sich die Werte aus den Membern und gibt den Wert auf die Methode zurück
Ursukar 1:636c6bfc9174 98 float Quadrad::leseFlaeche(){
Ursukar 1:636c6bfc9174 99 return m_kantenLaenge_a * m_kantenLaenge_a;
Ursukar 1:636c6bfc9174 100 }
Ursukar 1:636c6bfc9174 101
Ursukar 1:636c6bfc9174 102 int main()
Ursukar 1:636c6bfc9174 103 {
Ursukar 1:636c6bfc9174 104 // Hier werden neue Objekte erstellt
Ursukar 1:636c6bfc9174 105 Kreis kr(1.0);
Ursukar 1:636c6bfc9174 106 Rechteck re(2.0, 3.0);
Ursukar 1:636c6bfc9174 107 Quadrad qu(5.0);
Ursukar 1:636c6bfc9174 108
Ursukar 1:636c6bfc9174 109 // Hier greifen die Objekte auf die Methoden zu und werden mit Printf ausgegeben
Ursukar 1:636c6bfc9174 110 printf("Alle Werte des Kreises: \n");
Ursukar 1:636c6bfc9174 111 printf("Der Umfang des Kreises beträgt: %f\n", kr.leseUmfang());
Ursukar 1:636c6bfc9174 112 printf("Die Fläche des Kreises beträgt: %f\n", kr.leseFlaeche());
Ursukar 1:636c6bfc9174 113
Ursukar 1:636c6bfc9174 114 printf("Alle Werte des Rechtecks: \n");
Ursukar 1:636c6bfc9174 115 printf("Der Umfang des Rechtecks beträgt: %f\n", re.leseUmfang());
Ursukar 1:636c6bfc9174 116 printf("Die Fläche des Rechtecks beträgt: %f\n", re.leseFlaeche());
Ursukar 1:636c6bfc9174 117
Ursukar 1:636c6bfc9174 118 printf("Alle Werte des Quadrads: \n");
Ursukar 1:636c6bfc9174 119 printf("Der Umfang des Quadrads beträgt: %f\n", qu.leseUmfang());
Ursukar 1:636c6bfc9174 120 printf("Die Fläche des Quadrads beträgt: %f\n", qu.leseFlaeche());
Ursukar 1:636c6bfc9174 121
Ursukar 1:636c6bfc9174 122 return 0;
Ursukar 1:636c6bfc9174 123 }