Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Andersonjb

Encapsulamento

Recommended Posts

E ai, pessoal, beleza? Eu queria tirar uma duvida sobre encapsulamento. Qual e a sua vantagem? Por exemplo: eu posso ter uma classe com objetos publicos e privados, no caso dos privados, eu nao poderia utilizar os objetos da classe fora das funçoes membros, certo? E nas publicas , eu poderia utilizar os objetos em qualquer lugar do programa. Mas qual e a vantagem de eu utilizar um objeto como privado, se eu nao posso utiliza-lo mais em nenhuma parte do programa?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Quando se fala em membros públicos e privados, refere-se, geralmente, a atributos e métodos. As boas práticas de programação OO aconselham que atributos (propriedades) sejam sempre privados. Quanto aos métodos, você só deixará como públicos aqueles que podem ser utilizados através do objeto/classe. As vezes é útil criar uma função (método) auxiliar que será utilizada por um outro método, mas que não necessita de ser utilizada externamente. Considere um método de uma classe que lê um arquivo texto, tendo como argumento o caminho do arquivo. Sua definição seria lerTexto(String arquivo). Agora, imagine que esse método faz utilização de uma função chamada existeArquivo(String arquivo), que retorna true ou false dependendo se o arquivo existe ou não. Nesse caso, pode ser que você não queira que existeArquivo() seja visível externamente. Portanto, lerTexto() seria public (obviamente) e existeArquivo() seria private. Como ambas estariam na mesma classe, ela seriam vistas reciprocamente. Todavia, só a primeira seria vista por um objeto (ou através da classe, se for static).

E, é claro que não faria mal algum deixar existeArquivo() como public... (aliás, existem linguagens nas quais não existe essa noção de visibilidade, e todos os métodos e propriedades são públicos... nesse caso, você só utiliza o que precisa e pronto. :) Mais lógico, não?).

 

Abraços,

 

Graymalkin

Compartilhar este post


Link para o post
Compartilhar em outros sites

A vatagem de utlizar atributos privados nas classes é q nenhuma outra classe vai poder alterar o atributo pertencente àquela classe.....

Considere a classe:

public class Carro{     private String cor;     private String motorista;         public void setCor(String cor)     {          this.cor = cor;     }     public void setMotorista(String motorista)     {          this.motorista = motorista;     }     public String getCor()     {          return this.cor;     }     public String getMotorista()     {          return this.motorista;     }}
Nenhum método fora da classe poderá alterar os atributos cor e motorista da classe carro. Porém, se for necessária a alteração dos atributos dessa classe, é necessário q sejam chamados os métodos setCor ou setMotorista, que alterarão os atributos da classe.

Esse recurso facilita a integração das classes e dimunue a incidência de erros qndo forem necessárias alterações.

 

Beijos...

Dani

Compartilhar este post


Link para o post
Compartilhar em outros sites

Puxa, valeu, pessoal, entendi tudinho. E deixa eu aproveita a carona: A principal diferença de structs e class e que as class suportam funçoes e membros privados, ne, ou eu estou enganado?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ambas, struct e class, suportam tanto membros públicos como privados. A diferença é que os membros de struct, por padrão, são públicos e os membros de class, por padrão, são privados. Todavia, *nada* impede que você explicite que determinados membros devem ser públicos e que outros devem ser privados, tanto em uma struct quanto em uma class. Se você não especificar nada, valem os padrões (struct -> públicos, class -> privados).Abraços,Graymalkin

Compartilhar este post


Link para o post
Compartilhar em outros sites

Entao, quer dizer que se eu estiver fazendo um programa, nao faz muita diferença se eu escolher entre struct e class, ja que so muda a padronização entre os dois?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Entao, quer dizer que se eu estiver fazendo um programa, nao faz muita diferença se eu escolher entre struct e class, ja que so muda a padronização entre os dois?

<{POST_SNAPBACK}>

Exato. http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

 

Abraços,

 

Graymalkin

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.