Olá Carlos,
“public Acervo(){}” é um construtor sim, nele você pode colocar código que é executado sempre que um objeto da classe Acervo é instanciado.
Nesse caso tudo que ele mais é acrescentar um numeto ao total de acervo da biblioteca, o que faz sentido, já que um novo item de acervo foi criado e “construído”.
Um construtor também pode receber parâmetros e inicializar os atributos da classe de forma mais rápida, o que ocorreria da seguinte forma:
public class Acervo
{
private String titulo;
private int data;
public Acervo(String tituloNovo,int dataNova)
{
titulo=tituloNovo;
data=dataNova;
}
public void setTitulo(String titulo)
{
this.titulo = titulo;
}
public void setData(int data)
{
this.data = data;
}
public String getTitulo()
{
return titulo;
}
public int getData()
{
return data;
}
}
Você pode achar que este construtor acabaria com a necessidade dos métodos Set, porém eles ainda podem ser úteis caso você queira depois de algum tempo mudar o valor de um atributo de um objeto que já foi criado.
Note que defini os atributos como private, e não public. Há uma diferença importante nisso. Um atributo public permite a seguinte chamada:
Acervo meuAcervo = new Acervo();
meuAcervo.titulo = "Cora Java 2 - Vol.2";
Enquanto que um atributo privado só pode ser manipulado pela própria classe, o quer aí sim implica no uso de GETS e SETS. Sendo os gets e sets métodos “públicos”, eles podem ser chamados de fora, para manipular internamente os atributos “privados”.
Acervo meuAcervo = new Acervo();
meuAcervo.setTitulo("Cora Java 2 - Vol.2");
Note também, que seus métodos sets (agora modificados), recebiam um atributo começando por maiúsculo, como no exemplo abaixo:
public void setData(int Data)
{
this.data = Data;
}
Primeiramente eu modifiquei o nome do atributo de “Data” para “data”, porque há uma forte convenção em java sobre como nomear seus atributos, método e classes, e uma destas regras é que atributos começam com letra minúscula, capitalizando-se as primeiras letras de palavras subsequentes (int valorBoleto / float mediaAluno)…
E note também que eu retirei a referência “this” dos seus métodos GETS. Você só precisa usar a referência this, quando deve diferenciar entre atributos de nomes iguais, isso ocorre (só agora, depois da modificação) no caso do setData e do setTitulo…
O setData recebe um parametro de nome “data” porém a própria classe Acervo já tem um atributo com o mesmo nome, como definir qual é qual. Muito simples, o “this.data” é o atributo da classe, e o “data” puramente é o parâmetro que veio na chamada da função setData().
Sabendo isso, se nós modificássemos o construtor da classe para ter nomes mais certinhos, ficaríamos com o seguinte código:
public class Acervo
{
private String titulo;
private int data;
public Acervo(String titulo,int data)
{
this.titulo=titulo;
this.data=data;
}
// GETS e SETS...
}
Espero que tenha esclarecido todos os pontos que pareciam obscuros no seu trabalho. E boa sorte com o Java, estaremos a disposição… =)
Rafael.