From b1dfed556eb8c087b3e9cb8643e675c119b2c649 Mon Sep 17 00:00:00 2001 From: Wellington Pereira da Costa Date: Sun, 23 Jan 2022 19:35:23 -0300 Subject: [PATCH 01/11] My Commit --- oo/pessoa.py | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 oo/pessoa.py diff --git a/oo/pessoa.py b/oo/pessoa.py new file mode 100644 index 000000000..8ecd3b081 --- /dev/null +++ b/oo/pessoa.py @@ -0,0 +1,3 @@ +class Pessoa: + pass + From c3bfc555f7df0423fdee27a78293513ef7d252a9 Mon Sep 17 00:00:00 2001 From: Wellington Pereira da Costa Date: Sun, 23 Jan 2022 20:02:34 -0300 Subject: [PATCH 02/11] My commit --- oo/pessoa.py | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/oo/pessoa.py b/oo/pessoa.py index 8ecd3b081..851161e6f 100644 --- a/oo/pessoa.py +++ b/oo/pessoa.py @@ -1,3 +1,9 @@ class Pessoa: - pass + def cumprimentar(self): + return f'Oi! {id(self)}' +if __name__ == '__main__': + p = Pessoa() + print(Pessoa.cumprimentar(p)) + print(id(p)) + print(p.cumprimentar()) From 735becc9164834687caca2cfe389e74c0b0b5165 Mon Sep 17 00:00:00 2001 From: Wellington Pereira da Costa Date: Sun, 23 Jan 2022 20:10:18 -0300 Subject: [PATCH 03/11] =?UTF-8?q?Criados=20os=20atributos=20de=20inst?= =?UTF-8?q?=C3=A2ncia=20nome=20e=20idade?= 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 851161e6f..c245bd609 100644 --- a/oo/pessoa.py +++ b/oo/pessoa.py @@ -1,9 +1,19 @@ class Pessoa: + + def __init__(self, nome=None, idade=None): + self.nome = nome + self.idade = idade + + def cumprimentar(self): return f'Oi! {id(self)}' if __name__ == '__main__': - p = Pessoa() + p = Pessoa('Luciano') print(Pessoa.cumprimentar(p)) print(id(p)) print(p.cumprimentar()) + print(p.nome) + p.nome = 'Joaquim' + print(p.nome) + print(p.idade) \ No newline at end of file From 7f6f86e91e6d09caf3ef95fc39b89e453a75ef91 Mon Sep 17 00:00:00 2001 From: Wellington Pereira da Costa Date: Sun, 23 Jan 2022 20:18:22 -0300 Subject: [PATCH 04/11] Criado o atributo complexo filhos (lista) --- oo/pessoa.py | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/oo/pessoa.py b/oo/pessoa.py index c245bd609..98bbb1b47 100644 --- a/oo/pessoa.py +++ b/oo/pessoa.py @@ -1,19 +1,20 @@ class Pessoa: - def __init__(self, nome=None, idade=None): + def __init__(self, *filhos:list, nome=None, idade=None): self.nome = nome self.idade = idade + self.filhos = list(filhos) def cumprimentar(self): return f'Oi! {id(self)}' if __name__ == '__main__': - p = Pessoa('Luciano') - print(Pessoa.cumprimentar(p)) - print(id(p)) - print(p.cumprimentar()) - print(p.nome) - p.nome = 'Joaquim' - print(p.nome) - print(p.idade) \ No newline at end of file + joaquim = Pessoa(nome='Joaquim') + lucioano = Pessoa(joaquim, nome='Luciano') + print(Pessoa.cumprimentar(lucioano)) + print(id(lucioano)) + print(lucioano.cumprimentar()) + print(lucioano.nome) + for filho in lucioano.filhos: + print(f'Filho: {filho.nome}') \ No newline at end of file From b04098bbe1c932af1960c060a3b3522dfc19a762 Mon Sep 17 00:00:00 2001 From: Wellington Pereira da Costa Date: Sun, 23 Jan 2022 20:26:38 -0300 Subject: [PATCH 05/11] =?UTF-8?q?Criando=20e=20removendo=20atributo=20din?= =?UTF-8?q?=C3=A2mico=20(Pessoa)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- oo/pessoa.py | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/oo/pessoa.py b/oo/pessoa.py index 98bbb1b47..9383690ef 100644 --- a/oo/pessoa.py +++ b/oo/pessoa.py @@ -17,4 +17,10 @@ def cumprimentar(self): print(lucioano.cumprimentar()) print(lucioano.nome) for filho in lucioano.filhos: - print(f'Filho: {filho.nome}') \ No newline at end of file + print(f'Filho: {filho.nome}') + + lucioano.sobrenome = 'Ramalho' + del lucioano.filhos + print(lucioano.__dict__) + print(joaquim.__dict__) + \ No newline at end of file From b881a0127ed7d8cdd9bed5ba3052512055ebab92 Mon Sep 17 00:00:00 2001 From: Wellington Pereira da Costa Date: Sun, 23 Jan 2022 21:32:47 -0300 Subject: [PATCH 06/11] Criado atributo de classe olhos --- oo/pessoa.py | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/oo/pessoa.py b/oo/pessoa.py index 9383690ef..dba8a6022 100644 --- a/oo/pessoa.py +++ b/oo/pessoa.py @@ -1,5 +1,8 @@ class Pessoa: + #Atributos de classe são alocados apenas uma vez na memória + olhos = 2 + #Atributos de instância são alocados sempre que um objeto é criado def __init__(self, *filhos:list, nome=None, idade=None): self.nome = nome self.idade = idade @@ -21,6 +24,12 @@ def cumprimentar(self): lucioano.sobrenome = 'Ramalho' del lucioano.filhos + lucioano.olhos = 1 + del lucioano.olhos print(lucioano.__dict__) print(joaquim.__dict__) - \ No newline at end of file + Pessoa.olhos = 3 + print(Pessoa.olhos) + print(lucioano.olhos) + print(joaquim.olhos) + print(id(Pessoa.olhos), id(lucioano.olhos), id(joaquim.olhos)) \ No newline at end of file From d38bb08c93691cfd0b85bf598146a80ff24ae8ee Mon Sep 17 00:00:00 2001 From: Wellington Pereira da Costa Date: Sun, 23 Jan 2022 21:47:25 -0300 Subject: [PATCH 07/11] =?UTF-8?q?Met=C3=B3do=20de=20classe?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- oo/pessoa.py | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/oo/pessoa.py b/oo/pessoa.py index dba8a6022..531953016 100644 --- a/oo/pessoa.py +++ b/oo/pessoa.py @@ -8,10 +8,20 @@ def __init__(self, *filhos:list, nome=None, idade=None): self.idade = idade self.filhos = list(filhos) - def cumprimentar(self): return f'Oi! {id(self)}' + + #Método de classe usando o decorator @staticmethod + @staticmethod + def metodo_estatico(): + return 42 + + #Método de classe usando o decorator @staticmethod + @classmethod + def get_nome_atributos_de_classe(cls): + return f'Nome da classe: {cls} - Olhos: {cls.olhos}' + if __name__ == '__main__': joaquim = Pessoa(nome='Joaquim') lucioano = Pessoa(joaquim, nome='Luciano') @@ -32,4 +42,6 @@ def cumprimentar(self): print(Pessoa.olhos) print(lucioano.olhos) print(joaquim.olhos) - print(id(Pessoa.olhos), id(lucioano.olhos), id(joaquim.olhos)) \ No newline at end of file + print(id(Pessoa.olhos), id(lucioano.olhos), id(joaquim.olhos)) + print(Pessoa.metodo_estatico(), lucioano.metodo_estatico()) + print(Pessoa.get_nome_atributos_de_classe(), lucioano.get_nome_atributos_de_classe()) From ed92953649db96bb78241d15b50f025a9015d38b Mon Sep 17 00:00:00 2001 From: Wellington Pereira da Costa Date: Sun, 23 Jan 2022 23:12:38 -0300 Subject: [PATCH 08/11] =?UTF-8?q?Implementa=C3=A7=C3=A3o=20da=20classe=20D?= =?UTF-8?q?irecao()?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- oo/carro.py | 76 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 76 insertions(+) create mode 100644 oo/carro.py diff --git a/oo/carro.py b/oo/carro.py new file mode 100644 index 000000000..e8876352d --- /dev/null +++ b/oo/carro.py @@ -0,0 +1,76 @@ +""" +Criar uma classe Carro com os seguites atributos, esses atributos serão outras classes: + 1 - Motor + 2 - Direção + +O Motor terá a responsabilidade de controlar a velocidade. +Composição: + 1 - Atributo de dado velocidade + 2 - Método acelerar, que deverar incrementar a velocidade em uma unidade + 3 - Método frear, que deverá diminuir a velocidade em duas unidades + +A Direção terá a responsabilidade de controlar o direcionamento do Carro. +Composição: + 1 - Atributo valor da direção. Valores possíveis: Norte, Sul, Leste, Oeste. Valor padrão: Norte + 2 - Método virar a direita + 3 - Método virar a esquerda + Obs. Norte (Cima), Sul (Baixo), Leste(Esquerda), Oeste(Direita) + +""" + +""" +Estudo de composição +""" + +class Carro: + pass + +class Motor: + def __init_(self): + self.velocidade = 0 + + def acelerar(self): + self.velocidade += 1 + + def frear(self): + self.velocidade -= 1 + + if self.velocidade < 0: + self.velocidade = 0 + +class Direcao: + direcoes_possiveis = ('Norte', 'Leste', 'Sul', 'Oeste') + + def __init__(self): + self.sentido = 'Norte' + + def virar_a_direita(self): + indice = self.direcoes_possiveis.index(self.sentido) + if indice == len(self.direcoes_possiveis)-1: + self.sentido = self.direcoes_possiveis[0] + + else: + self.sentido = self.direcoes_possiveis[indice + 1] + + + def virar_a_esquerda(self): + indice = self.direcoes_possiveis.index(self.sentido) + if indice == 0: + self.sentido = self.direcoes_possiveis[-1] + else: + self.sentido = self.direcoes_possiveis[indice - 1] + + +if __name__ == '__name__': + + d = Direcao() + + print(d.direcoes_possiveis, d.sentido) + for item in range(5): + d.virar_a_direita() + print(d.direcoes_possiveis, 'Direita', d.sentido) + + for item in range(5): + d.virar_a_esquerda() + print(d.direcoes_possiveis, 'Esquerda', d.sentido) + From 5ff112309fb36f26df4f20f6bad3e0936158766b Mon Sep 17 00:00:00 2001 From: Wellington Pereira da Costa Date: Mon, 24 Jan 2022 00:00:01 -0300 Subject: [PATCH 09/11] Implementar a classe Carro --- oo/carro.py | 75 ++++++++++++++++++++++++++++++++++++++++++++++------- 1 file changed, 65 insertions(+), 10 deletions(-) diff --git a/oo/carro.py b/oo/carro.py index e8876352d..c5e99ae51 100644 --- a/oo/carro.py +++ b/oo/carro.py @@ -16,33 +16,70 @@ 3 - Método virar a esquerda Obs. Norte (Cima), Sul (Baixo), Leste(Esquerda), Oeste(Direita) -""" """ -Estudo de composição -""" + + +#Estudo de composição + class Carro: - pass + + 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 sendito(self): + return self.direcao.sentido + + + def virar_a_direita(self): + return self.direcao.virar_a_direita() + + + def virar_a_esquerda(self): + return self.direcao.virar_a_esquerda() + class Motor: - def __init_(self): + + def __init__(self): self.velocidade = 0 + def acelerar(self): self.velocidade += 1 + return f'Acelerando. Velocidade: {self.velocidade}' + def frear(self): - self.velocidade -= 1 + self.velocidade -= 2 if self.velocidade < 0: self.velocidade = 0 + return f'Freando. Velocidade atual: {self.velocidade}' + + class Direcao: direcoes_possiveis = ('Norte', 'Leste', 'Sul', 'Oeste') - def __init__(self): - self.sentido = 'Norte' + def __init__(self, sentido='Norte'): + self.sentido = sentido + def virar_a_direita(self): indice = self.direcoes_possiveis.index(self.sentido) @@ -61,16 +98,34 @@ def virar_a_esquerda(self): self.sentido = self.direcoes_possiveis[indice - 1] -if __name__ == '__name__': +if __name__ == '__main__': + + #Teste classe Direção + """ + m = Motor() + print(m.acelerar()) + print(m.acelerar()) + print(m.acelerar()) + print(m.frear()) + print(m.frear()) + print(m.frear()) + + #Teste classe Direção + d = Direcao() print(d.direcoes_possiveis, d.sentido) for item in range(5): d.virar_a_direita() - print(d.direcoes_possiveis, 'Direita', d.sentido) + print(d.direcoes_possiveis, 'Direita ', d.sentido) for item in range(5): d.virar_a_esquerda() print(d.direcoes_possiveis, 'Esquerda', d.sentido) + """ + carro = Carro(Direcao(), Motor()) + print(carro.calcular_velocidade) + carro.acelerar() + carro.frear() From 4fd7048683331a52451b9f01af3cd98b855acc3e Mon Sep 17 00:00:00 2001 From: Wellington Pereira da Costa Date: Mon, 24 Jan 2022 00:12:20 -0300 Subject: [PATCH 10/11] =?UTF-8?q?Implementa=C3=A7=C3=A3o=20da=20classe=20C?= =?UTF-8?q?arro()?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- oo/carro.py | 30 ++++++++++++++++++++++++------ 1 file changed, 24 insertions(+), 6 deletions(-) diff --git a/oo/carro.py b/oo/carro.py index c5e99ae51..3bb350d26 100644 --- a/oo/carro.py +++ b/oo/carro.py @@ -35,14 +35,14 @@ def calcular_velocidade(self): def acelerar(self): - self.motor.acelerar() + return self.motor.acelerar() def frear(self): - self.motor.frear() + return self.motor.frear() - def sendito(self): + def sentido(self): return self.direcao.sentido @@ -75,6 +75,7 @@ def frear(self): class Direcao: + direcoes_possiveis = ('Norte', 'Leste', 'Sul', 'Oeste') def __init__(self, sentido='Norte'): @@ -101,7 +102,6 @@ def virar_a_esquerda(self): if __name__ == '__main__': #Teste classe Direção - """ m = Motor() print(m.acelerar()) print(m.acelerar()) @@ -123,9 +123,27 @@ def virar_a_esquerda(self): for item in range(5): d.virar_a_esquerda() print(d.direcoes_possiveis, 'Esquerda', d.sentido) - """ carro = Carro(Direcao(), Motor()) - print(carro.calcular_velocidade) + print(carro.calcular_velocidade()) + carro.acelerar() + print(carro.calcular_velocidade()) carro.acelerar() + print(carro.calcular_velocidade()) + carro.acelerar() + print(carro.calcular_velocidade()) + carro.frear() + print(carro.calcular_velocidade()) carro.frear() + print(carro.calcular_velocidade()) + + print(carro.sentido()) + carro.virar_a_direita() + print(carro.sentido()) + carro.virar_a_direita() + print(carro.sentido()) + carro.virar_a_direita() + print(carro.sentido()) + carro.virar_a_direita() + print(carro.sentido()) + \ No newline at end of file From ce6268f38743e49210b7d6b56efbcd9b1eeed5c9 Mon Sep 17 00:00:00 2001 From: Wellington Pereira da Costa Date: Wed, 26 Jan 2022 10:52:14 -0300 Subject: [PATCH 11/11] Print(1) --- oo/pessoa.py | 1 + 1 file changed, 1 insertion(+) diff --git a/oo/pessoa.py b/oo/pessoa.py index 531953016..bedfa3329 100644 --- a/oo/pessoa.py +++ b/oo/pessoa.py @@ -32,6 +32,7 @@ def get_nome_atributos_de_classe(cls): for filho in lucioano.filhos: print(f'Filho: {filho.nome}') + print(1) lucioano.sobrenome = 'Ramalho' del lucioano.filhos lucioano.olhos = 1