Olá pessoal estou estudando sobre o encapsulamento…
Mas nao consegui pegar a logica do negocio ainda… :oops:
Gostaria de uma ajuda ou um tutorial bem didatico para compreender…
Alguem saberia?
Obrigado galera!
Olá pessoal estou estudando sobre o encapsulamento…
Mas nao consegui pegar a logica do negocio ainda… :oops:
Gostaria de uma ajuda ou um tutorial bem didatico para compreender…
Alguem saberia?
Obrigado galera!
Já viu essa?
http://www.caelum.com.br/caelum/curso-11.jsp
Não sei se ela explica com clareza esse assunto :roll:
Vou tentar explicar, lá vai.
Encapsular seria a maneira de programar visando o futuro, ou seja, produzir códigos que sejam fáceis de modificar e de dar manutenções. Torna seu código flexível e com alta legibilidade. Em resumo é colocar a coisa certa no lugar certo e acrescentar níveis de acesso para que ninguém mexa onde não deve. Diminuindo portanto, o acoplamento de um código pois garante que o mesmo não tenha códigos soltos e repetidos por toda a aplicação. Bom, penso ser isso :oops:
ex sem encapsulamento.:
// class Conta nua como veio ao mundo
class Conta {
double valor 0.00;
String numeroConta "";
}
class Banco {
Conta minhaConta = new Conta();
minhaConta.valor = 1000.00; //adiciona valor diretamente no atributo do objeto
minhaConta.numeroConta = "1112";
}
//classe sem escrupulos de um hacker nub..rs
class ClasseDoMal {
Banco meuBanco = new Banco();
Conta contaFantasma = new Conta();
contaFantasma.valor = meuBanco.minhaConta.valor; //passa todo o valor da conta sem pedir autorização
meuBanco.minhaConta.valor = -2000 //e poe um debito de2000 para o dono da conta 1112
}
/**
* Isso é só um exemplo
*/
O que acontece ninguem garante que a conta ira ser acessada da forma certa pois os atributos estão abertos para acesso.
se a class Conta estivesse encapsulada não teria como outras classes acessarem os atributos de forma maldosa ou sem restrição. no nosso exemplo uma 3ºclasse acessa conta e copia o valor da conta e põe um um valor negativo da conta. Será que era pra fazer isso?
ex com encapsulamento:
[code]class Conta {
private double valor 0.00;
private String numeroConta “”;
public String saldo(){
sysout("conta : " +numeroConta + " Saldo : "+ valor );
}
public double retiraValor(double retira){
if(retira > valor) {
sysout(“Valor maior que o disponível”);
return 0;
} else {
sysout("Valor valor retirado: " + retira);
valor = valor-retira;
sysout("Novo Saldo: " + valor);
return retirado;
}
}
public void depositaValor(double deposito){
valor = valor+deposito;
}
}[/code]
com isso vc encapsulou os atributos da conta e para acessas o valor todo mundo terá que acessar o métodos saldo/retiraValor/depositaValor para manipular a conta e como o sene falou “…Em resumo é colocar a coisa certa no lugar certo e acrescentar níveis de acesso para que ninguém mexa onde não deve. …”
Até
eu escrevi um artigo sobre orientação a objetos, e tentei ser o mais claro possível.
tem um tópico falando sobre encapsulamento, e até agora, segundo algumas pessoas que afirmaram ter lido, está fácil de entender.
acesse
ah, por favor, deixe um comentário dizendo o que achou.
abraços