Skip to content

Commit

Permalink
Merge pull request digitalinnovationone#8 from digitalinnovationone/0…
Browse files Browse the repository at this point in the history
…2_programacao_orientada_objetos

Merge dos Exercícios da Branch "02 programacao orientada objetos"
  • Loading branch information
falvojr authored May 18, 2023
2 parents 9dc334c + 334f15a commit fcbe019
Show file tree
Hide file tree
Showing 13 changed files with 833 additions and 0 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
class Bicicleta:
def __init__(self, cor, modelo, ano, valor):
self.cor = cor
self.modelo = modelo
self.ano = ano
self.valor = valor

def buzinar(self):
print("Plim plim...")

def parar(self):
print("Parando bicicleta...")
print("Bicicleta parada!")

def correr(self):
print("Vrummmmm...")

def __str__(self):
return f"{self.__class__.__name__}: {', '.join([f'{chave}={valor}' for chave, valor in self.__dict__.items()])}"


b1 = Bicicleta("vermelha", "caloi", 2022, 600)
b1.buzinar()
b1.correr()
b1.parar()
print(b1.cor, b1.modelo, b1.ano, b1.valor)

b2 = Bicicleta("verde", "monark", 2000, 189)
print(b2)
b2.correr()
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
class Cachorro:
def __init__(self, nome, cor, acordado=True):
print("Inicializando a classe...")
self.nome = nome
self.cor = cor
self.acordado = acordado

def __del__(self):
print("Removendo a instância da classe.")

def falar(self):
print("auau")


def criar_cachorro():
c = Cachorro("Zeus", "Branco e preto", False)
print(c.nome)


c = Cachorro("Chappie", "amarelo")
c.falar()

print("Ola mundo")

del c

print("Ola mundo")
print("Ola mundo")
print("Ola mundo")

# criar_cachorro()
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
class Veiculo:
def __init__(self, cor, placa, numero_rodas):
self.cor = cor
self.placa = placa
self.numero_rodas = numero_rodas

def ligar_motor(self):
print("Ligando o motor")

def __str__(self):
return f"{self.__class__.__name__}: {', '.join([f'{chave}={valor}' for chave, valor in self.__dict__.items()])}"


class Motocicleta(Veiculo):
pass


class Carro(Veiculo):
pass


class Caminhao(Veiculo):
def __init__(self, cor, placa, numero_rodas, carregado):
super().__init__(cor, placa, numero_rodas)
self.carregado = carregado

def esta_carregado(self):
print(f"{'Sim' if self.carregado else 'Não'} estou carregado")


moto = Motocicleta("preta", "abc-1234", 2)
carro = Carro("branco", "xde-0098", 4)
caminhao = Caminhao("roxo", "gfd-8712", 8, True)

print(moto)
print(carro)
print(caminhao)
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
class Animal:
def __init__(self, nro_patas):
self.nro_patas = nro_patas

def __str__(self):
return f"{self.__class__.__name__}: {', '.join([f'{chave}={valor}' for chave, valor in self.__dict__.items()])}"


class Mamifero(Animal):
def __init__(self, cor_pelo, **kw):
self.cor_pelo = cor_pelo
super().__init__(**kw)


class Ave(Animal):
def __init__(self, cor_bico, **kw):
self.cor_bico = cor_bico
super().__init__(**kw)


class Gato(Mamifero):
pass


class Ornitorrinco(Mamifero, Ave):
def __init__(self, cor_bico, cor_pelo, nro_patas):
super().__init__(cor_pelo=cor_pelo, cor_bico=cor_bico, nro_patas=nro_patas)


gato = Gato(nro_patas=4, cor_pelo="Preto")
print(gato)

ornitorrinco = Ornitorrinco(nro_patas=2, cor_pelo="vermelho", cor_bico="laranja")
print(ornitorrinco)
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
class Conta:
def __init__(self, nro_agencia, saldo=0):
self._saldo = saldo
self.nro_agencia = nro_agencia

def depositar(self, valor):
# ...
self._saldo += valor

def sacar(self, valor):
# ...
self._saldo -= valor

def mostrar_saldo(self):
# ...
return self._saldo


conta = Conta("0001", 100)
conta.depositar(100)
print(conta.nro_agencia)
print(conta.mostrar_saldo())
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
class Foo:
def __init__(self, x=None):
self._x = x

@property
def x(self):
return self._x or 0

@x.setter
def x(self, value):
self._x += value

@x.deleter
def x(self):
self._x = 0


foo = Foo(10)
print(foo.x)
del foo.x
print(foo.x)
foo.x = 10
print(foo.x)
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
class Pessoa:
def __init__(self, nome, ano_nascimento):
self.nome = nome
self._ano_nascimento = ano_nascimento

@property
def idade(self):
_ano_atual = 2022
return _ano_atual - self._ano_nascimento


pessoa = Pessoa("Guilherme", 1994)
print(f"Nome: {pessoa.nome} \tIdade: {pessoa.idade}")
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
class Passaro:
def voar(self):
print("Voando...")


class Pardal(Passaro):
def voar(self):
print("Pardal pode voar")


class Avestruz(Passaro):
def voar(self):
print("Avestruz não pode voar")


# NOTE: exemplo ruim do uso de herança para "ganhar" o método voar
class Aviao(Passaro):
def voar(self):
print("Avião está decolando...")


def plano_voo(obj):
obj.voar()


plano_voo(Pardal())
plano_voo(Avestruz())
plano_voo(Aviao())
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
class Estudante:
escola = "DIO"

def __init__(self, nome, matricula):
self.nome = nome
self.matricula = matricula

def __str__(self) -> str:
return f"{self.nome} - {self.matricula} - {self.escola}"


def mostrar_valores(*objs):
for obj in objs:
print(obj)


aluno_1 = Estudante("Guilherme", 1)
aluno_2 = Estudante("Giovanna", 2)
mostrar_valores(aluno_1, aluno_2)

Estudante.escola = "Python"
aluno_3 = Estudante("Chappie", 3)
mostrar_valores(aluno_1, aluno_2, aluno_3)
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
class Pessoa:
def __init__(self, nome, idade):
self.nome = nome
self.idade = idade

@classmethod
def criar_de_data_nascimento(cls, ano, mes, dia, nome):
idade = 2022 - ano
return cls(nome, idade)

@staticmethod
def e_maior_idade(idade):
return idade >= 18


p = Pessoa.criar_de_data_nascimento(1994, 3, 21, "Guilherme")
print(p.nome, p.idade)

print(Pessoa.e_maior_idade(18))
print(Pessoa.e_maior_idade(8))
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
from abc import ABC, abstractmethod, abstractproperty


class ControleRemoto(ABC):
@abstractmethod
def ligar(self):
pass

@abstractmethod
def desligar(self):
pass

@property
@abstractproperty
def marca(self):
pass


class ControleTV(ControleRemoto):
def ligar(self):
print("Ligando a TV...")
print("Ligada!")

def desligar(self):
print("Desligando a TV...")
print("Desligada!")

@property
def marca(self):
return "Philco"


class ControleArCondicionado(ControleRemoto):
def ligar(self):
print("Ligando o Ar Condicionado...")
print("Ligado!")

def desligar(self):
print("Desligando o Ar Condicionado...")
print("Desligado!")

@property
def marca(self):
return "LG"


controle = ControleTV()
controle.ligar()
controle.desligar()
print(controle.marca)


controle = ControleArCondicionado()
controle.ligar()
controle.desligar()
print(controle.marca)
Loading

0 comments on commit fcbe019

Please sign in to comment.