7
7
chame esse método."""
8
8
9
9
10
+ class Restaurant ():
11
+ """A class representing a restaurant."""
12
+
13
+ def __init__ (self , name , cuisine_type ):
14
+ """Initialize the restaurant."""
15
+ self .name = name .title ()
16
+ self .cuisine_type = cuisine_type
17
+ self .number_served = 0
18
+
19
+ def describe_restaurant (self ):
20
+ """Display a summary of the restaurant."""
21
+ msg = f"{ self .name } serves wonderful { self .cuisine_type } ."
22
+ print (f"{ msg } " )
23
+
24
+ def open_restaurant (self ):
25
+ """Display a message that the restaurant is open."""
26
+ msg = f"{ self .name } is open. Come on in!"
27
+ print (f"{ msg } " )
28
+
29
+ def set_number_served (self , number_served ):
30
+ """Allow user to set the number of customers that have been served."""
31
+ self .number_served = number_served
32
+
33
+ def increment_number_served (self , additional_served ):
34
+ """Allow user to increment the number of customers served."""
35
+ self .number_served += additional_served
36
+
37
+
38
+ class IceCreamStand (Restaurant ):
39
+ """Represent an ice cream stand."""
40
+
41
+ def __init__ (self , name , cuisine_type = 'ice_cream' ):
42
+ """Initialize an ice cream stand."""
43
+ super ().__init__ (name , cuisine_type )
44
+ self .flavors = []
45
+
46
+ def show_flavors (self ):
47
+ """Display the flavors available."""
48
+ print ("\n We have the following flavors available:" )
49
+ for flavor in self .flavors :
50
+ print (f"- { flavor .title ()} " )
51
+
52
+
53
+ # soverteria = IceCreamStand('Esquimó', 'Soverteria')
54
+ # soverteria.describe_restaurant()
55
+ # soverteria.open_restaurant()
56
+ # soverteria.flavors = ['vanilla', 'chocolate', 'black cherry']
57
+ # soverteria.show_flavors()
10
58
11
59
"""9.7 – Admin: Um administrador é um tipo especial de usuário. Escreva uma classe
12
60
chamada Admin que herde da classe User escrita no Exercício 9.3 (página 226),
16
64
conjunto de privilégios de um administrador. Crie uma instância de Admin e chame
17
65
seu método."""
18
66
67
+
68
+ class User ():
69
+ def __init__ (self , first_name , last_name , user_name , departament ):
70
+ self .first_name = first_name
71
+ self .last_name = last_name
72
+ self .user_name = user_name
73
+ self .departament = departament
74
+ self .login_attempts = 0
75
+
76
+ def describe_user (self ):
77
+ print (f'{ self .first_name } { self .last_name } , seu nome de usuário é { self .user_name } e seu departa'
78
+ f'mento é { self .departament } . Atualmente foram feitas { self .login_attempts } tentativas de login.' )
79
+
80
+ def greet_user (self ):
81
+ print (f'Bem-vindo { self .user_name } !' )
82
+
83
+ def increment_login_attempts (self ):
84
+ self .login_attempts += 1
85
+
86
+ def reset_login_attempts (self ):
87
+ self .login_attempts = 0
88
+ print ("Tentivas de login resetadas!" )
89
+
90
+
91
+ class Admin (User ):
92
+ def __init__ (self , first_name , last_name , user_name , departament ):
93
+ super ().__init__ (first_name , last_name , user_name , departament )
94
+ self .privileges = []
95
+
96
+ def show_privileges (self ):
97
+ print (f'Os privilégios do usuário são:' )
98
+ for privilege in self .privileges :
99
+ print (f'{ privilege } .' )
100
+
101
+
102
+ # usuario = User('Hugo', 'Gusmão', 'hugonbgg', 'Data Engineer')
103
+ # usuario.describe_user()
104
+ # usuario.greet_user()
105
+
106
+ # administrador = Admin('Hugo', 'Gusmão', 'hugonbgg', 'Data Engineer')
107
+ # administrador.describe_user()
108
+ # administrador.greet_user()
109
+ # administrador.privileges = ['Criar Usuários', 'Deletar Usuários', 'Remover Permissões']
110
+ # administrador.show_privileges()
111
+
19
112
"""9.8 – Privilégios: Escreva uma classe Privileges separada. A classe deve ter um
20
113
atributo privileges que armazene uma lista de strings conforme descrita no
21
114
Exercício 9.7. Transfira o método show_privileges() para essa classe. Crie uma
22
115
instância de Privileges como um atributo da classe Admin. Crie uma nova
23
116
instância de Admin e use seu método para exibir os privilégios."""
24
117
118
+
119
+ class User :
120
+ def __init__ (self , first_name , last_name , user_name , departament ):
121
+ self .first_name = first_name
122
+ self .last_name = last_name
123
+ self .user_name = user_name
124
+ self .departament = departament
125
+ self .login_attempts = 0
126
+
127
+ def describe_user (self ):
128
+ print (f'{ self .first_name } { self .last_name } , seu nome de usuário é { self .user_name } e seu departa'
129
+ f'mento é { self .departament } . Atualmente foram feitas { self .login_attempts } tentativas de login.' )
130
+
131
+ def greet_user (self ):
132
+ print (f'Bem-vindo { self .user_name } !' )
133
+
134
+ def increment_login_attempts (self ):
135
+ self .login_attempts += 1
136
+
137
+ def reset_login_attempts (self ):
138
+ self .login_attempts = 0
139
+ print ("Tentivas de login resetadas!" )
140
+
141
+
142
+ class Privileges :
143
+ def __init__ (self ):
144
+ self .privileges_list = []
145
+
146
+ def show_privileges (self ):
147
+ print (f'Os privilégios do usuário são:' )
148
+ for privilege in self .privileges_list :
149
+ print (f'{ privilege } .' )
150
+
151
+
152
+ class Admin (User ):
153
+ def __init__ (self , first_name , last_name , user_name , departament ):
154
+ super ().__init__ (first_name , last_name , user_name , departament )
155
+ self .privileges = Privileges ()
156
+
157
+
158
+ # administrador = Admin('Hugo', 'Gusmão', 'hugonbgg', 'Data Engineer')
159
+ # administrador.describe_user()
160
+ # administrador.greet_user()
161
+ # administrador.privileges.privileges_list = ['Criar Usuários', 'Deletar Usuários', 'Remover Permissões']
162
+ # administrador.privileges.show_privileges()
163
+
25
164
"""9.9 – Upgrade de bateria: Use a última versão de electric_car.py desta seção.
26
165
Acrescente um método chamado upgrade_battery() na classe Battery. Esse
27
166
método deve verificar a capacidade da bateria e defini-la com 85 se o valor for
28
167
diferente. Crie um carro elétrico com uma capacidade de bateria default, chame
29
168
get_range() uma vez e, em seguida, chame get_range() uma segunda vez após
30
169
fazer um upgrade da bateria. Você deverá ver um aumento na distância que o
31
170
carro é capaz de percorrer."""
171
+
172
+
173
+ class Car ():
174
+ """A simple attempt to represent a car."""
175
+
176
+ def __init__ (self , manufacturer , model , year ):
177
+ """Initialize attributes to describe a car."""
178
+ self .manufacturer = manufacturer
179
+ self .model = model
180
+ self .year = year
181
+ self .odometer_reading = 0
182
+
183
+ def get_descriptive_name (self ):
184
+ """Return a neatly formatted descriptive name."""
185
+ long_name = f"{ self .year } { self .manufacturer } { self .model } "
186
+ return long_name .title ()
187
+
188
+ def read_odometer (self ):
189
+ """Print a statement showing the car's mileage."""
190
+ print (f"This car has { self .odometer_reading } miles on it." )
191
+
192
+ def update_odometer (self , mileage ):
193
+ """
194
+ Set the odometer reading to the given value.
195
+ Reject the change if it attempts to roll the odometer back.
196
+ """
197
+ if mileage >= self .odometer_reading :
198
+ self .odometer_reading = mileage
199
+ else :
200
+ print ("You can't roll back an odometer!" )
201
+
202
+ def increment_odometer (self , miles ):
203
+ """Add the given amount to the odometer reading."""
204
+ self .odometer_reading += miles
205
+
206
+
207
+ class Battery ():
208
+ """A simple attempt to model a battery for an electric car."""
209
+
210
+ def __init__ (self , battery_size = 75 ):
211
+ """Initialize the batteery's attributes."""
212
+ self .battery_size = battery_size
213
+
214
+ def describe_battery (self ):
215
+ """Print a statement describing the battery size."""
216
+ print (f"This car has a { self .battery_size } -kWh battery." )
217
+
218
+ def get_range (self ):
219
+ """Print a statement about the range this battery provides."""
220
+ if self .battery_size == 75 :
221
+ range = 260
222
+ elif self .battery_size == 100 :
223
+ range = 315
224
+
225
+ message = f"This car can go approximately { range } "
226
+ message += " miles on a full charge."
227
+ print (message )
228
+
229
+ def upgrade_battery (self ):
230
+ """Upgrade the battery if possible."""
231
+ if self .battery_size == 75 :
232
+ self .battery_size = 100
233
+ print ("Upgraded the battery to 100 kWh." )
234
+ else :
235
+ print ("The battery is already upgraded." )
236
+
237
+
238
+ class ElectricCar (Car ):
239
+ """Models aspects of a car, specific to electric vehicles."""
240
+
241
+ def __init__ (self , manufacturer , model , year ):
242
+ """
243
+ Initialize attributes of the parent class.
244
+ Then initialize attributes specific to an electric car.
245
+ """
246
+ super ().__init__ (manufacturer , model , year )
247
+ self .battery = Battery ()
248
+
249
+ carro = Car ('Honda' , 'Civic' , 2022 )
250
+ print (carro .get_descriptive_name ())
251
+ carro .read_odometer ()
252
+ carro .increment_odometer (100 )
253
+ carro .read_odometer ()
254
+
255
+
256
+ print ("Make an electric car, and check the range:" )
257
+ my_tesla = ElectricCar ('tesla' , 'roadster' , 2019 )
258
+ my_tesla .battery .get_range ()
259
+
260
+ print ("\n Upgrade the battery, and check the range again:" )
261
+ my_tesla .battery .upgrade_battery ()
262
+ my_tesla .battery .get_range ()
263
+
264
+ my_tesla .battery .battery_size = 100
265
+ my_tesla .battery .get_range ()
266
+
267
+ my_tesla .battery .battery_size = 75
268
+ my_tesla .battery .get_range ()
269
+
270
+ my_tesla .battery .upgrade_battery ()
271
+ my_tesla .battery .get_range ()
272
+ my_tesla .battery .upgrade_battery ()
273
+ my_tesla .battery .get_range ()
0 commit comments