Duvida com Encapsulamento

8 respostas
Meth

Dei uma lida na apostila da caelum e fiquei com muita duvida…pesquisei na net e queria ter certeza…;
Como eu tenho mais contato com pascal,vou explicar como se fosse pascal…,
O encapsulamento eh a mesma coisa que retirar parte do codigo do programa principal(Public Class) e chama-los numa “funcao”(uma outra Class qualquer)…,

Newbie agradecido =D

8 Respostas

evertonsilvagomesjav
Meth:
Dei uma lida na apostila da caelum e fiquei com muita duvida...pesquisei na net e queria ter certeza...; Como eu tenho mais contato com pascal,vou explicar como se fosse pascal..., O encapsulamento eh a mesma coisa que retirar parte do codigo do programa principal(Public Class) e chama-los numa "funcao"(uma outra Class qualquer)...,

Newbie agradecido =D

Encapsulamento é vc "proteger" atributos de serem acessados diretamente.

Um exemplo basico, suponha que vc tenha um atributo do tipo int chamado idade. E que vc deseja que esse atributo seja validado antes de atribuir qualquer valor á ele.

Entao vc encapsula a variavel com métodos getters e setters. Tipo assim:

private int idade

public void setIdade(int idade){

if(idade >= 20){

this.idade = idade; // aqui vc faz a validação, verifica se idade e maior igual á 20.

}

}

public int getIdade(){

return this.idade;

}
V

Não… Encapsulamento é você proteger seus dados (variaveis de instancia) com acessos diretos.

exemplo:

class Pessoa {
   String nome;
}
class AcessaVariavel {
   
    Pessoa p = new Pessoa();
    p.nome = "victor";
}

Observe que você acessa ela diretamente, mas se você fazer isso

class Pessoa {
  private String nome;
}

Você não tem acesso a ela diretamente fora da mesma classe, somente atravês de metodos de acesso por isso dá uma lida em “javabean” você vai ver os métodos getters e setters que são utilizados para acessar e modificar. E também ler sobre modificadores de acesso.

class AcessaVariavel {
   
    Pessoa p = new Pessoa();
    p.nome = "victor"; // não funcionaria.
}
davidbuzatto

Encapsulamento vai um pouco além de proteger campos privados.
Encapsulamento é você esconder do usuário da classe (outra classe) a sua implementação, seja de um método ou de um construtor. Isso quer dizer que, por exemplo, não importa o que um determinado método faz internamente, o que importa é que ele funciona, ou seja, que faz o que se propõe a fazer. Um exemplo seria o método compareTo da interface Comparable. Você precisa implementar o método de forma que ele cumpra o contrato da interface. O que tem dentro dele, não importa, desde que o contrato seja seguido.

[]´s

evertonsilvagomesjav

Sim tem outros tipos de encapsulamento tb, com oum PrintWriter encapsular um BufferedWriter que por sua vez encapsula um FileWriter, mas acho que ele estava falando disso.

davidbuzatto

Isso que você está falando é um design pattern, o Decorator.
Não existem “tipos de encapsulamento”, encapsulamento é encapsulamento.

[]´s

Nicolas_Fernandes
evertonsilvagomesjava:
Encapsulamento é vc "proteger" atributos de serem acessados diretamente.

Um exemplo basico, suponha que vc tenha um atributo do tipo int chamado idade. E que vc deseja que esse atributo seja validado antes de atribuir qualquer valor á ele.

Entao vc encapsula a variavel com métodos getters e setters. Tipo assim:

private int idade

public void setIdade(int idade){

if(idade >= 20){

this.idade = idade; // aqui vc faz a validação, verifica se idade e maior igual á 20.

}

}

public int getIdade(){

return this.idade;

}

Validação no próprio POJO? Não fica meio incoerente isso?
Não seria mais coerente fazer classes POJO plano, nas quais você só tem o encapsulamento dos atributos de uma entidade do BD, cujas validações são feitas numa classe Service?

evertonsilvagomesjav
Nicolas Fernandes:
evertonsilvagomesjava:
Encapsulamento é vc "proteger" atributos de serem acessados diretamente.

Um exemplo basico, suponha que vc tenha um atributo do tipo int chamado idade. E que vc deseja que esse atributo seja validado antes de atribuir qualquer valor á ele.

Entao vc encapsula a variavel com métodos getters e setters. Tipo assim:

private int idade

public void setIdade(int idade){

if(idade >= 20){

this.idade = idade; // aqui vc faz a validação, verifica se idade e maior igual á 20.

}

}

public int getIdade(){

return this.idade;

}

Validação no próprio POJO? Não fica meio incoerente isso?
Não seria mais coerente fazer classes POJO plano, nas quais você só tem o encapsulamento dos atributos de uma entidade do BD, cujas validações são feitas numa classe Service?

LOL, isso foi um simples e humilde exemplo pro cara entender.

Nicolas_Fernandes
evertonsilvagomesjava:
Nicolas Fernandes:
evertonsilvagomesjava:
Encapsulamento é vc "proteger" atributos de serem acessados diretamente.

Um exemplo basico, suponha que vc tenha um atributo do tipo int chamado idade. E que vc deseja que esse atributo seja validado antes de atribuir qualquer valor á ele.

Entao vc encapsula a variavel com métodos getters e setters. Tipo assim:

private int idade

public void setIdade(int idade){

if(idade >= 20){

this.idade = idade; // aqui vc faz a validação, verifica se idade e maior igual á 20.

}

}

public int getIdade(){

return this.idade;

}

Validação no próprio POJO? Não fica meio incoerente isso?
Não seria mais coerente fazer classes POJO plano, nas quais você só tem o encapsulamento dos atributos de uma entidade do BD, cujas validações são feitas numa classe Service?

LOL, isso foi um simples e humilde exemplo pro cara entender.

Desculpa! hahaha
É que assustei quando vi >_<'

Criado 6 de setembro de 2010
Ultima resposta 6 de set. de 2010
Respostas 8
Participantes 5