Skip to content

Commit fcbe019

Browse files
authored
Merge pull request digitalinnovationone#8 from digitalinnovationone/02_programacao_orientada_objetos
Merge dos Exercícios da Branch "02 programacao orientada objetos"
2 parents 9dc334c + 334f15a commit fcbe019

File tree

13 files changed

+833
-0
lines changed

13 files changed

+833
-0
lines changed
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
class Bicicleta:
2+
def __init__(self, cor, modelo, ano, valor):
3+
self.cor = cor
4+
self.modelo = modelo
5+
self.ano = ano
6+
self.valor = valor
7+
8+
def buzinar(self):
9+
print("Plim plim...")
10+
11+
def parar(self):
12+
print("Parando bicicleta...")
13+
print("Bicicleta parada!")
14+
15+
def correr(self):
16+
print("Vrummmmm...")
17+
18+
def __str__(self):
19+
return f"{self.__class__.__name__}: {', '.join([f'{chave}={valor}' for chave, valor in self.__dict__.items()])}"
20+
21+
22+
b1 = Bicicleta("vermelha", "caloi", 2022, 600)
23+
b1.buzinar()
24+
b1.correr()
25+
b1.parar()
26+
print(b1.cor, b1.modelo, b1.ano, b1.valor)
27+
28+
b2 = Bicicleta("verde", "monark", 2000, 189)
29+
print(b2)
30+
b2.correr()
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
class Cachorro:
2+
def __init__(self, nome, cor, acordado=True):
3+
print("Inicializando a classe...")
4+
self.nome = nome
5+
self.cor = cor
6+
self.acordado = acordado
7+
8+
def __del__(self):
9+
print("Removendo a instância da classe.")
10+
11+
def falar(self):
12+
print("auau")
13+
14+
15+
def criar_cachorro():
16+
c = Cachorro("Zeus", "Branco e preto", False)
17+
print(c.nome)
18+
19+
20+
c = Cachorro("Chappie", "amarelo")
21+
c.falar()
22+
23+
print("Ola mundo")
24+
25+
del c
26+
27+
print("Ola mundo")
28+
print("Ola mundo")
29+
print("Ola mundo")
30+
31+
# criar_cachorro()
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
class Veiculo:
2+
def __init__(self, cor, placa, numero_rodas):
3+
self.cor = cor
4+
self.placa = placa
5+
self.numero_rodas = numero_rodas
6+
7+
def ligar_motor(self):
8+
print("Ligando o motor")
9+
10+
def __str__(self):
11+
return f"{self.__class__.__name__}: {', '.join([f'{chave}={valor}' for chave, valor in self.__dict__.items()])}"
12+
13+
14+
class Motocicleta(Veiculo):
15+
pass
16+
17+
18+
class Carro(Veiculo):
19+
pass
20+
21+
22+
class Caminhao(Veiculo):
23+
def __init__(self, cor, placa, numero_rodas, carregado):
24+
super().__init__(cor, placa, numero_rodas)
25+
self.carregado = carregado
26+
27+
def esta_carregado(self):
28+
print(f"{'Sim' if self.carregado else 'Não'} estou carregado")
29+
30+
31+
moto = Motocicleta("preta", "abc-1234", 2)
32+
carro = Carro("branco", "xde-0098", 4)
33+
caminhao = Caminhao("roxo", "gfd-8712", 8, True)
34+
35+
print(moto)
36+
print(carro)
37+
print(caminhao)
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
class Animal:
2+
def __init__(self, nro_patas):
3+
self.nro_patas = nro_patas
4+
5+
def __str__(self):
6+
return f"{self.__class__.__name__}: {', '.join([f'{chave}={valor}' for chave, valor in self.__dict__.items()])}"
7+
8+
9+
class Mamifero(Animal):
10+
def __init__(self, cor_pelo, **kw):
11+
self.cor_pelo = cor_pelo
12+
super().__init__(**kw)
13+
14+
15+
class Ave(Animal):
16+
def __init__(self, cor_bico, **kw):
17+
self.cor_bico = cor_bico
18+
super().__init__(**kw)
19+
20+
21+
class Gato(Mamifero):
22+
pass
23+
24+
25+
class Ornitorrinco(Mamifero, Ave):
26+
def __init__(self, cor_bico, cor_pelo, nro_patas):
27+
super().__init__(cor_pelo=cor_pelo, cor_bico=cor_bico, nro_patas=nro_patas)
28+
29+
30+
gato = Gato(nro_patas=4, cor_pelo="Preto")
31+
print(gato)
32+
33+
ornitorrinco = Ornitorrinco(nro_patas=2, cor_pelo="vermelho", cor_bico="laranja")
34+
print(ornitorrinco)
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
class Conta:
2+
def __init__(self, nro_agencia, saldo=0):
3+
self._saldo = saldo
4+
self.nro_agencia = nro_agencia
5+
6+
def depositar(self, valor):
7+
# ...
8+
self._saldo += valor
9+
10+
def sacar(self, valor):
11+
# ...
12+
self._saldo -= valor
13+
14+
def mostrar_saldo(self):
15+
# ...
16+
return self._saldo
17+
18+
19+
conta = Conta("0001", 100)
20+
conta.depositar(100)
21+
print(conta.nro_agencia)
22+
print(conta.mostrar_saldo())
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
class Foo:
2+
def __init__(self, x=None):
3+
self._x = x
4+
5+
@property
6+
def x(self):
7+
return self._x or 0
8+
9+
@x.setter
10+
def x(self, value):
11+
self._x += value
12+
13+
@x.deleter
14+
def x(self):
15+
self._x = 0
16+
17+
18+
foo = Foo(10)
19+
print(foo.x)
20+
del foo.x
21+
print(foo.x)
22+
foo.x = 10
23+
print(foo.x)
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
class Pessoa:
2+
def __init__(self, nome, ano_nascimento):
3+
self.nome = nome
4+
self._ano_nascimento = ano_nascimento
5+
6+
@property
7+
def idade(self):
8+
_ano_atual = 2022
9+
return _ano_atual - self._ano_nascimento
10+
11+
12+
pessoa = Pessoa("Guilherme", 1994)
13+
print(f"Nome: {pessoa.nome} \tIdade: {pessoa.idade}")
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
class Passaro:
2+
def voar(self):
3+
print("Voando...")
4+
5+
6+
class Pardal(Passaro):
7+
def voar(self):
8+
print("Pardal pode voar")
9+
10+
11+
class Avestruz(Passaro):
12+
def voar(self):
13+
print("Avestruz não pode voar")
14+
15+
16+
# NOTE: exemplo ruim do uso de herança para "ganhar" o método voar
17+
class Aviao(Passaro):
18+
def voar(self):
19+
print("Avião está decolando...")
20+
21+
22+
def plano_voo(obj):
23+
obj.voar()
24+
25+
26+
plano_voo(Pardal())
27+
plano_voo(Avestruz())
28+
plano_voo(Aviao())
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
class Estudante:
2+
escola = "DIO"
3+
4+
def __init__(self, nome, matricula):
5+
self.nome = nome
6+
self.matricula = matricula
7+
8+
def __str__(self) -> str:
9+
return f"{self.nome} - {self.matricula} - {self.escola}"
10+
11+
12+
def mostrar_valores(*objs):
13+
for obj in objs:
14+
print(obj)
15+
16+
17+
aluno_1 = Estudante("Guilherme", 1)
18+
aluno_2 = Estudante("Giovanna", 2)
19+
mostrar_valores(aluno_1, aluno_2)
20+
21+
Estudante.escola = "Python"
22+
aluno_3 = Estudante("Chappie", 3)
23+
mostrar_valores(aluno_1, aluno_2, aluno_3)
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
class Pessoa:
2+
def __init__(self, nome, idade):
3+
self.nome = nome
4+
self.idade = idade
5+
6+
@classmethod
7+
def criar_de_data_nascimento(cls, ano, mes, dia, nome):
8+
idade = 2022 - ano
9+
return cls(nome, idade)
10+
11+
@staticmethod
12+
def e_maior_idade(idade):
13+
return idade >= 18
14+
15+
16+
p = Pessoa.criar_de_data_nascimento(1994, 3, 21, "Guilherme")
17+
print(p.nome, p.idade)
18+
19+
print(Pessoa.e_maior_idade(18))
20+
print(Pessoa.e_maior_idade(8))

0 commit comments

Comments
 (0)