Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Pq após encapsulamento alguns metodos funcionam e outros não

Na aula 5, video 1, é explicado que após o encapsulamento, não podemos modificar ou visualizar o saldo, e por isso criamos um novo método para mostrá-lo. Assim sendo, pq conseguimos usar o método "deposita", mas não conseguimos usar o método "saca"? Não estamos modificando o saldo ao fazer um depósito? Obrigada!

3 respostas

Bom dia Luiza, não entendi, porque nao conseguimos usar o saca? Pois o certo é deixar o saldo private e os métodos saca e deposita public para poder alterarmos o saldo passando por nossas regras de negócio

solução!

Ola Luiza, Sou novo em Java tambem, mas pelo que entendi no conceito de encapsulamento, ele restringe o nosso acesso ao ATRIBUTO diretamente nao permitindo que o programador mande qualquer valor para os atributos , limita-se o acesso a eles por métodos, que podem fazer uma checagem dos dados antes de modificar os atributos. Para ter acesso a estes atributos voce faz a invocacao de metodos getter e setters. Set para inserir ou modificar um valor.

Comentei no codigo abaixo Get para receber um valor de um atributo.

Classe Conta

public class Conta {
    private double saldo; // aqui voce definiu seu atributo como privado.
    int agencia;
    int numero;
    String titular;

    public void deposita(double valor) {
        this.saldo += valor;

    }
    public boolean saca(double valor) {

        if (this.saldo > valor) { 
            this.saldo -= valor;
            return true;
        } else
            return false;
    }

    public double getSaldo() {
        return saldo;
    }
    public void setSaldo(double saldo) {
        this.saldo = saldo;
    }

}

Classe TestaConta

public class CriaConta {

    public static void main(String[] args) {
        Conta primeiraconta = new Conta();
        primeiraconta.saldo = 200; // voce nao tem acesso DIRETO ao atributo saldo, pois o atributo tem o modificador PRIVATE, sendo assim voce nao pode mais usar o OBJETO.ATRIBUTO para acessar o atributo.
        primeiraconta.setSaldo(200); // voce consegue o atribuir valor 200 ao atributo SALDO com o metodo setSaldo
        System.out.println("Saldo: " + primeiraconta.saldo); // aqui tambem nao consegue pois o ATRIBUTO saldo é private
        System.out.println("Saldo: " + primeiraconta.getSaldo()); // usa o metodo getSaldo que retorna o valor do Atributo saldo.

O metodo saca ainda continua tendo acesso ao Atributo saldo. Espero que tenha ajudado.

Obrigada Igor! Agora ficou claro para mim :)