124 lines
3.5 KiB
C++
124 lines
3.5 KiB
C++
/***********************************************************************/
|
|
/* Klassen in C++, Beispiel 4
|
|
/* 24.07.1999
|
|
/***********************************************************************/
|
|
|
|
#include <iostream>
|
|
#include <string>
|
|
using namespace std;
|
|
/***********************************************************************/
|
|
/* Definition der Klasse Rechteck
|
|
/* Es hat sich gegenüber Beispiel 3 nichts geändert
|
|
/***********************************************************************/
|
|
class CRechteck
|
|
{
|
|
public:
|
|
|
|
CRechteck (int, int) ; // Konstruktor
|
|
|
|
void BerechneFlaeche(void);
|
|
|
|
protected:
|
|
|
|
int breite;
|
|
int hoehe;
|
|
|
|
};
|
|
|
|
/***********************************************************************/
|
|
/* Definition der Elementfunktionen der Klasse CRechteck
|
|
/* Es hat sich gegenüber Beispiel 3 nichts geändert
|
|
/***********************************************************************/
|
|
// Elementfunktion zur Berechnung der Rechteckflaeche
|
|
void CRechteck::BerechneFlaeche(void)
|
|
{
|
|
int f;
|
|
|
|
f = breite * hoehe;
|
|
|
|
cout << endl << "Die Flaeche des Rechtecks betraegt: "
|
|
<< f << " qcm." << endl;
|
|
|
|
}
|
|
|
|
// Konstruktor Funktionsdeklaration
|
|
CRechteck::CRechteck(int b, int h)
|
|
{
|
|
breite = b;
|
|
hoehe = h;
|
|
}
|
|
/* Ende CRechteck
|
|
|
|
/***********************************************************************/
|
|
/* Definition einer neuen, abgeleiteten Klasse CRechteck2 welche die gleichen
|
|
/* Eigenschaften besitzt wie die Basisklasse CRechteck (Vererbung) aber durch
|
|
/* die Funktion BerechneUmfang() ergänzt wird
|
|
/***********************************************************************/
|
|
class CRechteck2 : public CRechteck
|
|
{
|
|
public:
|
|
|
|
// Es muß ein neuer Konstruktor her
|
|
CRechteck2 (int b, int h);
|
|
|
|
// Neue Elementfunktion BerechneUmfang();
|
|
void BerechneUmfang(void);
|
|
};
|
|
|
|
/***********************************************************************/
|
|
/* Definition der zusätzlichen Elementfunktionen
|
|
/* innerhalb der Klasse CRechteck2
|
|
/***********************************************************************/
|
|
|
|
// Die Konstruktorfunktion CRechteck2 muß noch von der
|
|
// Basisklasse CRechteck abgeleitet werden.
|
|
CRechteck2::CRechteck2(int b, int h):CRechteck(b, h)
|
|
{ } // {} keine neuen Konstruktorfunktionen hinzugekommen
|
|
|
|
// Neue Elementfunktion BerechneUmfang();
|
|
void CRechteck2::BerechneUmfang(void)
|
|
{
|
|
int u;
|
|
|
|
u = 2 * (breite + hoehe);
|
|
cout << endl << "Der Umfang des Rechtecks betraegt: "
|
|
<< u << " cm." << endl;
|
|
|
|
}
|
|
/* Ende CRechteck2
|
|
|
|
/***********************************************************************/
|
|
/* Hauptprogramm zum Testen der Klasse Rechteck2
|
|
/*
|
|
/***********************************************************************/
|
|
int main (void)
|
|
{
|
|
// Ein Rechteck-Objekt der neuen abgeleiteten Klasse CRechteck2
|
|
// erzeugen
|
|
CRechteck2 MeinRechteck(10, 5);
|
|
|
|
// Fläche des Objekts 'MeinRechteck' berechnen und anzeigen
|
|
// Mit Hilfe der bewährten Basis-Elementfunktion BerechneFlaeche()
|
|
MeinRechteck.BerechneFlaeche();
|
|
|
|
// Umfang des Objekts 'MeinRechteck' berechnen und anzeigen
|
|
// Mit Hilfe der hinzugekommenen Elementfunktion BerechneUmfang();
|
|
MeinRechteck.BerechneUmfang();
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
/*
|
|
Das war das vierte und letzte Beispiel.
|
|
Das hier waren erstmal die Grundlagen zum Verständnis.
|
|
Bis hierhin ist ungefähr mein Kenntnisstand.
|
|
Ich hoffe ich konnte ein wenig helfen.
|
|
Du könntest vielleicht mal weitere Elementfunktionen wie
|
|
z.B. setbreite() und sethoehe() hinzufügen,
|
|
um ein vorhandenes Rechteck-Objekt zu verändern.
|
|
*/
|
|
|
|
|
|
|