Skip to content

Commit e39a7aa

Browse files
Implementada a direção.
1 parent 3d2d06d commit e39a7aa

2 files changed

Lines changed: 140 additions & 1 deletion

File tree

oo/carro.py

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

oo/pessoa.py

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,17 @@ def __init__(self, *filhos, nome=None, idade=35): # Atributos da Classe
66
self.nome = nome
77
self.filhos = list(filhos) # atributo complexo
88

9-
def cumprimentar(self): # Metódo da Classe
9+
def cumprimentar(self): # Método da Classe
1010
return f'Olá {id(self)}' # O método executa alguma coisa.
1111

12+
@staticmethod
13+
def metodo_estatico():
14+
return 42
15+
16+
@classmethod
17+
def nome_e_atributos_de_classe(cls):
18+
return f'{cls}-olhos {cls.olhos}'
19+
1220
if __name__ == '__main__':
1321
renzo = Pessoa(nome='Renzo')
1422
luciano = Pessoa(renzo, nome='Luciano')
@@ -27,5 +35,7 @@ def cumprimentar(self): # Metódo da Classe
2735
print(luciano.olhos)
2836
print(renzo.olhos)
2937
print(id(Pessoa.olhos),id(luciano.olhos),id(renzo.olhos),)
38+
print(Pessoa.metodo_estatico(), luciano.metodo_estatico())
39+
print(Pessoa.nome_e_atributos_de_classe(), luciano.nome_e_atributos_de_classe())
3040

3141

0 commit comments

Comments
 (0)