Skip to content

Commit 86b0885

Browse files
committed
Implementação das classes Motor, Direcao e Carro.
1 parent 3c97f4b commit 86b0885

1 file changed

Lines changed: 163 additions & 0 deletions

File tree

oo/carro.py

Lines changed: 163 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,163 @@
1+
"""
2+
Voce deve criar uma classe carro que vai possuir dois
3+
atributos compostos por outras duas classes:
4+
1) Motor
5+
2) Direção
6+
7+
O Motor terá a responsabilidade de controlar a velocidade.
8+
Ele oferece os seguintes atributos:
9+
* Atributo de dado velocidade
10+
* Método acelerar, aumenta a velocidade de uma unidade
11+
* Método frear, decrementa a velocidade de duas unidades
12+
13+
A Direção terá a responsabilidade de controlar a direção. Ela oferece
14+
os seguintes atributos:
15+
* Valores possíveis: Norte / Sul / Leste / Oeste
16+
* Método girar à direita
17+
* Método girar à esquerda
18+
19+
N
20+
O L
21+
S
22+
23+
Exemplo:
24+
>>> # Testando Motor
25+
>>> motor = Motor()
26+
>>> motor.velocidade
27+
0
28+
>>> motor.acelerar()
29+
>>> motor.velocidade
30+
1
31+
>>> motor.acelerar()
32+
>>> motor.velocidade
33+
2
34+
>>> motor.acelerar()
35+
>>> motor.velocidade
36+
3
37+
>>> motor.frear()
38+
>>> motor.velocidade
39+
1
40+
>>> motor.frear()
41+
>>> motor.velocidade
42+
0
43+
>>> # Testando Direção
44+
>>> direcao = Direcao()
45+
>>> direcao.valor
46+
'Norte'
47+
>>> direcao.girar_a_direita()
48+
>>> direcao.valor
49+
'Leste'
50+
>>> direcao.girar_a_direita()
51+
>>> direcao.valor
52+
'Sul'
53+
>>> direcao.girar_a_direita()
54+
>>> direcao.valor
55+
'Oeste'
56+
>>> direcao.girar_a_direita()
57+
>>> direcao.valor
58+
'Norte'
59+
>>> direcao.girar_a_esquerda()
60+
>>> direcao.valor
61+
'Oeste'
62+
>>> direcao.girar_a_esquerda()
63+
>>> direcao.valor
64+
'Sul'
65+
>>> direcao.girar_a_esquerda()
66+
>>> direcao.valor
67+
'Leste'
68+
>>> direcao.girar_a_esquerda()
69+
>>> direcao.valor
70+
'Norte'
71+
>>> # Testando Carro
72+
>>> carro = Carro(motor, direcao)
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+
98+
# ------------------------------------------------------------------
99+
class Motor:
100+
def __init__(self):
101+
self.velocidade = 0
102+
103+
@property
104+
def velocidade(self):
105+
return self._velocidade
106+
107+
@velocidade.setter
108+
def velocidade(self, vel):
109+
self._velocidade = 0 if vel < 0 else vel
110+
111+
def acelerar(self):
112+
self.velocidade += 1
113+
114+
def frear(self):
115+
self.velocidade -= 2
116+
117+
118+
# ------------------------------------------------------------------
119+
class Direcao:
120+
_valores = ('Norte', 'Leste', 'Sul', 'Oeste')
121+
122+
def __init__(self):
123+
self._cursor = 0
124+
125+
@property
126+
def valor(self):
127+
return self._valores[self._cursor]
128+
129+
def girar_a_direita(self):
130+
self._cursor += 1
131+
if self._cursor == len(self._valores):
132+
self._cursor = 0
133+
134+
def girar_a_esquerda(self):
135+
self._cursor -= 1
136+
if self._cursor < 0:
137+
self._cursor = len(self._valores)-1
138+
139+
140+
# ------------------------------------------------------------------
141+
142+
class Carro:
143+
def __init__(self, motor, direcao):
144+
self._motor = motor
145+
self._direcao = direcao
146+
147+
def calcular_velocidade(self):
148+
return self._motor.velocidade
149+
150+
def acelerar(self):
151+
self._motor.acelerar()
152+
153+
def frear(self):
154+
self._motor.frear()
155+
156+
def calcular_direcao(self):
157+
return self._direcao.valor
158+
159+
def girar_a_direita(self):
160+
self._direcao.girar_a_direita()
161+
162+
def girar_a_esquerda(self):
163+
self._direcao.girar_a_esquerda()

0 commit comments

Comments
 (0)