diff --git a/atores.py b/atores.py index cfc2ef5ea..fec662f67 100644 --- a/atores.py +++ b/atores.py @@ -57,11 +57,11 @@ def colidir(self, outro_ator, intervalo=1): class Obstaculo(Ator): - pass + _caracter_ativo = 'O' class Porco(Ator): - pass + _caracter_ativo = 'P' class DuploLancamentoExcecao(Exception): diff --git a/fase.py b/fase.py index 3385175c6..1c8fd161f 100644 --- a/fase.py +++ b/fase.py @@ -43,7 +43,7 @@ def adicionar_obstaculo(self, *obstaculos): :param obstaculos: """ - pass + self._obstaculos.extend(obstaculos) def adicionar_porco(self, *porcos): """ @@ -51,7 +51,7 @@ def adicionar_porco(self, *porcos): :param porcos: """ - pass + self._porcos.extend(porcos) def adicionar_passaro(self, *passaros): """ @@ -59,7 +59,7 @@ def adicionar_passaro(self, *passaros): :param passaros: """ - pass + self._passaros.extend(passaros) def status(self): """ diff --git a/oo/__init__.py b/oo/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/oo/carro.py b/oo/carro.py new file mode 100644 index 000000000..ca6b0985f --- /dev/null +++ b/oo/carro.py @@ -0,0 +1,158 @@ + + +""" +Vodê deve cria uma classe que vai possuir +dois atributos compostos por outras duas classes: + +1) Motor +2) Direção + +O motor terá a responsabilidade de controlar a velocidade +ele oferece os seguintes atributos: +1) Atibuto de dado Velocidade +2) Metodo Acelerar, que deverá incrementar a velocidade em uma unidades. +3) Metodos frear, que deverá decrementar a velocidade em duas unidades. + +a Direção terá a responsabilidade de +controlar a direção. ela oferece a os seguintes atributos: +1) valor de direção com valores possiveis: Norte, Sul, Leste, Oeste +2) Metodo Vira_a_direita +3) Metodo Vira_a_esquerda + N +O L + S + + Exemplo + >>> # testado o motor + >>> motor = Motor() + >>> motor.velocidade + 0 + >>> motor.acelerar() + >>> motor.velocidade + 1 + >>> motor.acelerar() + >>> motor.velocidade + 2 + >>> motor.acelerar() + >>> motor.velocidade + 3 + >>> motor.frear() + >>> motor.velocidade + 1 + >>> motor.frear() + >>> motor.velocidade + 0 + >>> # testando direção + + >>> direcao = Direcao() + >>> direcao.valor + 'Norte' + >>> direcao.virar_a_direita() + >>> direcao.valor + 'Leste' + >>> direcao.virar_a_direita() + >>> direcao.valor + 'Sul' + >>> direcao.virar_a_direita() + >>> direcao.valor + 'Oeste' + >>> direcao.virar_a_direita() + >>> direcao.valor + 'Norte' + >>> direcao.virar_a_esquerda() + >>> direcao.valor + 'Oeste' + >>> direcao.virar_a_direita() + >>> direcao.valor + 'Norte' + >>> direcao.virar_a_direita() + >>> direcao.valor + 'Leste' + >>> direcao.virar_a_direita() + >>> direcao.valor + 'Sul' + >>> carro = Carro(direcao, motor) + >>> carro.calcular_velocidade() + 0 + >>> carro.acelerar() + >>> carro.calcular_velocidade() + 1 + >>> carro.acelerar() + >>> carro.calcular_velocidade() + 2 + >>> carro.acelerar() + >>> carro.calcular_velocidade() + 3 + >>> carro.frear() + >>> carro.calcular_velocidade() + 1 + >>> carro.frear() + >>> carro.calcular_velocidade() + 0 + >>> carro.calcular_direcao() + 'Sul' + >>> carro.virar_a_direita() + >>> carro.calcular_direcao() + 'Oeste' + >>> carro.virar_a_esquerda() + >>> carro.calcular_direcao() + 'Sul' +""" + +class Carro: + def __init__(self, direcao, motor): + self.motor = motor + self.direcao = direcao + + def calcular_velocidade(self): + return self.motor.velocidade + + def acelerar(self): + self.motor.acelerar() + + def frear(self): + self.motor.frear() + + def calcular_direcao(self): + return self.direcao.valor + + def virar_a_direita(self): + self.direcao.virar_a_direita() + + def virar_a_esquerda(self): + self.direcao.virar_a_esquerda() + + +NORTE = 'Norte' +SUL = 'Sul' +LESTE = 'Leste' +OESTE = 'Oeste' + +class Direcao: + rotacao_a_direita_dct = { + NORTE: LESTE, LESTE: SUL, SUL: OESTE, OESTE: NORTE + } + rotacao_a_esquerda_dct = { + NORTE: OESTE, OESTE: SUL, SUL: LESTE, LESTE: NORTE + } + + def __init__(self): + self.valor = NORTE + + def virar_a_direita(self): + self.valor = self.rotacao_a_direita_dct[self.valor] + + def virar_a_esquerda(self): + self.valor = self.rotacao_a_esquerda_dct[self.valor] + + +class Motor: + def __init__(self): + self.velocidade = 0 + + def acelerar(self): + self.velocidade += 1 + + def frear(self): + self.velocidade -= 2 + self.velocidade = max(0, self.velocidade) \ No newline at end of file diff --git a/oo/pessoa.py b/oo/pessoa.py new file mode 100644 index 000000000..35a66b901 --- /dev/null +++ b/oo/pessoa.py @@ -0,0 +1,57 @@ + + + +class Pessoa: + olhos = 2 + + def __init__(self, *filhos, nome = None, idade=42): + self.nome = nome + self.idade = idade + self.filhos = list(filhos) + + def cumprimentar(self): + return f'olá {id(self)}' + + @staticmethod + def metodo_estatico(): + return 43 + + @classmethod + def nome_e_atributo_de_classe(cls): + return f'{cls} - olhos {cls.olhos} ' + +class Menina(Pessoa): + pass + +if __name__ == '__main__': + sophia = Menina(nome='Sophia') + angelina = Pessoa(sophia, nome='Angelina') + print(Pessoa.cumprimentar(angelina)) + print(id(angelina)) + print(angelina.cumprimentar()) + print(angelina.nome) + print(angelina.idade) + for filho in angelina.filhos: + print(filho.nome) + angelina.sobrenome = 'Ferreira' + angelina.olhos = 1 + print(angelina.__dict__) + print(sophia.__dict__) + del angelina.filhos + print(angelina.__dict__) + print(sophia.__dict__) + print(Pessoa.olhos) + print(angelina.olhos) + print(sophia.olhos) + print(id(Pessoa.olhos), id(angelina.olhos), id(sophia.olhos)) + print(Pessoa.metodo_estatico(), angelina.metodo_estatico()) + print(Pessoa.nome_e_atributo_de_classe(), angelina.nome_e_atributo_de_classe()) + pessoa = Pessoa("anonimo") + print(isinstance(pessoa, Pessoa)) + print(isinstance(pessoa, Menina)) + print(isinstance(sophia, Pessoa)) + print(isinstance(sophia, Menina)) + + + + diff --git a/oo/test_carro.py b/oo/test_carro.py new file mode 100644 index 000000000..d6345f2d1 --- /dev/null +++ b/oo/test_carro.py @@ -0,0 +1,15 @@ +from unittest import TestCase + +from oo.carro import Motor + + +class CarroTesteCase(TestCase): + + def test_velocidade_inicial(self): + motor = Motor() + self.assertEqual(0, motor.velocidade) + + def test_acelerar(self): + motor = Motor() + motor.acelerar() + self.assertEqual(1, motor.velocidade) diff --git a/testes/integracao.py b/testes/teste_integracao.py similarity index 100% rename from testes/integracao.py rename to testes/teste_integracao.py diff --git a/testes/atores_testes.py b/testes/testes_atores.py similarity index 100% rename from testes/atores_testes.py rename to testes/testes_atores.py diff --git a/testes/fase_testes.py b/testes/testes_fase.py similarity index 100% rename from testes/fase_testes.py rename to testes/testes_fase.py