Bom dia!
Estou com dificuldade de entender o seguinte:
Se protegemos as variáveis para que não seja simples acessá-las, qual o sentido de criar uma "propriedade" para deixar as variáveis como se não tivessem protegidas?
Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!
Bom dia!
Estou com dificuldade de entender o seguinte:
Se protegemos as variáveis para que não seja simples acessá-las, qual o sentido de criar uma "propriedade" para deixar as variáveis como se não tivessem protegidas?
Execelente pergunta Filipe, isso tem haver com um conceito de orientação a objetos chamado "Encapsulamento", existem muitas vantagens em encapsular seu atributo.
Vale resaltar que o que permite a alteração é a property "setter" que não é sempre necessario que seja inserida no codigo, segue um exemplo de um codigo onde apenas inseri o "@property" (getter) e tentei alterar a variavel "base" (em branco) e em seguida ocorreu um erro.
)
Agora perceba o que aconteceu com a altura que não recebe essa mesma property (getter):
O codigo se mantem caso eu faça uma alteração, ou seja está totalmente desprotegia e sem validação.
Perceba também no exemplo a seguir, que mesmo com o setter sua aplicação ficara mais segura pois ao definir ou redefinir um atributo onde ele foi aplicado, você consegue fazer validações, como no exemplo abaixo que verifica se o valor é maior que zero, caso contrario mostra uma mensagem.
DICA! Segue um artigo que explica muito bem isso, usando Python
Espero que ajude, bons estudos!
Muito bem explicado! Entendi perfeitamente e acredito que tenha ajudado outras pessoas também com a mesma dúvida.
Me ajudou muito. Obrigado!