Skip to content

Commit e3c3eab

Browse files
committed
exercicios sobre instancias e atributos
1 parent 94975f3 commit e3c3eab

File tree

1 file changed

+242
-0
lines changed

1 file changed

+242
-0
lines changed

classes/exercicios_instancias_atributos.py

+242
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,54 @@
77
chame esse método."""
88

99

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("\nWe 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()
1058

1159
"""9.7 – Admin: Um administrador é um tipo especial de usuário. Escreva uma classe
1260
chamada Admin que herde da classe User escrita no Exercício 9.3 (página 226),
@@ -16,16 +64,210 @@
1664
conjunto de privilégios de um administrador. Crie uma instância de Admin e chame
1765
seu método."""
1866

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+
19112
"""9.8 – Privilégios: Escreva uma classe Privileges separada. A classe deve ter um
20113
atributo privileges que armazene uma lista de strings conforme descrita no
21114
Exercício 9.7. Transfira o método show_privileges() para essa classe. Crie uma
22115
instância de Privileges como um atributo da classe Admin. Crie uma nova
23116
instância de Admin e use seu método para exibir os privilégios."""
24117

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+
25164
"""9.9 – Upgrade de bateria: Use a última versão de electric_car.py desta seção.
26165
Acrescente um método chamado upgrade_battery() na classe Battery. Esse
27166
método deve verificar a capacidade da bateria e defini-la com 85 se o valor for
28167
diferente. Crie um carro elétrico com uma capacidade de bateria default, chame
29168
get_range() uma vez e, em seguida, chame get_range() uma segunda vez após
30169
fazer um upgrade da bateria. Você deverá ver um aumento na distância que o
31170
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("\nUpgrade 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

Comments
 (0)