Duvida: Exercício iniciante (Casa do Código: JAVA)

Galera, primeiramente é um prazer participar do fórum!

Sou novo na área (Estou aprendendo ainda o básico sobre a linguagem) e gostaria de tirar uma dúvida.

Estou lendo e fazendo junto com o livro da casa do código (Desbravando Java e Orientação a Objetos) e existe uma parte na qual não estou conseguindo fazer com que o código compile corretamente.

É o seguinte:

public class Livro {
    String nome;
    String descricao;
    String isbn;
    private double valor;

void adicionarValor(double valor) {
this.valor = valor;
}

Usei o Private no VALOR e agora não consigo utilizar ele já que apenas a classe LIVRO tem o controle. Porém ao criar o adicionarValor continuo não conseguindo usar o livro.valor no meu código.

public class CadastroDeLivros {
    public static void main (String[] args) {
    
    Autor autor = new Autor();
    autor.nome = "Bruno Mazello";
    autor.cpf = "1321231321321";
    autor.email = "example@example.com";
    
    Livro livro = new Livro();
    livro.nome = "Java 8 Prático";
    livro.descricao = "Novos recursos de Linguagem";
    livro.valor = 59.90; // Não consigo utilizar.
    livro.isbn = "978-85-66250-46-6";
    
    livro.mostrarDetalhes();
    autor.detalhesAutor();
    
    Autor outroAutor = new Autor();
    outroAutor.nome = "José Silva";
    outroAutor.cpf = "088232131231231";
    outroAutor.email = "example@example.com";
    
    Livro outroLivro = new Livro();
    outroLivro.nome = "Lógica de Programação";
    outroLivro.descricao = "Crie seus próprios programas";
    outroLivro.valor = 59.90;
    outroLivro.isbn = "978-85-66250-22-0";
    
    outroLivro.mostrarDetalhes();
    outroAutor.detalhesAutor();                
}
}

Grato pela ajuda e desculpem a “simplicidade” já que ainda estou iniciando.

Abraços.

Olá Bruno, seja bem vindo ao forum!! Ps: sou novo aqui tbm

vamos lá, então como seu atributo ta como PRIVATE somente a classe Livro tem acesso a esse atributo, sugiro que você leia um pouco sobre get e set do java, os famosos métodos acesssores

dei uma pesquisada no forum é aqui tem uma explicação legal

qualquer duvida poste novamente!!

Faça como o amigo acima falou. Eu estou lendo esse livro também, estou no capítulo seguinte :smiley:

Mas respondendo a questão, quando você não usava o “private”, você possuía acesso direto aos atributos da classe Livro, por isso você conseguia colocar dessa forma;

Porém como você deixou o método privado, você não terá acesso direto à acesse atributo, então terá que passar o valor por parâmetro, usando o método chamado Set, ficando dessa forma;

livro.setValor(59.9);

Mas para funcionar você precisa ter criado o método Setter dele na classe Livro que seria:

public void setValor(double valor){
      this.valor = valor;
}

[]'s

Olá,

Tipos básicos são passados por valor e objetos são passados por referência.

Getter e setter são uma convenção, veja que foi utilizado adicionaValor para alterar o valor do atributo “valor”.

Essa convenção é bastante utilizada na plataforma Java EE, por exemplo: https://docs.oracle.com/javaee/7/tutorial/cdi-basic010.htm

Bruno, tenho esse código da faculdade, veja se te serve:
Principal.java

package principal;
public class Principal {
public static void main(String[] args) {
    // add new account
    Conta contaDiego = new Conta();
    contaDiego.nome ="Diego Adler";
    contaDiego.tipo = "CC";
    contaDiego.saldo = 0; 
    // fim add account 
    // add new movement
    contaDiego.depositar(200);
    contaDiego.extrato();
    contaDiego.sacar(15);
    contaDiego.extrato();
    contaDiego.transferir(199);
    contaDiego.extrato();
    //end of movement1
    
    Conta contaDiego0 = new Conta();
    contaDiego0.nome ="Antonio Alberto";
    contaDiego0.tipo = "CP";
    contaDiego0.saldo = 49.558; 
    // fim add account 
    // add new movement 
    contaDiego0.depositar(200520.22);
    contaDiego0.extrato();
    contaDiego0.sacar(18000.55);
    contaDiego0.extrato();
    contaDiego0.transferir(582.55);
    contaDiego0.extrato();
    //end of movement2
    
    Conta contaDiego10 = new Conta();
    contaDiego10.nome ="Antonio Carlos";
    contaDiego10.tipo = "CC";
    contaDiego10.saldo = -198.558; 
    // fim add account 
    // add new movement 
    contaDiego10.depositar(20.22);
    contaDiego10.extrato();
    contaDiego10.sacar(18000.55);
    contaDiego10.extrato();
    contaDiego10.transferir(582.55);
    contaDiego10.extrato();
    contaDiego10.transferir(2.85);
    contaDiego10.extrato();
    
    
    
    
    //Scanner entrada = new Scanner(System.in);
    //saldo = entrada.nextDouble();
    //saldo = saldo +valorDepositado;
    } //class
    } // public

Conta.java

