Objetos com construtores

16 respostas
M

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:

// 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
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

Para que próposito ele faz isso?

Aguardo respostas. Um grande abraço a todos da comunidade !

16 Respostas

T

Objetos construtores??? Ou vc ta falando dos métodos contrutores da linguagem?

E

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.

Um objeto não aparece “do nada”; ele tem de ser criado.

L

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.

M

Mas, para que proposito ?

E

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.

M

Mas, porque eu não especifico os demais método, por exemplo:

// 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()

{

Porque não precisei de fazer isso com os outros, sendo que criei o construtor com o primeiro ?

L

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
public Ferrari(Color c){
	this.color=c;
	}
	Ferrari f1 = new Ferrari(Color.BLACK);
	Ferrari f2 = new Ferrari(Color.RED);
M

Hm,certo. Agora, no caso, eu criei o construtor no começo do programa:

// construtor inicializa courseName com String fornecido como argumento

public GradeBook( String name )

{

courseName = name; // inicializa courseName

} // termina construtor

No caso, eu criei o construtor apenas para esse méotodo ? courseName ? Então se eu queser criar o construitor para o displayMessage ou getCourseName ?

L

vc pode ter um que inicializa as trae variaveis de instancia de uma so vez assim:

public GradeBook( String name,String courseName,String displayMessage) {

this.name=name;
.......
........

}
M

Muito obrigado lgweb. Consigui compreender completamente. Então no meu caso, que é o programinha que estou criando, vou poder alterar apenas o courseName, certo ?

L

sim na criacao sim,mas vc pode utilizar os metodos setter para alterar o objeto apos cria - lo.

M

Muito obrigado, lgweb. Qualquer dúvida, eu posso criar outro topico denovo?

L

cara pode postar aki mesmo,se for sobre o msm assunto se nao crie outro .
T+

sergiotaborda

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.

Cuidado.

  1. Um construtor não é um método.“método construtor” é outra coisa (ver factory method)
  2. O construtor não cria a instancia do objeto. Isso quem faz é a JVM.
  3. 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.

M

Vocês são demais! Muito obrigado a todos que me responderam.

Gerson_da_S_Lima

Cara, recomendo você dá uma ida na apostila da FJ-11 Caelum, acho que vai lhe esclarecer bem suas dúvidas.

Criado 16 de novembro de 2009
Ultima resposta 18 de nov. de 2009
Respostas 16
Participantes 6