From 04b3b5396b34882c1aa52bc5c75cb3398266d3e7 Mon Sep 17 00:00:00 2001 From: leoschuch Date: Mon, 6 Jul 2020 12:01:38 -0300 Subject: [PATCH 1/7] 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..eb7c0a9c1 --- /dev/null +++ b/oo/pessoa.py @@ -0,0 +1,2 @@ +class Pessoa: + pass From 67a57b1935b50db9bd9664de1d51018d6e24e30a Mon Sep 17 00:00:00 2001 From: leoschuch Date: Mon, 6 Jul 2020 13:14:40 -0300 Subject: [PATCH 2/7] =?UTF-8?q?Criada=20o=20m=C3=A9todo=20Cumprimentar?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- oo/pessoa.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/oo/pessoa.py b/oo/pessoa.py index eb7c0a9c1..ccb4632c3 100644 --- a/oo/pessoa.py +++ b/oo/pessoa.py @@ -1,2 +1,7 @@ class Pessoa: - pass + def cumprimentar(self): + return f'Olá {id(self)}' + +if __name__ == '__main__': + p = Pessoa() + print(id(p)) \ No newline at end of file From ff9ab8bf674f9c6d650e63140dff9d37ac5be646 Mon Sep 17 00:00:00 2001 From: leoschuch Date: Mon, 6 Jul 2020 13:26:25 -0300 Subject: [PATCH 3/7] =?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 | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/oo/pessoa.py b/oo/pessoa.py index ccb4632c3..06e50d57f 100644 --- a/oo/pessoa.py +++ b/oo/pessoa.py @@ -1,7 +1,11 @@ class Pessoa: + def __init__(self, nome=None, idade=35): + self.nome = nome + self.idade = idade + def cumprimentar(self): return f'Olá {id(self)}' if __name__ == '__main__': - p = Pessoa() - print(id(p)) \ No newline at end of file + p = Pessoa('Leonardo') + print(p.nome) \ No newline at end of file From b7f73214c62867b26786b367deb378cc7e9b3921 Mon Sep 17 00:00:00 2001 From: leoschuch Date: Mon, 6 Jul 2020 13:33:39 -0300 Subject: [PATCH 4/7] Criados atributos complexo: Filhos --- oo/pessoa.py | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/oo/pessoa.py b/oo/pessoa.py index 06e50d57f..a26e8cf2b 100644 --- a/oo/pessoa.py +++ b/oo/pessoa.py @@ -1,11 +1,13 @@ class Pessoa: - def __init__(self, nome=None, idade=35): + def __init__(self, *filhos, nome=None, idade=35): self.nome = nome self.idade = idade + self.filhos = list(filhos) def cumprimentar(self): return f'Olá {id(self)}' if __name__ == '__main__': - p = Pessoa('Leonardo') - print(p.nome) \ No newline at end of file + renzo = Pessoa(nome='Renzo') + luciano = Pessoa(renzo, nome='Luciano') + print(luciano.filhos) \ No newline at end of file From 609c9b7b73f4f3dd280dcbb947823229b1e10d09 Mon Sep 17 00:00:00 2001 From: leoschuch Date: Mon, 6 Jul 2020 13:42:08 -0300 Subject: [PATCH 5/7] =?UTF-8?q?Criado=20e=20removido=20atributo=20din?= =?UTF-8?q?=C3=A2mico=20de=20objeto=20do=20tipo=20Pessoa.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- oo/pessoa.py | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/oo/pessoa.py b/oo/pessoa.py index a26e8cf2b..efdf70960 100644 --- a/oo/pessoa.py +++ b/oo/pessoa.py @@ -10,4 +10,14 @@ def cumprimentar(self): if __name__ == '__main__': renzo = Pessoa(nome='Renzo') luciano = Pessoa(renzo, nome='Luciano') - print(luciano.filhos) \ No newline at end of file + print(luciano.filhos) + + # é possível criar um atributo em tempo real de execução: + luciano.sobrenome = 'Ramalho' + print(luciano.sobrenome) + + # é possível remover um atributo em tempo real de execução: + del luciano.filhos + + # para visualizar tudo de uma classe: + print(luciano.__dict__) From 0385307ad9e369a59a2e92cbb0089be157bdea02 Mon Sep 17 00:00:00 2001 From: leoschuch Date: Mon, 6 Jul 2020 14:03:37 -0300 Subject: [PATCH 6/7] Decorator --- oo/pessoa.py | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/oo/pessoa.py b/oo/pessoa.py index efdf70960..e52a3df34 100644 --- a/oo/pessoa.py +++ b/oo/pessoa.py @@ -1,4 +1,6 @@ class Pessoa: + olhos = 2 # atributo default ou de classe, que não irá consumir memória e ele serve para toda a classe + def __init__(self, *filhos, nome=None, idade=35): self.nome = nome self.idade = idade @@ -7,7 +9,20 @@ def __init__(self, *filhos, nome=None, idade=35): def cumprimentar(self): return f'Olá {id(self)}' + # método decorator abaixo: + @staticmethod + def metodo_estatico(): + return 42 + + @classmethod + def nome_e_atributos_de_classe(cls): + return f'{cls} - olhos {cls.olhos}' + if __name__ == '__main__': + + luciano = Pessoa(nome='Luciano') + print(Pessoa.cumprimentar(luciano)) + renzo = Pessoa(nome='Renzo') luciano = Pessoa(renzo, nome='Luciano') print(luciano.filhos) @@ -21,3 +36,8 @@ def cumprimentar(self): # para visualizar tudo de uma classe: print(luciano.__dict__) + + # exemplo do método estático @metodo_estático + print(Pessoa.metodo_estatico()) + # outro exemplo @ + print(Pessoa.nome_e_atributos_de_classe()) From 59cd54b07ac9892d3231fdf0894a7e9dc3bc75d2 Mon Sep 17 00:00:00 2001 From: leoschuch Date: Mon, 6 Jul 2020 14:45:14 -0300 Subject: [PATCH 7/7] =?UTF-8?q?Implementada=20a=20Dire=C3=A7=C3=A3o.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- oo/carro.py | 59 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 59 insertions(+) create mode 100644 oo/carro.py diff --git a/oo/carro.py b/oo/carro.py new file mode 100644 index 000000000..66601dff6 --- /dev/null +++ b/oo/carro.py @@ -0,0 +1,59 @@ +""""Você deve ser capaz de escrever uma classe carro que deve possuir 2 atributos compostos por outras classes: +1) motor +2) direção +O motor terá a responsabilidade de controlar a velocidade. +Ele oferece os seguintes atritubos: +1) Atributo de dado: velocidade +2) Método Acelerar que deverá incrementar a velocidade de uma unidade +3) Métido Frear que deverá decrementar a velocidade em 2 unidades +A Direção terá a responsabilidade de controlar a direção. Ela oferece os seguintes atributos: +1) Valor de direção com valores possiveis: Norte, Sul, Leste e Oeste +2) Metodo girar a Direita +3) Metodo girar a Esquerda + +Exemplo +>>> # Testando o motor +>>> motor = Motor() +>>> motor.velocidade +0 +>>>motor.acelerar() +>>>motor.velocidade +1 + + + + + +""" +# Criação das Constantes +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, LESTE: NORTE, SUL: LESTE, OESTE: SUL} + + 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] + +class Motor: + def __init__(self): + self.velocidade = 0 + + def acelerar(self): + self.velocidade += 1 + + def frear(self): + self.velocidade -= 2 + # função que não deixa ficar negativo. O maior valor será o 0: + self.velocidade = max(0, self.velocidade)