Olá pessoal!
Estou estudando o livro do Java Como Programar. E me deparei com uns exercicios que estão não obtendo sucesso.
Veja bem:
[code]//GradeBook
//Programa para cursos
public class GradeBook {
private String courseName; //nome do curso para esse GradeBook
private String courseAutor; //nome do autor para esse GradeBook
//construtor
public GradeBook(String autor, String nome)
{
courseName = nome;
courseAutor = autor;
}
//método para configurar o nome do curso
public void setCourseName(String nome)
{
courseName = nome; //configura o nome do curso
}
//método para recuperar
public String getCourseName()
{
return courseName;
}
public void setCourseAutor(String autor)
{
courseAutor = autor;
}
public String getCourseAutor()
{
return courseAutor;
}
}[/code]
[code]//GradeBookTest.java
//Chama GradeBook e chamar seus respectivos valores e depois seta-los
import java.util.Scanner; //importa a classe Scanner
public class GradeBookTest {
//inicialização do programa
public static void main(String args[])
{
GradeBook gradeBook1 = new GradeBook("WebDesign");
GradeBook gradeBook2 = new GradeBook("Gustavo");
//Cria Scanner para obter dados a partir da janela de comando
Scanner input = new Scanner(System.in);
System.out.printf("O nome do curso: %s\n",gradeBook1.getCourseName());
System.out.printf("Autor do curso: %s",gradeBook2.getCourseAutor());
}
}[/code]
O problema está na iniciaização do construtor. Porque razão está dando erro ?
[quote=hackum]Nesse caso ficaria errado.E o método set e get e o gradebook2 ? Como vou inicia-los conforme o meu programa ?
System.out.printf("O nome do curso: %s\n",gradeBook1.getCourseName());
System.out.printf("Autor do curso: %s",gradeBook2.getCourseAutor()); [/quote]
Mas pra que 2 objetos se você só quer cadastrar só 1 Curso ??? Você que fez errado… criou 2 atributos no construtor e quer criar um objeto passando só… Atualize aí como o amigo acima disse e exclua o segundo Objeto…
O deitel me mostrou uma coisa, e vocês me mostraram outra.
Não entendi, voces poderiam ser mais claros ?
Como me explicam esse codigo:
[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]// Fig. 3.11: GradeBookTest.Java
// construtor GradeBook utilizado para especificar o nome do curso na
// hora em que cada objeto GradeBook é criado.
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() );
para usa-lo, quantos parâmetros você tem que passar? 2… correto?
// aqui eu criei 1 objeto passando 2 parâmetros…
GradeBook gradeBook1 = new GradeBook(“aprendendo java”, “hackum”);
// e aqui eu mostrei as informações do gradeBook1…
System.out.printf(“O nome do curso: %s\n”,gradeBook1.getCourseName());
System.out.printf(“O nome do curso: %s\n”,gradeBook1.getCourseAutor());
// agora vou criar um segundo objeto:
GradeBook gradeBook2 = new GradeBook(“Tentando aprender java”, “Douglas”);
// e aqui eu mostrei as informações do gradeBook2…
System.out.printf(“O nome do curso: %s\n”,gradeBook2.getCourseName());
System.out.printf(“O nome do curso: %s\n”,gradeBook2.getCourseAutor());[/code]
e o seguinte… oq e um construtor… e o metodo q constroi a classe (obvio)… ele e chamado qnd vc utiliza o new…
td classe possui um por padrão ate mesmo qnd vc n declara ele… a propria jvm “entende” q existe um e chama ele ao criar uma classe… por exemplo qnd vc faz isso Minha classe = new MinhaClasse(); sem nd no meio dos parenteses significa construtor padrão =)
oq acontece qnd vc cria o seu proprio construtor… q foi oq vc fez… ele sobrescreve esse padrão e a jvm utiliza oq vc criou…
sendo assim qnd vc faz isso new GradeBook(“WebDesign”); ele ira tentar chamar um construtor com apenas 1 parametro e a sua classe possui um construtor com 2… logo isso ira causar um erro…
segunda coisa…
td vez q vc utiliza o comando new ele cria um objeto novo (chamando o cosntrutor)… logo qnd vc faz:
GradeBook gradeBook1 = new GradeBook(“WebDesign”);
GradeBook gradeBook2 = new GradeBook(“Gustavo”);
A jvm cria 2 objetos o gradeBook1 e o gradeBook2… (na verdade da erro por causa do construtor =D)
vc deveria fazer assim:
GradeBook gradeBook = new GradeBook(“WebDesign”,“Gustavo”);
isso ira criar um obj gradeBook… depois e so:
System.out.printf(“O nome do curso: %s\n”,gradeBook.getCourseName());
System.out.printf(“Autor do curso: %s”,gradeBook.getCourseAutor());
blz… tentei ser o mais simples possivel espero q entenda…
Agora sim… Eu consigui entender e passar os parametros e aparecer na tela. Sensacional! Quando eu acabar de ler o livro do Java, quero ser igual a voces, ensinar pessoas leigas e que estão aprendendo. Portanto Resolvido
E… obrigado por me ajudar. Voces sabem que seram recompesados com isso: aprendendo novamente, o q se torna um ótimo profissional. No mais obrigado.