Erro

Caro colegas, o código anexo está com erro.
Será que poderiam ajudar a resolver este impasse?

public class AD1_2013{
  public static void main(String[] args){
    Editora oreilly = new Editora("O'Reilly", "http://oreilly.com/");
    String [] autores = {"Eric Freeman", "Elisabeth Freeman"};
   
    Publicacao headfirst = new Livro("Padrões de Projeto", "Programação", "2a", "oreilly.nome, autores);
    Editora tres = new Editora("Editora Três", "http://editora3.terra.com.br/");
    
    Publicacao oracle = new Revista("Isto É?", "Notícias", "2279", tres.nome, "semanal");
    System.out.println("O'Reilly: " + oreilly.getNumPubs());
  }
}
 class Editora{
  String nome;
  String website;
  static int prox_edit = 1;
  int num;
  Editora(String pNome, String pWebsite){
    nome = pNome;
    website = pWebsite;
    num = prox_edit++;
  }
  int getNumPubs(){return num;}
}
class Publicacao{
  String nome;
  String assunto;
  String edicao;
  String editora;
  Publicacao(String pNome, String pAssunto, String pEdicao, String pEditora){
     nome = pNome;
     assunto = pAssunto;
     edicao = pEdicao;
     editora = pEditora;
  }
}

class Livro extends Publicacao{
  String autores;
  Livro(String pNome, String pAssunto, String pEdicao, String pEditora, String pAutores){
    super(pNome, pAssunto, pEdicao, pEditora);
    autores = pAutores;
  }
}
class Revista extends Publicacao{
  String periodo;
  Revista(String pNome, String pAssunto, String pEdicao, String pEditora, String pPeriodo){
    super(pNome, pAssunto, pEdicao, pEditora);
    periodo = pPeriodo;
  }
}

Obrigado a todos.
Ana

Olá,
Quando postar código, coloque-o entre as tags [code]
Nós não conseguimos adivinhar problemas, portanto, seja clara no que quer. Use o título como uma breve descrição e o texto do tópico como esclarecimento.
Aponte qual o erro e quando ele ocorre (antes de compilar, compilando, na execução).

No construtor da classe Publicação vc esta passando uma variavel do tipo Editora mas o construtor pede tipo String .-.

RodrigoKaos está certo!

Da próxima vez poste ao menos em qual linha o código não está compilando, ou no caso de erros em runtime o trace do erro.

Obrigado.

Procure manda o erro q esta dando para auxiliar a encontrar o que está errado no seu código!

consegui corrigir o erro da editora, enfim nem tudo está perdido.
Mas, felicidade dura pouco agora o erro é “autores”.
Poderiam dar mais essa ajudinha?

Publicacao headfirst = new Livro(“Padrões de Projeto”, “Programação”, “2a”, oreilly.nome, autores);

Constructor Livro in class cannot be applied to given types;
Required: string, string, string,string,string
Found: string, string,string,string,string []
Reason: actual argument editora cannot be converted to string by method invocation conversion

Abs
Ana Trece

Constructor Livro in class cannot be applied to given types;
Required: string, string, string,string,string
Found: string, string,string,string,string []

Vc ta passando um array de strings, vc tem q passar apenas uma string.

[quote=RodrigoKaos]Constructor Livro in class cannot be applied to given types;
Required: string, string, string,string,string
Found: string, string,string,string,string []

Vc ta passando um array de strings, vc tem q passar apenas uma string.
[/quote]

Se fizesse a correção abaixo que vc falou:

Publicacao headfirst = new Livro(“Padrões de Projeto”, “Programação”, “2a”, oreilly.nome, “Eric Freeman”);

Acabo com o erro, mas queria passar um array de strings, e não um string.

Não sei se posso? É como vê não sei fazer.

Poderia ajudar?
abs
Ana Trece

Vc pode alterar a classe Publicação pra aceitar array, ou List, a sua imaginação é seu limite

[quote=ana paula trece]Caro colegas, o código anexo está com erro.
Será que poderiam ajudar a resolver este impasse?

public class AD1_2013{
  public static void main(String[] args){
    Editora oreilly = new Editora("O'Reilly", "http://oreilly.com/");
    String [] autores = {"Eric Freeman", "Elisabeth Freeman"};
   
    Publicacao headfirst = new Livro("Padrões de Projeto", "Programação", "2a", "oreilly.nome, autores);
    Editora tres = new Editora("Editora Três", "http://editora3.terra.com.br/");
    
    Publicacao oracle = new Revista("Isto É?", "Notícias", "2279", tres.nome, "semanal");
    System.out.println("O'Reilly: " + oreilly.getNumPubs());
  }
}
 class Editora{
  String nome;
  String website;
  static int prox_edit = 1;
  int num;
  Editora(String pNome, String pWebsite){
    nome = pNome;
    website = pWebsite;
    num = prox_edit++;
  }
  int getNumPubs(){return num;}
}
class Publicacao{
  String nome;
  String assunto;
  String edicao;
  String editora;
  Publicacao(String pNome, String pAssunto, String pEdicao, String pEditora){
     nome = pNome;
     assunto = pAssunto;
     edicao = pEdicao;
     editora = pEditora;
  }
}

class Livro extends Publicacao{
  String autores;
  Livro(String pNome, String pAssunto, String pEdicao, String pEditora, String pAutores){
    super(pNome, pAssunto, pEdicao, pEditora);
    autores = pAutores;
  }
}
class Revista extends Publicacao{
  String periodo;
  Revista(String pNome, String pAssunto, String pEdicao, String pEditora, String pPeriodo){
    super(pNome, pAssunto, pEdicao, pEditora);
    periodo = pPeriodo;
  }
}

Obrigado a todos.
Ana

[/quote]

Corrija : Publicacao headfirst = new Livro(“Padrões de Projeto”, “Programação”, “2a”, "oreilly.nome, autores);

para autores[0] ou autores[1] , pois o parametro pede uma String , não uma array de String , que é que vc tem passado
como argumento

Ola Ana Paula, postei ainda ha pouco minhas duvidas sobre Interface de acordo com esse problema, estou olhando seu codigo…

Pessoal, sou novata nisso, se mesmo se eu nao conseguir entender, poderiam me ajudar? Pois eu entendi que “Publicacao” poderia ser uma Interface e a classe “Livro” iria implementar essa Interface, sendo que eu nao sei o que colocar dentro do escopo da Interface Publicacao…

Mas tambem pode se fazer usando desse jeito que a Ana fez? Criando classe e extendendo as outras classes dela?

Como seria feito se fosse obrigatorio o uso da Interface?

abraco

[quote=ana paula trece][quote=RodrigoKaos]Constructor Livro in class cannot be applied to given types;
Required: string, string, string,string,string
Found: string, string,string,string,string []

Vc ta passando um array de strings, vc tem q passar apenas uma string.
[/quote]

Se fizesse a correção abaixo que vc falou:

Publicacao headfirst = new Livro(“Padrões de Projeto”, “Programação”, “2a”, oreilly.nome, “Eric Freeman”);

Acabo com o erro, mas queria passar um array de strings, e não um string.

Não sei se posso? É como vê não sei fazer.

Poderia ajudar?
abs
Ana Trece[/quote]

Se quiser que o construtor aceite uma array de Strings , vc tem que alterar o código

class Livro extends Publicacao{ String autores; Livro(String pNome, String pAssunto, String pEdicao, String pEditora, String pAutores){ super(pNome, pAssunto, pEdicao, pEditora); autores = pAutores; }

para :

class Livro extends Publicacao{ String autores; Livro(String pNome, String pAssunto, String pEdicao, String pEditora, String[] pAutores){ super(pNome, pAssunto, pEdicao, pEditora); //autores = pAutores; //chamar um método para lidar a String autores }

Você tem que criar um método para lidar com o parametro autores , que é uma array de Strings .

Se tiver dúvidas , depois te ajudo .

[i]Onde vcs pegaram esses exercícios?

Paulo, evita dar a resposta (fazer o trabalho pros outros) é um exercício, tenta explicar como elas podem chegar na solução :confused:

[/i]

[quote=RodrigoKaos][i]Onde vcs pegaram esses exercícios?

Paulo, evita dar a resposta (fazer o trabalho pros outros) é um exercício, tenta explicar como elas podem chegar na solução :confused:

[/i][/quote]

Sim , por isso que eu disse pra ela tentar criar um método para trabalhar com a String.

Só indiquei o que ela mesma já havia dito , passar um parametro através de uma String .

Agora ela terá que aprender como manipular essa String através de um metódo ou até
mesmo dentro do construtor .

Poderia declarar a variavel editora do tipo Editora, nao precisaria usar reilly.nome para o codigo funcionar.