Intro_Class_Area
form.h
Go to the documentation of this file.
1 #ifndef FORM_H_INCLUDED
2 #define FORM_H_INCLUDED
3 
4 #include <cmath>
5 #include <iostream>
6 #include <string>
7 //using namespace std;
8 
9 class Form
10 {
11 public:
12 
13  Form(float x, float y) : _x(x), _y(y) {}
14 
15  Form(const Form &rhs) : _x(rhs._x), _y(rhs._y) {}
16  // Get center coordinates
17  float GetX() const
18  {
19  return _x;
20  }
21  float GetY() const
22  {
23  return _y;
24  }
25  // String with info
26  virtual std::string classname() const
27  {
28  return "geometric form";
29  }
30  // Area
31  virtual float area() const = 0;
32 
33  virtual ~Form();
34 
35 private:
36  float _x, _y; // Mittelpunktskoordinaten
37 };
38 
39 // class Quadrat (definieren)
40 class Quadrat: public Form
41 {
42 public:
43  Quadrat(float x, float y, float seite) : Form(x,y), _edge(seite) {}
44  std::string classname() const override
45  {
46  return "Square";
47  }
48  float area() const override;
49 
50 private:
51  float _edge;
52 };
53 
54 class Circle: public Form
55 {
56 public:
57  Circle(float x, float y, float radius) : Form(x,y), _radius(radius) {}
58  std::string classname() const override
59  {
60  return "Circle";
61  }
62  float area() const override;
63 
64 private:
65  float _radius;
66 };
67 
68 // further operators (what is needed?)
69 
70 bool operator<(const Form &a, const Form &b);
71 
72 inline
73 float euclid_dist(const Form &a, const Form &b)
74 {
75  return std::sqrt( (b.GetX()-a.GetX())*(b.GetX()-a.GetX()) + (b.GetY()-a.GetY())*(b.GetY()-a.GetY()) );
76 }
77 
78 // via pointer arguments
79 bool kleiner(const Form *a, const Form *b);
80 
81 inline
82 float euclid_dist(const Form *a, const Form *b) // distance(iterator, iterator) exists already in STL !!
83 {
84  std::cout << "###";
85  return euclid_dist(*a, *b);
86 }
87 
88 
89 std::ostream& operator<<(std::ostream& s, const Form& rhs);
90 
91 
92 #endif // FORM_H_INCLUDED
Definition: form.h:55
float area() const override
Definition: form.cpp:15
std::string classname() const override
Definition: form.h:58
Circle(float x, float y, float radius)
Definition: form.h:57
Definition: form.h:10
virtual float area() const =0
float GetX() const
Definition: form.h:17
float GetY() const
Definition: form.h:21
virtual std::string classname() const
Definition: form.h:26
virtual ~Form()
Definition: form.cpp:8
Form(const Form &rhs)
Definition: form.h:15
Form(float x, float y)
Definition: form.h:13
Definition: form.h:41
float area() const override
Definition: form.cpp:10
Quadrat(float x, float y, float seite)
Definition: form.h:43
std::string classname() const override
Definition: form.h:44
std::ostream & operator<<(std::ostream &s, const Form &rhs)
bool kleiner(const Form *a, const Form *b)
Definition: form.cpp:25
bool operator<(const Form &a, const Form &b)
Definition: form.cpp:20
float euclid_dist(const Form &a, const Form &b)
Definition: form.h:73