Skip to content

Commit 18532a8

Browse files
author
fabianomcs
committed
criado classes
1 parent 4d4d116 commit 18532a8

2 files changed

Lines changed: 166 additions & 1 deletion

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 uutras duas classes:
5+
6+
1) Motor
7+
2) Direção
8+
9+
O motor terá q responsabilidade de controla a velociadade.
10+
ele oferece os seguintes atributos:
11+
1) Atributo de dado velocidade
12+
2) Método acelerar, que deverá incrementar a velocidade em duas unidades
13+
3) 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 os seguinte atributos:
16+
1) Valor de direção com valores possíveis: Norte, Sul, Leste, oeste.
17+
2) Método girar a direita
18+
3) Método girar a esquerda
19+
20+
N
21+
O L
22+
S
23+
24+
Exemplo:
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çao
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+
>>> carro = Carro(direcao, motor)
72+
>>> carro.calcular_velocidade()
73+
0
74+
>>> carro.acelerar()
75+
>>> carro.calcular_velocidade()
76+
1
77+
>>> carro.acelerar()
78+
>>> carro.calcular_velocidade()
79+
2
80+
>>> carro.frear()
81+
>>> carro.calcular_velocidade()
82+
0
83+
>>> carro.calcular_direcao()
84+
'Norte'
85+
>>> carro.girar_a_direita()
86+
>>> carro.calcular_direcao()
87+
'Leste'
88+
>>> carro.girar_a_esquerda()
89+
>>> carro.calcular_direcao()
90+
'Norte'
91+
>>> carro.girar_a_esquerda()
92+
>>> carro.calcular_direcao()
93+
'Oeste'
94+
"""
95+
96+
NORTE = 'Norte'
97+
LESTE = 'Leste'
98+
SUL = 'Sul'
99+
OESTE = 'Oeste'
100+
101+
class Carro:
102+
def __init__(self, direcao, motor):
103+
self.motor = motor
104+
self.direcao = direcao
105+
106+
def calcular_velocidade(self):
107+
return self.motor.velocidade
108+
109+
def acelerar(self):
110+
self.motor.acelerar()
111+
112+
def frear(self):
113+
self.motor.frear()
114+
115+
def calcular_direcao(self):
116+
return self.direcao.valor
117+
118+
def girar_a_direita(self):
119+
self.direcao.girar_a_direita()
120+
121+
def girar_a_esquerda(self):
122+
self.direcao.girar_a_esquerda()
123+
124+
125+
class Direcao:
126+
127+
rotacao_a_direita_dct = {
128+
NORTE: LESTE, LESTE: SUL, SUL: OESTE, OESTE: NORTE
129+
}
130+
131+
rotacao_a_esquerda_dct = {
132+
NORTE: OESTE, OESTE: SUL, SUL: LESTE, LESTE: NORTE
133+
}
134+
135+
def __init__(self):
136+
self.valor = NORTE
137+
138+
def girar_a_direita(self):
139+
self.valor = self.rotacao_a_direita_dct[self.valor]
140+
141+
def girar_a_esquerda(self):
142+
self.valor = self.rotacao_a_esquerda_dct[self.valor]
143+
144+
145+
class Motor:
146+
def __init__(self):
147+
self.velocidade = 0
148+
149+
def acelerar(self):
150+
self.velocidade += 1
151+
152+
def frear(self):
153+
self.velocidade -= 2
154+
self.velocidade = max(0, self.velocidade)

oo/pessoa.py

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,14 @@ def __init__(self, nome=None, idade=34, *filhos):
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

1321
if __name__ == '__main__':
1422

@@ -42,4 +50,7 @@ def cumprimentar(self):
4250
print('Uma pessoa tem',Pessoa.olhos)
4351
print(maia.olhos)
4452
print(fabiano.olhos)
45-
print(id(Pessoa.olhos), id(maia.olhos), id(fabiano.olhos))
53+
print(id(Pessoa.olhos), id(maia.olhos), id(fabiano.olhos))
54+
55+
print(Pessoa.metodo_estatico(), maia.metodo_estatico())
56+
print(Pessoa.nome_e_atributos_de_classe(), maia.nome_e_atributos_de_classe())

0 commit comments

Comments
 (0)