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..271f9af3f --- /dev/null +++ b/oo/carro.py @@ -0,0 +1,157 @@ +""" +Você deve criar uma classe carro 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.Atributo de dado velocidade + 2.Método acelerar, que deverá incremetar a velocidade de uma unidade + 3.Método frear que deverá decrementar a velocidade em duas unidades + +A Direção terá a responsabilidade de controlar a direção. Ela oferece +os seguintes atributos: + + 1.Valor de diração com valores possíveis: Norte, Sul, Leste, Oeste. + 2.Método girar_a_direita + 3.Método girar_a_esquerda + + + N + O L + S + +Exemplo: + >>> # Testando 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 Direcao + >>> direcao = Direcao() + >>> direcao.valor + 'Norte' + >>> direcao.girar_a_direita() + >>> direcao.valor + 'Leste' + >>> direcao.girar_a_direita() + >>> direcao.valor + 'Sul' + >>> direcao.girar_a_direita() + >>> direcao.valor + 'Oeste' + >>> direcao.girar_a_direita() + >>> direcao.valor + 'Norte' + >>> direcao.girar_a_esquerda() + >>> direcao.valor + 'Oeste' + >>> direcao.girar_a_esquerda() + >>> direcao.valor + 'Sul' + >>> direcao.girar_a_esquerda() + >>> direcao.valor + 'Leste' + >>> direcao.girar_a_esquerda() + >>> direcao.valor + 'Norte' + >>> carro = Carro(direcao, motor) + >>> carro.calcular_velocidade() + 0 + >>> carro.acelerar() + >>> carro.calcular_velocidade() + 1 + >>> carro.acelerar() + >>> carro.calcular_velocidade() + 2 + >>> carro.frear() + >>> carro.calcular_velocidade() + 0 + >>> carro.calcular_direcao() + 'Norte' + >>> carro.girar_a_direita() + >>> carro.calcular_direcao() + 'Leste' + >>> carro.girar_a_esquerda() + >>> carro.calcular_direcao() + 'Norte' + >>> carro.girar_a_esquerda() + >>> carro.calcular_direcao() + 'Oeste' + """ + +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 girar_a_direita(self): + self.direcao.girar_a_direita() + + def girar_a_esquerda(self): + self.direcao.girar_a_esquerda() + + +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) + +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 girar_a_direita(self): + self.valor = self.rotacao_a_direita_dct[self.valor] + + def girar_a_esquerda(self): + self.valor = self.rotacao_a_esquerda_dct[self.valor] + +# python3 -m doctest script.py -f \ No newline at end of file diff --git a/oo/pessoa.py b/oo/pessoa.py new file mode 100644 index 000000000..1596ec862 --- /dev/null +++ b/oo/pessoa.py @@ -0,0 +1,55 @@ +class Pessoa: + olhos = 2 + + def __init__(self, *filhos, nome=None, idade=50): + self.idade = idade + self.nome = nome + self.filhos = list(filhos) + + + def cumprimentar(self): + return f'Olá {id(self)}' + + + @staticmethod + def metodo_estatico(): + return 42 + + + @classmethod + def nome_e_atributos_de_classe(cls): + return f'{cls} - olhos {cls.olhos}' + + +if __name__ == '__main__': + maria = Pessoa + maria.nome = 'Mariazinha' + print(maria.nome) + lucas = Pessoa(nome='Lucas') + marcos = Pessoa(nome='Marcos') + joao = Pessoa(lucas, marcos, nome='João Batista') + + print(Pessoa.cumprimentar(joao)) + print(id(lucas)) + print(joao.cumprimentar(),'\n') + + print(joao.nome) + print(joao.idade) + joao.sobrenome = 'Braga' + print('Sobrenome do João:', joao.sobrenome) + for filho in joao.filhos: + print(filho.nome) + + del joao.filhos + lucas.olhos = 1 + del lucas.olhos + print(joao.__dict__) + print(lucas.__dict__) + Pessoa.olhos = 3 + print(Pessoa.olhos) + print(lucas.olhos) + print(joao.olhos) + print(id(Pessoa.olhos), id(lucas.olhos), id(joao.olhos)) + print(Pessoa.metodo_estatico(), lucas.metodo_estatico()) + print(Pessoa.nome_e_atributos_de_classe(), lucas.nome_e_atributos_de_classe()) +