/
dynapoly.cpp
45 lines (39 loc) · 1.44 KB
/
dynapoly.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
/* Die folgenden Code-Beispiele stammen aus dem Buch:
* Objektorientiertes Programmieren in C++
* Ein Tutorial für Ein- und Umsteiger
* von Nicolai Josuttis, Addison-Wesley München, 2001
*
* (C) Copyright Nicolai Josuttis 2001.
* Diese Software darf kopiert, verwendet, modifiziert und verteilt
* werden, sofern diese Copyright-Angabe in allen Kopien vorhanden ist.
* Diese Software wird "so wie sie ist" zur Verfügung gestellt.
* Es gibt keine explizite oder implizite Garantie über ihren Nutzen.
*/
// beliebiges geometrisches Objekt zeichnen
void zeichne (const GeoObj& obj) {
obj.draw();
}
// Abstand zwischen zwei geometrischen Objekten berechnen
Koord abstand (const GeoObj& x1, const GeoObj& x2) {
Koord a = x1.position() - x2.position();
return a.abs();
}
// inhomogene Menge von geometrischen Objekten ausgeben
void ausgeben (const std::vector<GeoObj*>& elems) {
for (unsigned i=0; i<elems.size(); ++i) {
elems[i]->draw();
}
}
int main()
{
Linie l;
Kreis k, k1, k2;
zeichne(l); // zeichne(GeoObj&) => Linie::draw()
zeichne(k); // zeichne(GeoObj&) => Kreis::draw()
abstand(k1,k2); // abstand(GeoObj&,GeoObj&)
abstand(l,k); // abstand(GeoObj&,GeoObj&)
std::vector<GeoObj*> menge; // inhomogene Menge
menge.push_back(&l); // Linie einfügen
menge.push_back(&k); // Kreis einfügen
ausgeben(menge); // Menge ausgeben
}