Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Aula 05: Getters e Setters - Curso Python 3: Introdução a orientação a objetos

Durante o primeiro vídeo da aula 05 o professor Nico disse que utilizamos a nomenclatura padrão nos métodos, sendo estes:

Get quando precisamos "buscar" uma informação;

Set quando precisamos "alterar" uma informação;

Fiquei com dúvida pois no programa desenvolvido em aula, os métodos saca / deposita / transfere, não deveriam ser alterados para set_saca / set_deposita / set_transfere, respectivamente?

O código utilizado é:

 def saca(self, valor):
        self.__saldo -= valor

    def deposita(self, valor):
        self.__saldo += valor

    def transfere(self, valor, destino):
        self.saca(valor)
        destino.deposita(valor)

Visto que estes códigos objetivam alterar o "saldo" do objeto?

Sou iniciante na programação sendo este meu primeiro contato com orientação a objetos, por isso tive essa dúvida, que imagino ser algo básico...

2 respostas
solução!

Olá, Guilherme! Como vai?

A ideia dos métodos get e set é permitir que atributos privados da classe possam ser buscados/modificados fora dela - sendo que devem ser criados conforme necessidade. A sintaxe básica é set_nome-do-atributo e get_nome-do-atributo.

Lembrando que os métodos de negócio são diferentes dos getters e setters; por isso que ao invés de termos set_saldo, temos saca, deposita e transfere - pois para cada uma das operações o saldo será modificado conforme a regra de negócio.

Talvez sua dúvida tenha vindo por entender que os termos get e set são padrão para todos os métodos, quando na verdade são utilizados apenas para aqueles que buscam/modificam os atributos "diretamente", normalmente sem aplicar regras de negócio.

Esse post do blog da Caelum fala sobre getterse setters. Embora esteja em Java, o que importa é o conceito, talvez os primeiros trechos dele possam ajudar a esclarecer melhor - o final entra em alguns tópicos mais profundos que no momento possam não ser tão interessantes para você.

Consegui te ajudar?

Abraços e bons estudos!

Bom dia Gabriel,

Sim, conseguiu me ajudar, muito obrigado. Realmente, durante a aula eu entendi que deveria aplicar get e set para todos os métodos que alterassem os atributos, independente da regra de negócio. Vou ler o posto que você encaminhou.

Novamente, muito obrigado.