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.
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
Faça como o amigo acima falou. Eu estou lendo esse livro também, estou no capítulo seguinte
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;
}
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.