Encapsulamento - Duvidas

[size=12][size=18]Amigos,sou novo por aqui e gostaria da ajuda de vc’s para eslarecer sobre encapsulamento. Como devo aplicar o princípio de encapsulamento no codigo abaixo?[/size][/size]

public class ContaCorrente {

public String titular;
public double saldo;

public ContaCorrente( String nomeTitular, double valorInicial ) {

titular = nomeTitular;
saldo = valorInicial;
}

public void depositar( double valor ) {

saldo = saldo + valor;
}

public void sacar( double valor ) {

if( ( saldo - valor ) > 0 ) {

saldo = saldo - valor;
}
else {

System.out.println( “Saldo insuficiente.” );
}
}
}

public class Questao4 {

public static void main( String[] args ) {

ContaCorrente conta = new ContaCorrente( “Mauricio”, 1000 );

conta.depositar( 23.98 );
conta.sacar( 129 );
conta.sacar( 658 );

imprimirExtrato( conta );
}

public static void imprimirExtrato( ContaCorrente conta ) {

System.out.println( "Nome titular: " + conta.titular );
System.out.println( "Saldo: " + conta.saldo );
}
}

Agradeço desde de já a ajuda de todos!

Amigo, acho que vc está fazendo o exemplo da apostila da caelum, certo? Se sim, aguarde mais um pouco que logo logo esse conceito será introduzido. Mas se não, vc tem que declarar seus atributos como private e criar métodos get e set para eles.

Espero ter ajudado! :wink:

Bom deixa eu ver se ti ajudo e vc aplica ai no seu algoritmo (alguem me corrija se estiver errado)

encapsulamento é você criar as suas variaveis privadas e para atribuir valores a ela vc deverá utilizar metodos:
set = atribuir o valor a variavel
get = pega o conteúdo da variável

tb utilizar o this para atribuir o valor a variável. Na verdade o this serve para dizer que é na variável private que deverá ser setado o valor:

vou dar um exemplo aqui:

[code]public class Pessoa{

private String nome; //métodos privados
private int idade;

*/####################################

Métodos get e set, que vao inserir e recolher os dados.#

Fique atento ao get e set que deverão ser feitos desta

forma pra ficar organizado (eu faço desta forma)

####################################*/

public setNome(String nome){
this.nome=nome;
}
public getNome(){
return(this.nome);
}

public setIdade(int idade){
this.idade = idade;
}
public getIdade(){
return(this.idade);
}
[/code]
ai depois você utiliza os métodos aqui mesmo.

Qualquer coisa coloca ai que eu tento ti ajudar

Ahhhhhhhhh valeu mesmo henry. Ao chegar em casa vou tentar implementar com mais calma.

Ta uma correria aqui no trabalho agora…

Muito obrigado!!!

[quote]Bom deixa eu ver se ti ajudo e vc aplica ai no seu algoritmo (alguem me corrija se estiver errado)

encapsulamento é você criar as suas variaveis privadas e para atribuir valores a ela vc deverá utilizar metodos:
set = atribuir o valor a variavel
get = pega o conteúdo da variável

tb utilizar o this para atribuir o valor a variável. Na verdade o this serve para dizer que é na variável private que deverá ser setado o valor:

vou dar um exemplo aqui: [/quote]

Muito boa explicação!!!

Lembre-se que encapsulamento não é só deixar campos como private e criar getters/setters que só servem para aumentar o código.

Normalmente, controlar o acesso aos campos com getters e setters ajudam a prevenir a consistência do seu objeto. Por exemplo:

...

ArrayList<Integer> lista;

public void setLista(ArrayList<Integer> novaLista)
{
        if(novaLista != null)
                lista = novaLista;

        else
                 // Decide como tratar
}

...

exatamente, mas geralmente eu trato os parametros recebidos em outros métodos, não no get e set porque amarra muito funções que podem ser utilizadas em outros parametros.

nao sei se é certo mas tento sempre fazer desta forma

Seria + ou - isso… ainda não entendi muito bem!!!

public class ContaCorrente {

private String titular;
private double saldo;

public setContaCorrente( String nomeTitular, double valorInicial ) {

titular = nomeTitular;
saldo = valorInicial;
}

public void setDepositar( double valor ) {

saldo = saldo + valor;
}

public void setSacar( double valor ) {

if( ( saldo - valor ) > 0 ) {

saldo = saldo - valor;
}
else {

System.out.println( “Saldo insuficiente.” );
}
}
}

Amigos, continuo com dúvidas em como implementar esse código, utilizando encapsulamento.

Desculpem minha insistencia no assunto, mas acho esse forum execelente para estudar e tirar dúvidas. Ja que sou iniciante.

Muito obrigado.

[quote=mickey][size=12][size=18]Amigos,sou novo por aqui e gostaria da ajuda de vc’s para eslarecer sobre encapsulamento. Como devo aplicar o princípio de encapsulamento no codigo abaixo?[/size][/size]

public class ContaCorrente {

public String titular;
public double saldo;

public ContaCorrente( String nomeTitular, double valorInicial ) {

titular = nomeTitular;
saldo = valorInicial;
}

public void depositar( double valor ) {

saldo = saldo + valor;
}

public void sacar( double valor ) {

if( ( saldo - valor ) > 0 ) {

saldo = saldo - valor;
}
else {

System.out.println( “Saldo insuficiente.” );
}
}
}

public class Questao4 {

public static void main( String[] args ) {

ContaCorrente conta = new ContaCorrente( “Mauricio”, 1000 );

conta.depositar( 23.98 );
conta.sacar( 129 );
conta.sacar( 658 );

imprimirExtrato( conta );
}

public static void imprimirExtrato( ContaCorrente conta ) {

System.out.println( "Nome titular: " + conta.titular );
System.out.println( "Saldo: " + conta.saldo );
}
}

Agradeço desde de já a ajuda de todos![/quote]

http://www.guj.com.br/posts/list/50115.java dar uma olhada :smiley:

Isso não é encapsulamento: http://blog.fragmental.com.br/2006/03/04/fowler-e-getters/

[quote=henry.everton]exatamente, mas geralmente eu trato os parametros recebidos em outros métodos, não no get e set porque amarra muito funções que podem ser utilizadas em outros parametros.

nao sei se é certo mas tento sempre fazer desta forma[/quote]

Não importa se é implementado n o copro do setter ou não, o que importa é que ao ser definido (‘setado’) um valor este seja verificado para que seu objeto não caia em um estado inválido.