Skip to content

Commit dd77d72

Browse files
committed
Minha solução do carro
1 parent 4f47eea commit dd77d72

1 file changed

Lines changed: 176 additions & 0 deletions

File tree

‎oo/carro.py‎

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

0 commit comments

Comments
 (0)