From eec9e28c8a7afe6402cedc2921164b1a52c65afb Mon Sep 17 00:00:00 2001 From: Felipe N Souza Date: Sat, 26 Oct 2019 17:28:47 -0300 Subject: [PATCH 01/11] 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..e1da50e22 --- /dev/null +++ b/oo/pessoa.py @@ -0,0 +1,2 @@ +class Pessoa: + pass \ No newline at end of file From 07d2b5a99fb0d080594758529b15299651e8f17f Mon Sep 17 00:00:00 2001 From: Felipe N Souza Date: Sat, 26 Oct 2019 17:48:55 -0300 Subject: [PATCH 02/11] =?UTF-8?q?Criado=20m=C3=A9todo=20cumprimentar?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- oo/pessoa.py | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/oo/pessoa.py b/oo/pessoa.py index e1da50e22..f9cc586bb 100644 --- a/oo/pessoa.py +++ b/oo/pessoa.py @@ -1,2 +1,10 @@ class Pessoa: - pass \ No newline at end of file + def cumprimentar(self): + return f'Olá {id(self)}' + + +if __name__ == '__main__': + p = Pessoa() + print(Pessoa.cumprimentar(p)) + print(id(p)) + print(p.cumprimentar()) From baee74179c48e898f225776bf3b231a9d115b1f0 Mon Sep 17 00:00:00 2001 From: Felipe N Souza Date: Sat, 26 Oct 2019 18:02:17 -0300 Subject: [PATCH 03/11] =?UTF-8?q?Criados=20atributos=20de=20inst=C3=A2ncia?= =?UTF-8?q?=20nome=20e=20idade?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- oo/pessoa.py | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/oo/pessoa.py b/oo/pessoa.py index f9cc586bb..7db7150ae 100644 --- a/oo/pessoa.py +++ b/oo/pessoa.py @@ -1,4 +1,8 @@ class Pessoa: + def __init__(self, nome=None, idade=None): + self.idade = idade + self.nome = nome + def cumprimentar(self): return f'Olá {id(self)}' @@ -8,3 +12,9 @@ def cumprimentar(self): print(Pessoa.cumprimentar(p)) print(id(p)) print(p.cumprimentar()) + print(p.nome) + print(p.idade) + p.nome = 'Felipe' + p.idade = 35 + print(p.nome) + print(p.idade) From 2c18b8a2beae9a352d64bfbae329fa7770055eae Mon Sep 17 00:00:00 2001 From: Felipe N Souza Date: Sat, 26 Oct 2019 18:12:33 -0300 Subject: [PATCH 04/11] Criado atributo complexo filhos --- oo/pessoa.py | 25 ++++++++++++++----------- 1 file changed, 14 insertions(+), 11 deletions(-) diff --git a/oo/pessoa.py b/oo/pessoa.py index 7db7150ae..590e33732 100644 --- a/oo/pessoa.py +++ b/oo/pessoa.py @@ -1,20 +1,23 @@ class Pessoa: - def __init__(self, nome=None, idade=None): + def __init__(self, *filhos, nome=None, idade=None): self.idade = idade self.nome = nome + self.filhos = list(filhos) def cumprimentar(self): return f'Olá {id(self)}' if __name__ == '__main__': - p = Pessoa() - print(Pessoa.cumprimentar(p)) - print(id(p)) - print(p.cumprimentar()) - print(p.nome) - print(p.idade) - p.nome = 'Felipe' - p.idade = 35 - print(p.nome) - print(p.idade) + lucas = Pessoa(nome='Lucas') + anna = Pessoa(nome='Anna') + pedro = Pessoa(nome='Pedro') + felipe = Pessoa(lucas, anna, pedro, nome='Felipe') + print(Pessoa.cumprimentar(felipe)) + print(id(felipe)) + print(felipe.cumprimentar()) + print(felipe.nome) + print(felipe.idade) + for filho in felipe.filhos: + print(filho.nome) + From 76b0fd9c71a3799bfe17853e9d20128a26146796 Mon Sep 17 00:00:00 2001 From: Felipe N Souza Date: Sat, 26 Oct 2019 18:18:30 -0300 Subject: [PATCH 05/11] =?UTF-8?q?Criado=20e=20removido=20atributo=20din?= =?UTF-8?q?=C3=A2mico=20de=20objetos=20do=20tipo=20Pessoa?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- oo/pessoa.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/oo/pessoa.py b/oo/pessoa.py index 590e33732..927a53cd0 100644 --- a/oo/pessoa.py +++ b/oo/pessoa.py @@ -20,4 +20,10 @@ def cumprimentar(self): print(felipe.idade) for filho in felipe.filhos: print(filho.nome) + felipe.sobrenome = 'Souza' + print(felipe.sobrenome) + print(felipe.__dict__) + print(lucas.__dict__) + del felipe.sobrenome + print(felipe.__dict__) From a519ced62a4cf46d395f17c467388833115eeb5c Mon Sep 17 00:00:00 2001 From: Felipe N Souza Date: Sat, 26 Oct 2019 18:28:44 -0300 Subject: [PATCH 06/11] Criado atributo de classe olhos --- oo/pessoa.py | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/oo/pessoa.py b/oo/pessoa.py index 927a53cd0..9ef04f473 100644 --- a/oo/pessoa.py +++ b/oo/pessoa.py @@ -1,4 +1,6 @@ class Pessoa: + olhos = 2 + def __init__(self, *filhos, nome=None, idade=None): self.idade = idade self.nome = nome @@ -26,4 +28,9 @@ def cumprimentar(self): print(lucas.__dict__) del felipe.sobrenome print(felipe.__dict__) - + print(Pessoa.olhos) + print(felipe.olhos) + felipe.olhos = 1 + print(felipe.__dict__) + print(anna.olhos) + print(id(Pessoa.olhos), id(pedro.olhos), id(felipe.olhos)) From 4f47eea5f90e0f9032fdce33db6c72fc4307eaad Mon Sep 17 00:00:00 2001 From: Felipe N Souza Date: Sat, 26 Oct 2019 18:36:02 -0300 Subject: [PATCH 07/11] Criado metodo de classe --- oo/pessoa.py | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/oo/pessoa.py b/oo/pessoa.py index 9ef04f473..d108a2080 100644 --- a/oo/pessoa.py +++ b/oo/pessoa.py @@ -9,6 +9,14 @@ def __init__(self, *filhos, nome=None, idade=None): def cumprimentar(self): return f'Olá {id(self)}' + @staticmethod + def metodo_estatico(): + return 42 + + @classmethod + def nomes_e_atributos_da_classe(cls): + return f'Classe: {cls} - olhos {cls.olhos}' + if __name__ == '__main__': lucas = Pessoa(nome='Lucas') @@ -34,3 +42,5 @@ def cumprimentar(self): print(felipe.__dict__) print(anna.olhos) print(id(Pessoa.olhos), id(pedro.olhos), id(felipe.olhos)) + print(Pessoa.metodo_estatico(), felipe.metodo_estatico()) + print(Pessoa.nomes_e_atributos_da_classe(), felipe.nomes_e_atributos_da_classe()) From dd77d7205e586563b33c64ed734ebf2f0d89379a Mon Sep 17 00:00:00 2001 From: Felipe N Souza Date: Sat, 26 Oct 2019 22:36:58 -0300 Subject: [PATCH 08/11] =?UTF-8?q?Minha=20solu=C3=A7=C3=A3o=20do=20carro?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- oo/carro.py | 176 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 176 insertions(+) create mode 100644 oo/carro.py diff --git a/oo/carro.py b/oo/carro.py new file mode 100644 index 000000000..c2db469af --- /dev/null +++ b/oo/carro.py @@ -0,0 +1,176 @@ +""" +Você deve criar uma classe carro que vai possuir +dois atributos compostos por outras duas classes: + +Motor +Direção +O Motor terá a responsabilidade de controlar a velocidade. +Ele oferece os seguintes atributos: + +Atributo de dado velocidade +Método acelerar, que deverá incremetar a velocidade de uma unidade +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: + +Valor de diração com valores possíveis: Norte, Sul, Leste, Oeste. +Método girar_a_direita +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 Motor: + def __init__(self, velocidade=0): + self.velocidade = velocidade + + def acelerar(self): + self.velocidade += 1 + + def frear(self): + self.velocidade = self.velocidade - 2 if self.velocidade >= 2 else 0 + + +class Direcao: + def __init__(self, valor='Norte'): + self.valor = valor + + def girar_a_direita(self): + direcoes = { + 'Norte': 'Leste', + 'Leste': 'Sul', + 'Sul': 'Oeste', + 'Oeste': 'Norte' + } + self.valor = direcoes[self.valor] + + def girar_a_esquerda(self): + direcoes = { + 'Norte': 'Oeste', + 'Oeste': 'Sul', + 'Sul': 'Leste', + 'Leste': 'Norte' + } + self.valor = direcoes[self.valor] + +class Carro: + def __init__(self): + self.motor = Motor() + self.direcao = Direcao() + + +if __name__ == '__main__': + c = Carro() + print('acelerando') + c.motor.acelerar() + print(c.motor.velocidade) + c.motor.acelerar() + print(c.motor.velocidade) + c.motor.acelerar() + print(c.motor.velocidade) + + print('freando') + c.motor.frear() + print(c.motor.velocidade) + c.motor.frear() + print(c.motor.velocidade) + c.motor.frear() + print(c.motor.velocidade) + c.motor.acelerar() + print(c.motor.velocidade) + + print('girando a direita') + print(c.direcao.valor) + c.direcao.girar_a_direita() + print(c.direcao.valor) + c.direcao.girar_a_direita() + print(c.direcao.valor) + c.direcao.girar_a_direita() + print(c.direcao.valor) + c.direcao.girar_a_direita() + print(c.direcao.valor) + + print('girando a esquerda') + print(c.direcao.valor) + c.direcao.girar_a_esquerda() + print(c.direcao.valor) + c.direcao.girar_a_esquerda() + print(c.direcao.valor) + c.direcao.girar_a_esquerda() + print(c.direcao.valor) + c.direcao.girar_a_esquerda() + print(c.direcao.valor) From 7697d20c10da24746787ae50837132977e78806e Mon Sep 17 00:00:00 2001 From: Felipe N Souza Date: Sun, 27 Oct 2019 22:08:03 -0300 Subject: [PATCH 09/11] =?UTF-8?q?Corre=C3=A7=C3=A3o=20do=20exerc=C3=ADcio?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- oo/carro.py | 201 +++++++++++++++++++++++----------------------------- 1 file changed, 89 insertions(+), 112 deletions(-) diff --git a/oo/carro.py b/oo/carro.py index c2db469af..e9755aeab 100644 --- a/oo/carro.py +++ b/oo/carro.py @@ -22,155 +22,132 @@ S Exemplo: - # Testando motor - motor = Motor() - motor.velocidade + >>> # Testando motor + >>> motor = Motor() + >>> motor.velocidade 0 - motor.acelerar() - motor.velocidade + >>> motor.acelerar() + >>> motor.velocidade 1 - motor.acelerar() - motor.velocidade + >>> motor.acelerar() + >>> motor.velocidade 2 - motor.acelerar() - motor.velocidade + >>> motor.acelerar() + >>> motor.velocidade 3 - motor.frear() - motor.velocidade + >>> motor.frear() + >>> motor.velocidade 1 - motor.frear() - motor.velocidade + >>> motor.frear() + >>> motor.velocidade 0 - # Testando Direcao - direcao = Direcao() - direcao.valor + >>> # Testando Direcao + >>> direcao = Direcao() + >>> direcao.valor 'Norte' - direcao.girar_a_direita() - direcao.valor + >>> direcao.girar_a_direita() + >>> direcao.valor 'Leste' - direcao.girar_a_direita() - direcao.valor + >>> direcao.girar_a_direita() + >>> direcao.valor 'Sul' - direcao.girar_a_direita() - direcao.valor + >>> direcao.girar_a_direita() + >>> direcao.valor 'Oeste' - direcao.girar_a_direita() - direcao.valor + >>> direcao.girar_a_direita() + >>> direcao.valor 'Norte' - direcao.girar_a_esquerda() - direcao.valor + >>> direcao.girar_a_esquerda() + >>> direcao.valor 'Oeste' - direcao.girar_a_esquerda() - direcao.valor + >>> direcao.girar_a_esquerda() + >>> direcao.valor 'Sul' - direcao.girar_a_esquerda() - direcao.valor + >>> direcao.girar_a_esquerda() + >>> direcao.valor 'Leste' - direcao.girar_a_esquerda() - direcao.valor + >>> direcao.girar_a_esquerda() + >>> direcao.valor 'Norte' - carro = Carro(direcao, motor) - carro.calcular_velocidade() + >>> carro = Carro(direcao, motor) + >>> carro.calcular_velocidade() 0 - carro.acelerar() - carro.calcular_velocidade() + >>> carro.acelerar() + >>> carro.calcular_velocidade() 1 - carro.acelerar() - carro.calcular_velocidade() + >>> carro.acelerar() + >>> carro.calcular_velocidade() 2 - carro.frear() - carro.calcular_velocidade() + >>> carro.frear() + >>> carro.calcular_velocidade() 0 - carro.calcular_direcao() + >>> carro.calcular_direcao() 'Norte' - carro.girar_a_direita() - carro.calcular_direcao() + >>> carro.girar_a_direita() + >>> carro.calcular_direcao() 'Leste' - carro.girar_a_esquerda() - carro.calcular_direcao() + >>> carro.girar_a_esquerda() + >>> carro.calcular_direcao() 'Norte' - carro.girar_a_esquerda() - carro.calcular_direcao() + >>> carro.girar_a_esquerda() + >>> carro.calcular_direcao() 'Oeste' """ class Motor: - def __init__(self, velocidade=0): - self.velocidade = velocidade + def __init__(self): + self.velocidade = 0 def acelerar(self): self.velocidade += 1 def frear(self): - self.velocidade = self.velocidade - 2 if self.velocidade >= 2 else 0 + self.velocidade -= 2 + self.velocidade = max(0, self.velocidade) + + +NORTE = 'Norte' +LESTE = 'Leste' +SUL = 'Sul' +OESTE = 'Oeste' class Direcao: - def __init__(self, valor='Norte'): - self.valor = valor + 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): - direcoes = { - 'Norte': 'Leste', - 'Leste': 'Sul', - 'Sul': 'Oeste', - 'Oeste': 'Norte' - } - self.valor = direcoes[self.valor] + self.valor = self.rotacao_a_direita_dct[self.valor] def girar_a_esquerda(self): - direcoes = { - 'Norte': 'Oeste', - 'Oeste': 'Sul', - 'Sul': 'Leste', - 'Leste': 'Norte' - } - self.valor = direcoes[self.valor] + self.valor = self.rotacao_a_esquerda_dct[self.valor] + class Carro: - def __init__(self): - self.motor = Motor() - self.direcao = Direcao() - - -if __name__ == '__main__': - c = Carro() - print('acelerando') - c.motor.acelerar() - print(c.motor.velocidade) - c.motor.acelerar() - print(c.motor.velocidade) - c.motor.acelerar() - print(c.motor.velocidade) - - print('freando') - c.motor.frear() - print(c.motor.velocidade) - c.motor.frear() - print(c.motor.velocidade) - c.motor.frear() - print(c.motor.velocidade) - c.motor.acelerar() - print(c.motor.velocidade) - - print('girando a direita') - print(c.direcao.valor) - c.direcao.girar_a_direita() - print(c.direcao.valor) - c.direcao.girar_a_direita() - print(c.direcao.valor) - c.direcao.girar_a_direita() - print(c.direcao.valor) - c.direcao.girar_a_direita() - print(c.direcao.valor) - - print('girando a esquerda') - print(c.direcao.valor) - c.direcao.girar_a_esquerda() - print(c.direcao.valor) - c.direcao.girar_a_esquerda() - print(c.direcao.valor) - c.direcao.girar_a_esquerda() - print(c.direcao.valor) - c.direcao.girar_a_esquerda() - print(c.direcao.valor) + def __init__(self, direcao, motor): + self.direcao = direcao + self.motor = motor + + 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() From 48bdd9168e27c5f689482aea507a9b06279519c0 Mon Sep 17 00:00:00 2001 From: Felipe N Souza Date: Sun, 27 Oct 2019 22:24:40 -0300 Subject: [PATCH 10/11] =?UTF-8?q?Corre=C3=A7=C3=A3o=20do=20exerc=C3=ADcio?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- fase.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) 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): """ From a9d200804f2509f4d9b8bb45501b91fb4d04fa97 Mon Sep 17 00:00:00 2001 From: Felipe N Souza Date: Sun, 27 Oct 2019 22:24:59 -0300 Subject: [PATCH 11/11] =?UTF-8?q?Heran=C3=A7a=20simples?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- oo/pessoa.py | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/oo/pessoa.py b/oo/pessoa.py index d108a2080..e23f8db8f 100644 --- a/oo/pessoa.py +++ b/oo/pessoa.py @@ -18,11 +18,15 @@ def nomes_e_atributos_da_classe(cls): return f'Classe: {cls} - olhos {cls.olhos}' +class Homem(Pessoa): + pass + + if __name__ == '__main__': lucas = Pessoa(nome='Lucas') anna = Pessoa(nome='Anna') pedro = Pessoa(nome='Pedro') - felipe = Pessoa(lucas, anna, pedro, nome='Felipe') + felipe = Homem(lucas, anna, pedro, nome='Felipe') print(Pessoa.cumprimentar(felipe)) print(id(felipe)) print(felipe.cumprimentar()) @@ -44,3 +48,8 @@ def nomes_e_atributos_da_classe(cls): print(id(Pessoa.olhos), id(pedro.olhos), id(felipe.olhos)) print(Pessoa.metodo_estatico(), felipe.metodo_estatico()) print(Pessoa.nomes_e_atributos_da_classe(), felipe.nomes_e_atributos_da_classe()) + pessoa = Pessoa() + print(isinstance(pessoa, Pessoa)) + print(isinstance(pessoa, Homem)) + print(isinstance(felipe, Pessoa)) + print(isinstance(felipe, Homem))