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..31006a2da --- /dev/null +++ b/oo/carro.py @@ -0,0 +1,108 @@ + +'''' +você deve criar uma classe carro que vai possuir dois atributos compostos por outras classes: + +1) Motor +2) Direção -- + +O motor controlará a velocidade. Terá os seguintes atributos: +1) atributo de dado velocidade +2) método acelerar, que deverá incrementar a velocidade de uma unidade +3) Método frear que deverá decrementar a velocidade em 2 unidades + +A direção terá a responsabilidade de controlar a direção. Ela oferecerá os atributos: +1- valor de direção com valores possíveis: Norte, Sul, Leste, Oeste +2 - Método girar à direita +3 - Método girar à 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 direção +>>> 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_direita() +>>> carro.calcular_direcao() +>>> 'Norte' + +>>> carro.girar_a_direita() +>>> carro.calcular_direcao() +>>> 'Oeste ' + +''' +class Motor: + def __init__(self): #criação do atributo velocidade através do método init + self.velocidade = 0 + + def acelerar(self): + self.velocidade += 1 + + def frear(self): + self.velocidade -= 2 + self.velocidade = max(0, self.velocidadev) + diff --git a/oo/pessoa.py b/oo/pessoa.py new file mode 100644 index 000000000..dfdabdf2e --- /dev/null +++ b/oo/pessoa.py @@ -0,0 +1,57 @@ +# criação da classe pessoa +class Pessoa: + olhos = 2 #atributo defautl ou atributo de classe + + def __init__(self, *filhos, nome = None, idade=35): + self.idade = idade + self.nome = nome + self.filhos = list(filhos) + + + #criação do método + def cumprimentar(self): + return f'Olá {id(self)}' + + @staticmethod #decorator + def metodo_estatico(): + return 42 + + @classmethod + def nome_e_atributos_de_classe(cls): #cls alusão palavra class (Pessoa) + return f'{cls} - olhos {cls.olhos}' + +class Homem(Pessoa): #classe Homem herda todos os atributos e métodos da classe pai Pessoa + pass + + + + +if __name__ =='__main__': + renzo = Homem(nome='Renzo') + luciano = Homem(renzo, nome='Luciano') + print(Pessoa.cumprimentar(luciano)) + print(id(luciano)) + print(luciano.cumprimentar()) + print(luciano.nome) + print(luciano.idade) + for filho in luciano.filhos: + print(filho.nome) + luciano.sobrenome = 'Ramalho' + del luciano.filhos + luciano.olhos = 1 + del luciano.olhos + print(luciano.__dict__) + print(renzo.__dict__) + Pessoa.olhos = 3 + print(Pessoa.olhos) + print(luciano.olhos) + print(renzo.olhos) + print(id(Pessoa.olhos), id(luciano.olhos), id(renzo.olhos)) + print(Pessoa.metodo_estatico(), luciano.metodo_estatico()) + print(Pessoa.nome_e_atributos_de_classe(), luciano.nome_e_atributos_de_classe()) + pessoa = Pessoa('Anonimo') + print(isinstance(pessoa, Pessoa)) + print(isinstance(pessoa, Homem)) + print(isinstance(renzo, Pessoa)) + print(isinstance(renzo, Homem)) +