Fahrzeuge 3: shared pointer
Loading...
Searching...
No Matches
fahrzeug.h
Go to the documentation of this file.
1#pragma once
2#include <string>
3
4
6{
7public:
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
37private:
38 const int _kg;
39};
40
41//-----------------------------------------------------------------
42class LKW: public Fahrzeug
43{
44public:
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
68private:
69 int _ladung;
70};
71
72class PKW: public Fahrzeug
73{
74public:
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
99private:
100 int _passagiere;
101};
102//-----------------------------------------------------------------
103
104class MAN: public LKW
105{
106public:
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//-----------------------------------------------------------------
129class Raba: public LKW
130{
131public:
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//-----------------------------------------------------------------
155class Opel: public PKW
156{
157public:
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//-----------------------------------------------------------------
182class Smart: public PKW
183{
184public:
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
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
std::string classname() const override
Class name.
Definition fahrzeug.h:63
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
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
std::string classname() const override
Class name.
Definition fahrzeug.h:93
int Get_pass() const
Number of passengers.
Definition fahrzeug.h:85
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