Skip to content

Commit 7683027

Browse files
committed
Implementada Direcao
1 parent 5f39898 commit 7683027

2 files changed

Lines changed: 148 additions & 0 deletions

File tree

oo/carro.py

Lines changed: 137 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,137 @@
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+
8+
O Motor terá a responsabilidade de controlar a velocidade.
9+
Ele oferece os seguintes atributos:
10+
11+
Atributo de dado velocidade
12+
Método acelerar, que deverá incremetar a velocidade de uma unidade
13+
Método frear que deverá decrementar a velocidade em duas unidades
14+
15+
A Direção terá a responsabilidade de controlar a direção. Ela oferece
16+
os seguintes atributos:
17+
18+
Valor de diração com valores possíveis: Norte, Sul, Leste, Oeste.
19+
Método girar_a_direita
20+
Método girar_a_esquerda
21+
22+
23+
N
24+
O L
25+
S
26+
27+
Exemplo:
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_esquerda()
96+
>>> carro.calcular_direcao()
97+
'Oeste'
98+
"""
99+
NORTE = 'Norte'
100+
SUL = 'Sul'
101+
LESTE = 'Leste'
102+
OESTE = 'Oeste'
103+
104+
class Direcao:
105+
rotacao_a_direita_dct = {NORTE: LESTE, LESTE: SUL, SUL: OESTE, OESTE: NORTE}
106+
rotacao_a_esquerda_dct = {NORTE: OESTE, LESTE: NORTE, SUL: LESTE, OESTE: SUL}
107+
108+
def __init__(self):
109+
self.valor = NORTE
110+
111+
def girar_a_direita(self):
112+
self.valor =self.rotacao_a_direita_dct[self.valor]
113+
def girar_a_esquerda(self):
114+
self.valor = self.rotacao_a_esquerda_dct[self.valor]
115+
116+
class Motor:
117+
def __init__(self):
118+
self.velocidade = 0
119+
120+
def acelerar(self):
121+
self.velocidade += 1
122+
123+
def frear(self):
124+
self.velocidade -= 2
125+
self.velocidade=max(0, self.velocidade)
126+
127+
128+
129+
130+
'''
131+
# Testando Direcao
132+
direcao = Direcao()
133+
direcao.valor
134+
'Norte'
135+
'''
136+
137+

oo/pessoa.py

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,14 @@ def __init__(self, *filhos, nome=None, idade=35):
99
def cumprimentar(self):
1010
return f'Olá {id(self)}'
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')
@@ -30,4 +38,7 @@ def cumprimentar(self):
3038
print(Pessoa.olhos)
3139
print(Luciano.olhos)
3240
print(Renzo.olhos)
41+
print(id(Pessoa.olhos), id(Luciano.olhos), id(Renzo.olhos))
42+
print(Pessoa.metodo_estatico(), Luciano.metodo_estatico())
43+
print(Pessoa.nome_e_atributos_de_classe(), Luciano.nome_e_atributos_de_classe())
3344

0 commit comments

Comments
 (0)