From c86129794b8edbf0d05fad57c74f3666ae81f3ab Mon Sep 17 00:00:00 2001 From: "Jackson E. de Deus" Date: Mon, 2 Mar 2020 15:38:35 -0300 Subject: [PATCH 1/6] criada a classe pessoa --- oo/__init__.py | 0 oo/pessoa.py | 2 ++ 2 files changed, 2 insertions(+) create mode 100644 oo/__init__.py create mode 100644 oo/pessoa.py diff --git a/oo/__init__.py b/oo/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/oo/pessoa.py b/oo/pessoa.py new file mode 100644 index 000000000..9d5b508ed --- /dev/null +++ b/oo/pessoa.py @@ -0,0 +1,2 @@ +class Pessoa: + pass \ No newline at end of file From bb03d12f25dde913760f10564700f1f8e5c0dfcf Mon Sep 17 00:00:00 2001 From: "Jackson E. de Deus" Date: Tue, 3 Mar 2020 12:34:13 -0300 Subject: [PATCH 2/6] testes classe pessoa --- oo/pessoa.py | 24 ++++++++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) diff --git a/oo/pessoa.py b/oo/pessoa.py index 9d5b508ed..c0dc7cb1b 100644 --- a/oo/pessoa.py +++ b/oo/pessoa.py @@ -1,2 +1,22 @@ -class Pessoa: - pass \ No newline at end of file +class Pessoa: + + def __init__(self,nome=None,idade=31): + self.nome = nome + self.idade = idade + + + def cumprimentar(self): + return f'Olá {id(self)}' + + +if __name__ == '__main__': + p = Pessoa("Jackson") + print(p.cumprimentar()) + print(p.nome) + print(p.idade) + + p.nome = "Jack" + p.idade = 29 + + print(p.nome) + print(p.idade) \ No newline at end of file From d5c902bfab6b332a3fc30b94ae76c7c30db07797 Mon Sep 17 00:00:00 2001 From: "Jackson E. de Deus" Date: Tue, 3 Mar 2020 13:16:05 -0300 Subject: [PATCH 3/6] testes classe pessoa com lista --- oo/pessoa.py | 21 ++++++++++----------- 1 file changed, 10 insertions(+), 11 deletions(-) diff --git a/oo/pessoa.py b/oo/pessoa.py index c0dc7cb1b..a4a9a87f3 100644 --- a/oo/pessoa.py +++ b/oo/pessoa.py @@ -1,22 +1,21 @@ class Pessoa: - def __init__(self,nome=None,idade=31): + def __init__(self,*filhos,nome=None,idade=31): self.nome = nome self.idade = idade - + self.filhos = list(filhos) def cumprimentar(self): return f'Olá {id(self)}' if __name__ == '__main__': - p = Pessoa("Jackson") - print(p.cumprimentar()) - print(p.nome) - print(p.idade) - - p.nome = "Jack" - p.idade = 29 + lorenzo = Pessoa(nome="Lorenzo") + jack = Pessoa(lorenzo,nome="Jackson") + print(jack.cumprimentar()) + print(jack.nome) + print(jack.idade) + print(jack.filhos) - print(p.nome) - print(p.idade) \ No newline at end of file + for filho in jack.filhos: + print(filho.nome) From 458a507d86dbac4d126a1fbb24c1bf708beb6e17 Mon Sep 17 00:00:00 2001 From: "Jackson E. de Deus" Date: Tue, 3 Mar 2020 16:51:16 -0300 Subject: [PATCH 4/6] Criado e removido atributo dinamicamente do objeto pessoa --- oo/pessoa.py | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/oo/pessoa.py b/oo/pessoa.py index a4a9a87f3..b7ad70fd4 100644 --- a/oo/pessoa.py +++ b/oo/pessoa.py @@ -19,3 +19,13 @@ def cumprimentar(self): for filho in jack.filhos: print(filho.nome) + + #atributo dinamico + jack.sobrenome = "Deus" + print(jack.sobrenome) + + #exclui um atributo dinamicamente + del jack.filhos + + print(jack.__dict__) + print(lorenzo.__dict__) \ No newline at end of file From de8667c59ed0945b92bb880c20d623578829b2c1 Mon Sep 17 00:00:00 2001 From: "Jackson E. de Deus" Date: Tue, 3 Mar 2020 22:16:58 -0300 Subject: [PATCH 5/6] Criado o atributo de classe --- oo/pessoa.py | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/oo/pessoa.py b/oo/pessoa.py index b7ad70fd4..b19442e6b 100644 --- a/oo/pessoa.py +++ b/oo/pessoa.py @@ -1,5 +1,7 @@ class Pessoa: + olhos = 2 + def __init__(self,*filhos,nome=None,idade=31): self.nome = nome self.idade = idade @@ -28,4 +30,13 @@ def cumprimentar(self): del jack.filhos print(jack.__dict__) - print(lorenzo.__dict__) \ No newline at end of file + print(lorenzo.__dict__) + + print(Pessoa.olhos) + print(jack.olhos) + print(lorenzo.olhos) + print(id(Pessoa.olhos), id(jack.olhos), id(lorenzo.olhos) ) + + # alteracao de valor do atributo olhos so de lorenzo + lorenzo.olhos = 1 + print(id(Pessoa.olhos), id(jack.olhos), id(lorenzo.olhos)) \ No newline at end of file From 1c569253b0d13dd0a1ddbc2631d05853df12a518 Mon Sep 17 00:00:00 2001 From: "Jackson E. de Deus" Date: Sun, 8 Mar 2020 18:38:32 -0300 Subject: [PATCH 6/6] Criacao da classe carro com doctest --- oo/carro.py | 94 +++++++++++++++++++++++++++++++++++++++++++++++++++ oo/direcao.py | 35 +++++++++++++++++++ oo/motor.py | 29 ++++++++++++++++ oo/pessoa.py | 14 +++++++- 4 files changed, 171 insertions(+), 1 deletion(-) create mode 100644 oo/carro.py create mode 100644 oo/direcao.py create mode 100644 oo/motor.py diff --git a/oo/carro.py b/oo/carro.py new file mode 100644 index 000000000..0b90160cf --- /dev/null +++ b/oo/carro.py @@ -0,0 +1,94 @@ + +""" + classe de teste + python -m doctest nome_arquvo + Exemplo: + + >>> # teste + >>> motor = Motor() + >>> motor.velocidade + 0 + >>> motor.acelerar() + >>> motor.velocidade + 1 + >>> motor.acelerar() + >>> motor.velocidade + 2 + >>> motor.frear() + >>> motor.velocidade + 0 + >>> motor.frear() + >>> motor.velocidade + 0 + >>> direcao = Direcao() + >>> direcao.direcao_atual + 'Norte' + >>> direcao.girar_a_direita() + >>> direcao.direcao_atual + 'Leste' + >>> direcao.girar_a_esquerda() + >>> direcao.direcao_atual + 'Norte' + >>> carro = Carro(direcao,motor) + >>> carro.calcular_velocidade() + 0 + >>> carro.ver_direcao_atual() + 'Norte' + >>> carro.acelerar() + >>> carro.calcular_velocidade() + 1 + >>> carro.frear() + >>> carro.calcular_velocidade() + 0 + >>> carro.girar_a_direita() + >>> carro.ver_direcao_atual() + 'Leste' + + +""" + +from oo.direcao import Direcao +from oo.motor import Motor + + +class Carro: + + def __init__(self,direcao,motor): + self.direcao = direcao #Direcao() + self.motor = motor #Motor() + #self.direcao_atual = 'Norte' + + def acelerar(self): + self.motor.acelerar() + + def frear(self): + self.motor.frear() + + def calcular_velocidade(self): + return self.motor.velocidade + + def girar_a_direita(self): + self.direcao.girar_a_direita() + + def girar_a_esquerda(self): + self.direcao.girar_a_esquerda() + + def ver_direcao_atual(self): + return self.direcao.direcao_atual + + +if __name__ == "__main__": + + # instancia de direcao e motor direta na classe carro + motor = Motor() + direcao = Direcao() + carro = Carro(direcao, motor) + + print(carro.calcular_velocidade()) + print(carro.ver_direcao_atual()) + + carro.acelerar() + print(carro.calcular_velocidade()) + + carro.girar_a_direita() + print(carro.ver_direcao_atual()) diff --git a/oo/direcao.py b/oo/direcao.py new file mode 100644 index 000000000..e5d3eb88f --- /dev/null +++ b/oo/direcao.py @@ -0,0 +1,35 @@ +class Direcao: + + def __init__(self): + self.direcao_atual = "Norte" + + def girar_a_direita(self): + if self.direcao_atual == "Norte": + self.direcao_atual = "Leste" + elif self.direcao_atual == "Leste": + self.direcao_atual = "Sul" + elif self.direcao_atual == "Sul": + self.direcao_atual = "Oeste" + elif self.direcao_atual == "Oeste": + self.direcao_atual = "Norte" + + def girar_a_esquerda(self): + if self.direcao_atual == "Norte": + self.direcao_atual = "Oeste" + elif self.direcao_atual == "Oeste": + self.direcao_atual = "Sul" + elif self.direcao_atual == "Sul": + self.direcao_atual = "Leste" + elif self.direcao_atual == "Leste": + self.direcao_atual = "Norte" + + +if __name__ == "__main__": + direcao = Direcao() + print(direcao.direcao_atual) + + direcao.girar_a_direita() + print(direcao.direcao_atual) + + direcao.girar_a_direita() + print(direcao.direcao_atual) \ No newline at end of file diff --git a/oo/motor.py b/oo/motor.py new file mode 100644 index 000000000..bca2b7275 --- /dev/null +++ b/oo/motor.py @@ -0,0 +1,29 @@ +class Motor: + + def __init__(self): + self.velocidade = 0 + + def acelerar(self): + self.velocidade += 1 + + def frear(self): + if self.velocidade >= 2: + self.velocidade -= 2 + else: + self.velocidade = 0 + + def calcular_velocidade(self): + return self.velocidade + +if __name__ == "__main__": + motor = Motor() + print(motor.calcular_velocidade()) + + motor.acelerar() + print(motor.calcular_velocidade()) + + motor.frear() + print(motor.calcular_velocidade()) + + motor.frear() + print(motor.calcular_velocidade()) diff --git a/oo/pessoa.py b/oo/pessoa.py index b19442e6b..034f95f03 100644 --- a/oo/pessoa.py +++ b/oo/pessoa.py @@ -10,6 +10,14 @@ def __init__(self,*filhos,nome=None,idade=31): def cumprimentar(self): return f'Olá {id(self)}' + # decorator + @staticmethod + def metodo_estatico(): + return 42 + + @classmethod + def nome_e_atributos_de_classe(cls): + return f'{cls} - olhos {cls.olhos}' if __name__ == '__main__': lorenzo = Pessoa(nome="Lorenzo") @@ -39,4 +47,8 @@ def cumprimentar(self): # alteracao de valor do atributo olhos so de lorenzo lorenzo.olhos = 1 - print(id(Pessoa.olhos), id(jack.olhos), id(lorenzo.olhos)) \ No newline at end of file + print(id(Pessoa.olhos), id(jack.olhos), id(lorenzo.olhos)) + + + print(Pessoa.metodo_estatico(), jack.metodo_estatico()) + print(Pessoa.nome_e_atributos_de_classe(), jack.nome_e_atributos_de_classe()) \ No newline at end of file