Olá!
Tenho dúvida nessa questão.
Alguem poderia me ajudar?
Na verdade, eu até sei usar os argumentos, mas não consigo imaginar uma situação real com eles.
Segue um código simples que estou estudando:
class {
// ... outros atributos e métodos ...
void deposita(double quantidade) {
this.saldo += quantidade;
}
}
Funções / métodos são subprogramas reutilizáveis.
No teu exemplo, você quer depositar um quantidade X de dinheiro. Ele não trabalha somente com 100 reais, pode trabalhar com qualquer quantia.
A questão principal de usar métodos é que eles criam o seu próprio escopo de variáveis, independente do resto do programa, não precisa se preocupar que uma dessas variáveis mudem sem querer os atributos dos seus objetos, que estes sim são compartilhados pro todos os métodos e threads que rodem.
Certo…
Imagine que vc tem um número e vc quer saber o dobro deste numero. Comofas?
public int dobro(int numero){ return 2* numero; }
muito bem, e agora? como eu descubro o dobro de 10?
int i=10;
int j= dobro(i); // 2*10 == 20, certo?
System.out.println("O dobro de " + i + " eh " + j);
ou seja, um método é um bloco de código que faz alguma coisa. E, as vezes, é interessante vc passar valores para este código. Senão vc teria métodos como
dobroDe1
dobroDe2
dobroDe5
dobroDe9999
e por ai vai. não faz sentido se vc pode receber valores como argumentos, certo?
Agora, o seu método faz uma coisa a mais, que é receber valores não para simplesmente fazer algo e retornar o valor, mas para alterar o estado do objeto que esta relacionado com este método. Seria bom vc estudar os fundamentos da linguagem bem ![:wink: :wink:](https://www.guj.com.br/images/emoji/twitter/wink.png?v=9)
Sua duvida é como usar ??
Carlos_David
cara, na verdade eu até sei usar.
Eu estou estudando a apostila 11 da Caelum, e agarrei nos exemplos dos métodos.
Acho que tem certas partes que a explicação não ficou muito boa na apostila.
Pratique por algumas semanas sem medo de programar. Vai ficando mais claro com o passar do tempo.
Java não é muito simples, pode levar tempo até dominar o necessario, portanto não perca tempo ![:wink: :wink:](https://www.guj.com.br/images/emoji/twitter/wink.png?v=9)
Por exemplo:
class Conta {
// atributos e metodos...
void transfere(Conta destino, double valor) {
this.saldo = this.saldo - valor;
destino.saldo = destino.saldo + valor;
}
}
esse exemplo não consigo entender.
O argumento “Conta destino” não entendo isso!
Conta é a classe? Destino é o nome da variável?
Confundi minha cabeça toda = (
destino é uma variável do tipo Conta. Conta é uma classe criada por você.
Assim como valor é uma variável do tipo double.
Bruno
pois então cara, olha essa linha:
destino.saldo = destino.saldo + valor;
se “destino” é uma variável do tipo “Conta”, o que é saldo?
“saldo” é um atributo da variável “destino”?
variável tem atributo?
putz… que confusão… = (
Aff… acho que vou voltar e estudar o capítulo todo de novo.
Mas tem certas coisa que não são bem explicadas na apostila não.
De qualquer maneira, obrigado pessoal.
saldo é um atributo da classe Conta.
o método deposita recebe um objeto do tipo Conta, que dentro do método será referenciado pelo nome destino.
Classes são moldes usados para a construção de objetos. Essa construção chama-se instanciação. Ao instanciar uma classe, cria-se um espaço de memória com base nessa classe, onde dentro desse espaço os atributos da classe terão valores associados à eles. Cada instanciação da classe é independente de outra, o que significa que pdoem haver dois objetos diferentes, com valores diferentes dentro deles.
[quote=gsalcantara]Aff… acho que vou voltar e estudar o capítulo todo de novo.
Mas tem certas coisa que não são bem explicadas na apostila não.
De qualquer maneira, obrigado pessoal.[/quote]
A apostila FJ-11 tem pré-requisitos de lógica de programação e conhecimento de alguma linguagem procedural. Deve ser por isso que está tendo problemas. Existe o curso CS-01 de lógica de programação, que cuida dessa parte, porém não tem apostila, mas disso a internet tá cheia. As universidades federais tem umas apostilas boas online.