          /* spencer aula 2 semestre */ //import java.util.Scanner;
package principal;

public class Conta {
String nome;
String tipo;
double saldo;
double valorDepositado;
double valorSaque;
double valorTransfere;

    void sacar(double valorSaque){
    if (valorSaque > saldo ) {
        System.out.println("***Voce não pode sacar - Saldo Insuficiente***");
    this.saldo = saldo;
    } else {
           this.saldo = saldo - valorSaque;
            System.out.println("|--------------------------------------------|");
            System.out.println("|   Valor Saque: R$ ........"+ valorSaque + "|");
            System.out.println("|--------------------------------------------|");
     } 
  }
    void transferir(double valorTransfere){ 
        if (valorTransfere > saldo ) {
            System.out.println("|--------------------------------------------|");
            System.out.println("|*Não Foi Possivel Realizar Sua Transferencia|");
            System.out.println("|--------  ***Saldo Insuficiente***  --------|");
            System.out.println("|--------------------------------------------|");
            System.out.println("|Valor Transferido: R$ ......"+ valorTransfere +" |");
            System.out.println("|--------------------------------------------|");
            this.saldo = saldo;
        }else{ 
            this.saldo = saldo - valorTransfere; 
            System.out.println("|--------------------------------------------|");
            System.out.println("|-----------C o m p r o v a n t e------------|");
            System.out.println("|--------------------------------------------|");
            System.out.println("|  Valor Transferido: R$ .......... "+ valorTransfere + " |"); 
            System.out.println("|--------------------------------------------|");
        }
        
        
}
    void depositar(double valorDepositado){
    //System.out.println("Olá, quanto vc quer depositar? \n");
    this.saldo = saldo + valorDepositado;
        System.out.println("|--------------------------------------------|");
        System.out.println("|-----------C o m p r o v a n t e------------|");
        System.out.println("|--------------------------------------------|");
        System.out.println("| Valor Depositado: R$..........." + valorDepositado + "|");
        System.out.println("|--------------------------------------------|");
    }
    void extrato(){
            System.out.println("* VOCÊ SOLICITOU UM EXTRATO *Sujeito a mudanças no decorrer do dia!  *");
            System.out.println("=========================== E X T R A T O ============================");
            System.out.println("Ola "  + nome);
            System.out.println("Seu saldo é R$: " + saldo);
            //System.out.println("Operação Escolhida foi" );
            System.out.println("Tipo de conta é " + tipo);
            // System.out.println ("Valor Transferido "+ valorTransfere);
            System.out.println("===========================     F I M       ============================");
        }
    }

a saída dele (output) fica parecido com isso:

|--------------------------------------------|

-----------C o m p r o v a n t e------------
Valor Depositado: R$…200.0
--------------------------------------------
  • VOCÊ SOLICITOU UM EXTRATO *Sujeito a mudanças no decorrer do dia! *
    =========================== E X T R A T O ============================
    Ola Diego Adler
    Seu saldo é R$: 200.0
    Tipo de conta é CC
    =========================== F I M ============================
    |--------------------------------------------|
    | Valor Saque: R$ …15.0|
    |--------------------------------------------|
  • VOCÊ SOLICITOU UM EXTRATO *Sujeito a mudanças no decorrer do dia! *
    =========================== E X T R A T O ============================
    Ola Diego Adler
    Seu saldo é R$: 185.0
    Tipo de conta é CC
    =========================== F I M ============================
    |--------------------------------------------|
    |*Não Foi Possivel Realizar Sua Transferencia|
    |-------- Saldo Insuficiente --------|
    |--------------------------------------------|
    |Valor Transferido: R$ …199.0 |
    |--------------------------------------------|
  • VOCÊ SOLICITOU UM EXTRATO *Sujeito a mudanças no decorrer do dia! *
    =========================== E X T R A T O ============================
    Ola Diego Adler
    Seu saldo é R$: 185.0
    Tipo de conta é CC
    =========================== F I M ============================
    |--------------------------------------------|
    |-----------C o m p r o v a n t e------------|
    |--------------------------------------------|
    | Valor Depositado: R$…200520.22|
    |--------------------------------------------|
  • VOCÊ SOLICITOU UM EXTRATO *Sujeito a mudanças no decorrer do dia! *
    =========================== E X T R A T O ============================
    Ola Antonio ALberto
    Seu saldo é R$: 200569.778
    Tipo de conta é CP
    =========================== F I M ============================
    |--------------------------------------------|
    | Valor Saque: R$ …18000.55|
    |--------------------------------------------|
  • VOCÊ SOLICITOU UM EXTRATO *Sujeito a mudanças no decorrer do dia! *
    =========================== E X T R A T O ============================
    Ola Antonio ALberto
    Seu saldo é R$: 182569.228
    Tipo de conta é CP
    =========================== F I M ============================
    |--------------------------------------------|
    |-----------C o m p r o v a n t e------------|
    |--------------------------------------------|
    | Valor Transferido: R$ … 582.55 |
    |--------------------------------------------|
  • VOCÊ SOLICITOU UM EXTRATO *Sujeito a mudanças no decorrer do dia! *
    =========================== E X T R A T O ============================
    Ola Antonio ALberto
    Seu saldo é R$: 181986.678
    Tipo de conta é CP
    =========================== F I M ============================
    |--------------------------------------------|
    |-----------C o m p r o v a n t e------------|
    |--------------------------------------------|
    | Valor Depositado: R$…20.22|
    |--------------------------------------------|
  • VOCÊ SOLICITOU UM EXTRATO *Sujeito a mudanças no decorrer do dia! *
    =========================== E X T R A T O ============================
    Ola Antonio Carlos
    Seu saldo é R$: -178.338
    Tipo de conta é CC
    =========================== F I M ============================
    Voce não pode sacar - Saldo Insuficiente
  • VOCÊ SOLICITOU UM EXTRATO *Sujeito a mudanças no decorrer do dia! *
    =========================== E X T R A T O ============================
    Ola Antonio Carlos
    Seu saldo é R$: -178.338
    Tipo de conta é CC
    =========================== F I M ============================
    |--------------------------------------------|
    |*Não Foi Possivel Realizar Sua Transferencia|
    |-------- Saldo Insuficiente --------|
    |--------------------------------------------|
    |Valor Transferido: R$ …582.55 |
    |--------------------------------------------|
  • VOCÊ SOLICITOU UM EXTRATO *Sujeito a mudanças no decorrer do dia! *
    =========================== E X T R A T O ============================
    Ola Antonio Carlos
    Seu saldo é R$: -178.338
    Tipo de conta é CC
    =========================== F I M ============================
    |--------------------------------------------|
    |*Não Foi Possivel Realizar Sua Transferencia|
    |-------- Saldo Insuficiente --------|
    |--------------------------------------------|
    |Valor Transferido: R$ …2.85 |
    |--------------------------------------------|
  • VOCÊ SOLICITOU UM EXTRATO *Sujeito a mudanças no decorrer do dia! *
    =========================== E X T R A T O ============================
    Ola Antonio Carlos
    Seu saldo é R$: -178.338
    Tipo de conta é CC
    =========================== F I M ============================
    CONSTRUÍDO COM SUCESSO (tempo total: 14 segundos)
    vou postar minha dúvida relativo ao uso desse tipo de estrutura também acho que o ajudará a entender como funciona esses atributos private x public . this.minha sugestão->Caso tenha conseguido algum sucesso no seu código edite a pergunta para esclarecer como chegou na resolução. (while {pode ser?}) ab

Aqui Bruno, acabei de postar minha dúvida relativo ao uso dos atributos das classes, como o public / private ou geters e seters também já que não entendo muito bem dessa parte.