š Orientação a Objetos -- Visibilidade e Encapsulamento (Declaração e Uso)
Introduçãoā
Observe o seguinte código de exemplo relativo à declaração da classe Aluno, definição da visibilidade de atributos e métodos, bem como os objetivos do encapsulamento.
š» Código Completoā
Arquivo: Aluno.js
01 // Arquivo criado em projeto no www.stackblitz.com denominado Aluno.js
02 // Arquivo criado dentro de uma pasta /objetos/escola na raiz do projeto
03 // Objetivo do exemplo: demonstrar conceitos de visibilidade e encapsulamento
04 class Aluno {
05 #matricula; // atributo privado
06 #curso; // atributo privado
07 escola; // atributo pĆŗblico
08 setMatricula(matricula) {
09 this.#matricula = matricula;
10 }
11 getMatricula() {
12 return this.#matricula;
13 }
14 setCurso(curso) {
15 this.#curso = curso;
16 }
17 getCurso() {
18 return this.#curso;
19 }
20 }
21 module.exports = Aluno;
š ComentĆ”rios e ExplicaƧƵes Linha a Linhaā
Linhas 01--03ā
Apresentam informações gerais sobre o arquivo, sua localização no projeto e o objetivo do exemplo.
Linha 04ā
Declara a classe Aluno.
Linhas 05--07ā
Declaram os atributos da classe, sendo #matricula e #curso privados
e escola pĆŗblico.
Linhas 08--10ā
Declaram o mƩtodo setMatricula(), responsƔvel por atribuir um valor ao
atributo privado #matricula.
Linhas 11--13ā
Declaram o mƩtodo getMatricula(), responsƔvel por retornar o valor
armazenado no atributo #matricula.
Linhas 14--16ā
Declaram o mƩtodo setCurso(), responsƔvel por atribuir um valor ao
atributo privado #curso.
Linhas 17--19ā
Declaram o mƩtodo getCurso(), responsƔvel por retornar o valor
armazenado no atributo #curso.
Linhas 20--21ā
Encerram a definição da classe e exportam o módulo para reutilização.
š» Código Completoā
Arquivo: usaAluno.js
01 // Arquivo criado em projeto no www.stackblitz.com denominado usaAluno.js
02 // Para executar: node ./objetos/usaAluno.js
03 const Aluno = require('./escola/Aluno');
04 const joao = new Aluno();
05 // joao.#matricula = 1234; // ERRO
06 joao.escola = "IFB";
07 joao.setMatricula(12345);
08 joao.setCurso("Programação de FrontEnd");
09 console.log(joao.getMatricula());
10 console.log(joao.getCurso());
11 console.log(`Escola : ${joao.escola}`);
š ComentĆ”rios e ExplicaƧƵes Linha a Linhaā
Linhas 01--02ā
Apresentam informações sobre o arquivo e o comando de execução.
Linha 03ā
Importa a classe Aluno.
Linha 04ā
Cria uma instância da classe Aluno.
Linha 05ā
Demonstra uma tentativa de acesso direto a um atributo privado, resultando em erro.
Linhas 06--08ā
Atribuem valores ao atributo pĆŗblico escola e aos atributos privados
por meio dos mƩtodos set.
Linhas 09--11ā
Exibem no terminal os valores armazenados utilizando os mƩtodos get e
o atributo pĆŗblico.
š Conceitos-Chave Envolvidosā
Conceito Explicação
class Estrutura para criação de objetos
#atributo Atributo privado (ES2022+)
Encapsulamento Protege dados e controla acesso
Visibilidade PĆŗblico x Privado
set / get MƩtodos de acesso
module.exports Exportação de classe
require() Importação de módulo
new Criação de instância
Template string Interpolação com ${}
š” Dicas do Professorā
- Use atributos privados para proteger dados sensĆveis.
- Sempre acesse dados privados por meio de getters e setters.
- ES2022+ introduziu
#para atributos privados. - Prefira template strings para concatenação.