Boa tarde,
Tenho uma dúvida sobre metodos. Em um Metodo eu tenho o MODIFICADOR , TIPODERETORNO, NOME (PARAMETROS) e um corpo de INSTRUÇÕES.
Tenho dúvida na Instrução.
Porque tenho que fazer da forma abaixo forma e para que serve?
Ex.
Public String nome;
Public void nome ( String nome){
This.nome=nome;
}
Vamos com calma, temos métodos que não possuem tipo de retorno, são os construtores.
O modificador pode ser mais de um, métodos estáticos e os abstratos, por exemplo.
As instruções existentes em um método (também conhecido como corpo do método) é o conjunto de passos para que uma tarefa (um método pode ser entendido como o processo para realizar uma tarefa) seja executada.
O caso citado por ti nunca irá acontecer, você não pode ter um método com mesmo nome de um atributo.
Creio que você quis se referir a isso
private String nome;
public void setNome(String nome) {
this.nome = nome;
}
Se foi isso, estamos falando de um método assessor, responsável por definir o valor de um atributo cujo modificador o restringe para a instância de objeto em questão.
Além disso, a instrução diz que você está passando o valor recebido (parâmetro nome) ao atributo (nome) referente àquela instância de objeto específica (this.nome).
É isso.
Darlan, Escrevi o código errado! O correto é da forma que você escreveu.
Embora haja quem discorde, existe um conceito da POO que se chama encapsulamento, basicamente, consiste em esconder os atributos (torná-los privados) e habilitar acesso aos mesmos via métodos assessores.
private String nome;
public void setNome(String nome) {
this.nome = nome;
}
public String getNome() {
return this.nome;
}
Darlan, muito obrigado pelo explicação.
No caso do encapsulamento, se eu tenho um atributo “Saldo” e coloco ele como private, não vou conseguir alterar seu valor por outra classe, porém posso manipular com um depósito ou retirada. Seria isso?
Se você tem um atributo saldo, em uma classe Conta e o mesmo está como privado, precisa de métodos para permitir as alterações, setSaldo e getSaldo, por exemplo.
Darlan, Só mais uma pergunta!
Sempre que eu for escrever um código, terei que criar classes para depois junta-las?
A ideia de se desenvolver orientado a objetos é exatamente esta.
Veja, cada classe representa um conjunto de objetos dentro de um contexto específico. Cada grupo de objetos (ou classe) pode e deve fazer exatamente aquilo para que existe.
Isto vai permitir que você reuse o código em trechos diversos e, até mesmo, em outros projetos.
Legal, vou começar a estudar sobre herança, acredito que vai ao encontro disso.
Aí é que está o ponto. Para uma classe Conta, o atributo saldo deveria ser manipulado apenas pelos métodos da própria classe (deposito/retirada, etc.). Permitir que alguma classe externa faça um “setSaldo()” em uma classe conta quebra o encapsulamento da classe.
Entendo que conta será um atributo de alguma outra classe (banco? Correntista?) e que o mesmo invocará, ao menos, o método getSaldo.
Uma conta, sozinha, é incapaz de se movimentar.
Este foi o contexto que considerei para o comentário anterior.