Skip to content

Commit acbf547

Browse files
author
charlesnoamlael
committed
Exercico Carro completo
1 parent 604b8c4 commit acbf547

1 file changed

Lines changed: 165 additions & 0 deletions

File tree

oo/carro.py

Lines changed: 165 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,165 @@
1+
"""
2+
Você deve criar umas classe carro que vai possuir
3+
dois atributos compostos por outras duas classes:
4+
5+
1) Motor
6+
2) Direção
7+
8+
O Motor terá a responsabilidade de controlar a velocidade.
9+
Ele oferece os seguintes atributos:
10+
1) Atributo de dado velocidade
11+
2)Método acelerar, que deverá incrementar a velocidade de uma unidade
12+
3) Método frear que deverá decrementar a velocidade em duas unidade
13+
14+
A Direção terá a responsabiliade de controlar a direção
15+
1) Valor de direção com valores possíveis: Norte, Sul, Leste, Oeste
16+
2) Método girar a direita
17+
18+
N
19+
O L
20+
S
21+
22+
Exemplo:
23+
# teste de motot
24+
>>> motor = Motor()
25+
>>> motor.velocidade
26+
0
27+
>>> motor.acelerar()
28+
>>> motor.velocidade
29+
1
30+
>>> motor.acelerar()
31+
>>> motor.velocidade
32+
2
33+
>>> motor.acelerar()
34+
>>> motor.velocidade
35+
3
36+
37+
38+
>>> motor.frear()
39+
>>> motor.velocidade
40+
1
41+
>>> motor.frear()
42+
>>> motor.velocidade
43+
0
44+
45+
#Testando Direção
46+
>>> direcao = Direcao()
47+
>>> direcao.valor
48+
'Norte'
49+
>>> direcao.girar_a_direita()
50+
>>> direcao.valor
51+
'Leste'
52+
>>> direcao.girar_a_direita()
53+
>>> direcao.valor
54+
'Sul'
55+
>>> direcao.girar_a_direita()
56+
>>> direcao.valor
57+
'Oeste'
58+
>>> direcao.girar_a_direita()
59+
>>> direcao.valor
60+
'Norte'
61+
>>> direcao.girar_a_esquerda()
62+
>>> direcao.valor
63+
'Oeste'
64+
>>> direcao.girar_a_esquerda()
65+
>>> direcao.valor
66+
'Sul'
67+
>>> direcao.girar_a_esquerda()
68+
>>> direcao.valor
69+
'Leste'
70+
>>> direcao.girar_a_esquerda()
71+
>>> direcao.valor
72+
'Norte'
73+
74+
>>> carro = Carro(direcao, motor)
75+
>>> carro.calcular_velocidade()
76+
0
77+
>>> carro.acelerar()
78+
>>> carro.calcular_velocidade()
79+
1
80+
>>> carro.acelerar()
81+
>>> carro.calcular_velocidade()
82+
2
83+
>>> carro.frear()
84+
>>> carro.calcular_velocidade()
85+
0
86+
>>> carro.calcular_direcao()
87+
'Norte'
88+
>>> carro.girar_a_direita()
89+
>>> carro.calcular_direcao()
90+
'Leste'
91+
>>> carro.girar_a_esquerda()
92+
>>> carro.calcular_direcao()
93+
'Norte'
94+
>>> carro.girar_a_esquerda()
95+
>>> carro.calcular_direcao()
96+
'Oeste'
97+
"""
98+
99+
100+
class Carro():
101+
def __init__(self, direcao, motor):
102+
self.motor = motor
103+
self.direcao = direcao
104+
105+
def calcular_velocidade(self):
106+
return self.motor.velocidade
107+
108+
def acelerar(self):
109+
self.motor.acelerar()
110+
111+
def frear(self):
112+
self.motor.frear()
113+
114+
def calcular_direcao(self):
115+
return self.direcao.valor
116+
117+
def girar_a_direita(self):
118+
self.direcao.girar_a_direita()
119+
120+
def girar_a_esquerda(self):
121+
self.direcao.girar_a_esquerda()
122+
123+
124+
NORTE = 'Norte'
125+
SUL = 'Sul'
126+
LESTE = 'Leste'
127+
OESTE = 'Oeste'
128+
129+
130+
class Direcao:
131+
rotacao_a_direita_dct = {
132+
NORTE: LESTE, LESTE: SUL, SUL: OESTE, OESTE: NORTE
133+
}
134+
rotacao_a_esquerda_dct = {
135+
NORTE: OESTE, LESTE: NORTE, SUL: LESTE, OESTE: SUL
136+
}
137+
138+
def __init__(self):
139+
self.valor = NORTE
140+
141+
def girar_a_direita(self):
142+
self.valor = self.rotacao_a_direita_dct[self.valor]
143+
144+
def girar_a_esquerda(self):
145+
self.valor = self.rotacao_a_esquerda_dct[self.valor]
146+
147+
148+
class Motor():
149+
def __init__(self):
150+
self.velocidade = 0
151+
152+
def acelerar(self):
153+
self.velocidade += 1
154+
155+
def frear(self):
156+
self.velocidade -= 2
157+
self.velocidade = max(0, self.velocidade)
158+
159+
160+
161+
162+
163+
164+
165+

0 commit comments

Comments
 (0)