Skip to content

Commit bfc39b4

Browse files
m41b3cm41b3c
authored andcommitted
Composicao carro
1 parent b51427c commit bfc39b4

1 file changed

Lines changed: 154 additions & 0 deletions

File tree

OO/carro.py

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

0 commit comments

Comments
 (0)