Olá pessoal! Eu estou estudando o livro - Java como programar. Porém, não estou consiguindo compreender quando ele fala de objetos construtores. Usaremos o seguinte exemplo:
[code]// Fig. 3.10: GradeBook.java
// Classe GradeBook com um construtor para inicializar o nome de um curso.
public class GradeBook
{
private String courseName; // nome do curso para esse GradeBook
// construtor inicializa courseName com String fornecido como argumento
public GradeBook( String name )
{
courseName = name; // inicializa courseName
} // termina construtor
// método para configurar o nome do curso
public void setCourseName( String name )
{
courseName = name; // armazena o nome do curso
} // termina o método setCourseName
// método para recuperar o nome do curso
public String getCourseName()
{
return courseName;
} // termina o método getCourseName
// exibe uma mensagem de boas-vindas para o usuário GradeBook
public void displayMessage()
{
// essa instrução chama getCourseName para obter o
// nome do curso que esse GradeBook representa
System.out.printf( “Welcome to the grade book for\n%s!\n”,
getCourseName() );
} // termina o método displayMessage
} // fim da classe GradeBook[/code]
[code]public class GradeBookTest
{
// método main inicia a execução do programa
public static void main( String args[] )
{
// cria objeto GradeBook
GradeBook gradeBook1 = new GradeBook(
“CS101 Introduction to Java Programming” );
GradeBook gradeBook2 = new GradeBook(
“CS102 Data Structures in Java” );
// exibe valor inicial de courseName para cada GradeBook
System.out.printf( "gradeBook1 course name is: %s\n",
gradeBook1.getCourseName() );
System.out.printf( "gradeBook2 course name is: %s\n",
gradeBook2.getCourseName() );
} // fim de main
} // fim da classe GradeBookTest[/code]
Para que próposito ele faz isso?
Aguardo respostas. Um grande abraço a todos da comunidade !
O construtor de um objeto oferece uma forma de se criar um objeto passando os dados a serem inicializados, seu construtor pode ter varios argumentos ou nenhum se vc nao criar um
o compilador ira criar um padrao para vc sem argumentos.
Hum… faz parte do estilo. Se quiser usar programação orientada a objeto, é de bom tom usar construtores. Se não quiser, tudo bem - (embora seu empregador talvez faça cara feia e talvez nem lhe contrate), mas não é Java e sim algo que é parecido com Java.
Em Roma, proceda como os romanos.
Agora falando sério: o compilador Java já lhe fornece o “construtor padrão” (um construtor sem parâmetros, que não faz nada exceto alocar a memória inicial e preencher com zeros ou nulls) se você não o especificar. Mas nem sempre isso é suficiente.
Tah vamos lah,imagine que vc queira criar um objeto ferrari isto e so um exemplo,e vc quer que seu objeto seja criado ja com um banco de couro um motor possante e td mais,qdo vc cria um objeto assim:
Class Ferrari {
String banco;
Motor motor;
Color cor;
}
Ferrari f = new Ferrari();
vc esta iniciando os variaveis de instancia com valores padrao que sao 0 para Integer null para objetos e tals,
mas suponha que vc queira iniciar seu objeto ferrari com a cor vermelha e outro com a cor preto vc criaria um construtor para passar a cor a ele por exemplo
[code]
public Ferrari(Color c){
this.color=c;
}
Ferrari f1 = new Ferrari(Color.BLACK);
Ferrari f2 = new Ferrari(Color.RED);
Muito obrigado lgweb. Consigui compreender completamente. Então no meu caso, que é o programinha que estou criando, vou poder alterar apenas o courseName, certo ?
[quote=entanglement]Você deve estar se referindo a construtores de objetos, não?
Um construtor é um método especial em uma classe que:
Cria uma nova instância de um objeto;
Opcionalmente, preenche os campos desse objeto com alguns valores, conforme sua necessidade.
[/quote]
Cuidado.
Um construtor não é um método.“método construtor” é outra coisa (ver factory method)
O construtor não cria a instancia do objeto. Isso quem faz é a JVM.
O objetivo do construtor é deixar o objeto num estado válido. É por isso que ele pode receber argumentos porque às vezes os objetos só podem ser criados se tivermos outras informações antes.
O construtor, embora o nome, atua como um inicializador. O nome diferente é para não confundir com os inicializadores do C++ que sim são métodos. Este status de “não método” é importante para entender , por exemplo, porque construtores não são herdados e não têm retorno e existem regras especiais relativas a atributos finais.