Fahrzeuge 3: shared pointer
fahrzeug.h
Go to the documentation of this file.
1 #pragma once
2 #include <string>
3 
4 
5 class Fahrzeug
6 {
7 public:
11  explicit Fahrzeug(int kg);
12 
14  virtual ~Fahrzeug();
15 
19  int Get_kg() const
20  {
21  return _kg;
22  }
23 
27  virtual std::string classname() const
28  {
29  return "Fahrzeug";
30  }
31 
35  virtual float verbrauch() const = 0; // besser: pure virtual ==> abstract class
36 
37 private:
38  const int _kg;
39 };
40 
41 //-----------------------------------------------------------------
42 class LKW: public Fahrzeug
43 {
44 public:
49  LKW(int eigengewicht, int ladung);
50  ~LKW() override;
51 
55  int Get_load() const
56  {
57  return _ladung;
58  }
59 
63  std::string classname() const override
64  {
65  return "LKW";
66  }
67 
68 private:
69  int _ladung;
70 };
71 
72 class PKW: public Fahrzeug
73 {
74 public:
79  PKW(int eigengewicht, int passagiere);
80  ~PKW() override;
81 
85  int Get_pass() const
86  {
87  return _passagiere;
88  }
89 
93  std::string classname() const override
94  {
95  return "PKW";
96  }
97 
98 
99 private:
100  int _passagiere;
101 };
102 //-----------------------------------------------------------------
103 
104 class MAN: public LKW
105 {
106 public:
107  MAN(int eigengewicht, int ladung)
108  : LKW(eigengewicht,ladung) { }
109  ~MAN() override;
110 
114  std::string classname() const override
115  {
116  return "MAN";
117  }
118 
122  float verbrauch() const override
123  {
124  return 15.1f + Get_load()*0.3f/1000;
125  }
126 };
127 
128 //-----------------------------------------------------------------
129 class Raba: public LKW
130 {
131 public:
132  Raba(int eigengewicht, int ladung)
133  : LKW(eigengewicht,ladung) { }
134  ~Raba() override;
135 
139  std::string classname() const override
140  {
141  return "Raba";
142  }
143 
147  float verbrauch() const override
148  {
149  return 12.1f + Get_load()*0.4f/1000;
150  }
151 
152 };
153 
154 //-----------------------------------------------------------------
155 class Opel: public PKW
156 {
157 public:
158  explicit Opel(int eigengewicht)
159  : PKW(eigengewicht,4) { }
160  ~Opel() override;
161 
165  std::string classname() const override
166  {
167  return "Opel";
168  }
169 
173  float verbrauch() const override
174  {
175  return 4.5f + Get_pass()*0.2f;
176  }
177 
178 };
179 
180 
181 //-----------------------------------------------------------------
182 class Smart: public PKW
183 {
184 public:
185  explicit Smart(int eigengewicht)
186  : PKW(eigengewicht,2) { }
187  ~Smart() override;
188 
192  std::string classname() const override
193  {
194  return "Smart";
195  }
196 
200  float verbrauch() const override
201  {
202  return 3.1f + Get_pass()*0.4f;
203  }
204 
205 };
206 
207 
208 //-----------------------------------------------------------------
209 
virtual ~Fahrzeug()
Definition: fahrzeug.cpp:9
Fahrzeug(int kg)
Definition: fahrzeug.cpp:3
virtual float verbrauch() const =0
virtual std::string classname() const
Class name.
Definition: fahrzeug.h:27
int Get_kg() const
Definition: fahrzeug.h:19
Definition: fahrzeug.h:43
~LKW() override
Definition: fahrzeug.cpp:21
int Get_load() const
Load weight.
Definition: fahrzeug.h:55
LKW(int eigengewicht, int ladung)
Definition: fahrzeug.cpp:15
std::string classname() const override
Class name.
Definition: fahrzeug.h:63
Definition: fahrzeug.h:105
std::string classname() const override
Class name.
Definition: fahrzeug.h:114
float verbrauch() const override
fuel consumption
Definition: fahrzeug.h:122
~MAN() override
Definition: fahrzeug.cpp:39
MAN(int eigengewicht, int ladung)
Definition: fahrzeug.h:107
Definition: fahrzeug.h:156
Opel(int eigengewicht)
Definition: fahrzeug.h:158
float verbrauch() const override
fuel consumption
Definition: fahrzeug.h:173
std::string classname() const override
Class name.
Definition: fahrzeug.h:165
~Opel() override
Definition: fahrzeug.cpp:43
Definition: fahrzeug.h:73
~PKW() override
Definition: fahrzeug.cpp:33
PKW(int eigengewicht, int passagiere)
Definition: fahrzeug.cpp:27
std::string classname() const override
Class name.
Definition: fahrzeug.h:93
int Get_pass() const
Number of passengers.
Definition: fahrzeug.h:85
Definition: fahrzeug.h:130
Raba(int eigengewicht, int ladung)
Definition: fahrzeug.h:132
float verbrauch() const override
fuel consumption
Definition: fahrzeug.h:147
~Raba() override
Definition: fahrzeug.cpp:41
std::string classname() const override
Class name.
Definition: fahrzeug.h:139
~Smart() override
Definition: fahrzeug.cpp:45
std::string classname() const override
Class name.
Definition: fahrzeug.h:192
float verbrauch() const override
fuel consumption
Definition: fahrzeug.h:200
Smart(int eigengewicht)
Definition: fahrzeug.h:185