Polimorfismo

Bem to com uma duvida aqui me corrijam se eu estiver errado.
O problema é o seguinte sou obrigado a usar polimorfismo nesse caso, eu tenho que criar uma lista de produtos que tem como filho a classe Filme.

 public boolean cadastrarFilme(String nome, String genero, int ano, String sinopse, double duracao) throws Exception {

        if (this.produtos.isEmpty()) {
            produtos.add(new Filme(sinopse, duracao, nome, ano, genero));
            return true;
        } else {
            try {
                procurarFilme(nome);
                Filme filme = new Filme(sinopse, duracao, nome, ano, genero);
                produtos.add(filme);
                return true;
            } catch (Exception e) {
                throw new Exception(e);
            }
        }
    }


 public void alterarFilme(String nome, String genero, double duracao, int ano, String sinopse) throws Exception {
        try {
            int i = procurarFilme(nome);

            if (produtos.get(i) instanceof Filme) {
                produtos.get(i).setAno(ano);
                produtos.get(i).setGenero(genero);
                produtos.get(i).getNome();
            }
        } catch (Exception e) {
            throw new Exception(e);
        }
    }

Bem agora eu quero por produtos ter acesso a sua classe filho no caso filme, mas não consigo ter esse acesso ?

Nosleg Boa Tarde!

Não entendi a sua dúvida, você quer uma classe que faça com que os métodos cadastrarFilme e alterarFilme sejam polimorficos?

public boolean cadastrarFilme(String nome, String genero, int ano, String sinopse, double duracao)

não seria melhor receber um objeto

public boolean cadastrarFilme(Filme filme) 

[]s

[quote=AndreSorge]Nosleg Boa Tarde!

Não entendi a sua dúvida, você quer uma classe que faça com que os métodos cadastrarFilme e alterarFilme sejam polimorficos?[/quote]

Bem eu quero acessar um método da classe Filme no caso eu queria fazer isso :

            produtos.get(i).setDuracao; // No caso só quem tem acesso  ao método setDuracao é a classe Filme, porém não consigo ter esse acesso...

pelo que entendi…no bean Filme tem a propriedade produto…e isso??

então

filme.getProduto().setDuracao(conteudo);

Posta aí as suas classes ou um uml, acho que fica mais fácil pra visualizar a sua modelagem

[quote=Nosleg][quote=AndreSorge]Nosleg Boa Tarde!

Não entendi a sua dúvida, você quer uma classe que faça com que os métodos cadastrarFilme e alterarFilme sejam polimorficos?[/quote]

Bem eu quero acessar um método da classe Filme no caso eu queria fazer isso :

            produtos.get(i).setDuracao; // No caso só quem tem acesso  ao método setDuracao é a classe Filme, porém não consigo ter esse acesso...

[/quote]

vc tera que fazer um cast

 ((Filme)produtos.get(i)).setDuracao()

[quote=DaniloAndrade][quote=Nosleg][quote=AndreSorge]Nosleg Boa Tarde!

Não entendi a sua dúvida, você quer uma classe que faça com que os métodos cadastrarFilme e alterarFilme sejam polimorficos?[/quote]

Bem eu quero acessar um método da classe Filme no caso eu queria fazer isso :

            produtos.get(i).setDuracao; // No caso só quem tem acesso  ao método setDuracao é a classe Filme, porém não consigo ter esse acesso...

[/quote]

vc tera que fazer um cast

((Filme)produtos.get(i)).setDuracao() [/quote]

Bem meu professor quer que eu faça um método abstrato em produtos, porém não quero fazer isso pois minhas classe de produtos são todas classes Bin, mas pelo menos vou usar um pouco do que ele quer

 public void alterarDadosFilmes(String nome, String genero, double duracao, int ano, String sinopse) throws Exception {
        try {
            int i = procurarFilme(nome);
            if (produtos.get(i) instanceof Filme) {
                Filme filme = (Filme) produtos.get(i);
                
                filme.setSinopse(sinopse);
                filme.setNome(nome);
                filme.setGenero(genero);
                filme.setSinopse(sinopse);
                filme.setDuracao(duracao);
                filme.setAno(ano);
                produtos.set(i, filme);
            }
        } catch (Exception e) {
            throw new Exception(e);
        }
    }
}

Eu dessa maneira eu consigo alterar os dados e pegar o conteúdo que quero porém não é muito convencional… Fiquei interessado na sua solução mas não entendi ela muito bem e não funcionou aqui :cry:

apareceu algum erro?

int i = procurarFilme(nome); 

cara que tipo de pesquisa e essa???

não pode ter dois filmes com mesmo nome???

[]s

Consegui resolver o problema porém tive que apelar pra POG pra isso como mostra no código lá em baixo, é que meu professor me passou um trabalho onde realmente não é
necessário o uso de polimorfismo, já que minhas classe de produtos eram todas classe bin, e ele queria que eu cria-se Produto como uma classe abstrata porém Produto tem outros filhos ai complica… pelo fato de essas classes só terem get’s e set’s e eles são diferentes. Com minha gambiarra resolvi o problema porém se você souber um modo mais correto de se trabalhar com isso eu ficaria interessado em saber.

[code] public void alterarDadosFilmes(String nome, String genero, double duracao, int ano, String sinopse) throws Exception {
try {
int i = procurarFilme(nome);
if (produtos.get(i) instanceof Filme) {
Filme filme = (Filme) produtos.get(i);

            filme.setSinopse(sinopse);
            filme.setNome(nome);
            filme.setGenero(genero);
            filme.setSinopse(sinopse);
            filme.setDuracao(duracao);
            filme.setAno(ano);
            produtos.set(i, filme);
        }
    } catch (Exception e) {
        throw new Exception(e);
    }
}

}[/code]

[quote=marcelo.silva.java]int i = procurarFilme(nome);

cara que tipo de pesquisa e essa???

não pode ter dois filmes com mesmo nome???

[]s[/quote]

Bem na especificação do trabalho filme só é buscado pelo nome, ou seja, não pode ter filmes com mesmo nome ( isso no trabalho ), já na classe revista é procurado pelo nome, mes e ano, e no caso do cd é procurado pelo nome do artista e o album.

tendi…