Polimorfismo (Resolvido)

pessoal, não tive a compreensão muito bem de Polimorfismo… portanto se puderem me ajudar, obrigado…

Se eu tenho uma superclasse(perguntas) e uma subclasse(perguntasFacil) como funciona o polimorfismo?

 Perguntas p = new perguntasFacil[10]

ai tem um vetor de 10 índice… mas como funciona esta estrutura ?

Valeu, espero que tenham me entendido… porque nem eu me entendi nessa direito… rsrsrs

Polimorfismo ou método polimorfico é quando vc tem um metodo na classe A e quando voce extender na classe B o A e sobrescrever o metodo ele será um metodo polimorfico

certo… Acho que entendi… valeu…

Aproveitando a oportunidade aqui… o IDE eclipse tem algum atalho que organize as linhas automáticas? qual?

certo… Acho que entendi… valeu…

Aproveitando a oportunidade aqui… o IDE eclipse tem algum atalho que organize as linhas automáticas? qual?[/quote]

sim crtl+shift e f

certo… Acho que entendi… valeu…

Aproveitando a oportunidade aqui… o IDE eclipse tem algum atalho que organize as linhas automáticas? qual?[/quote]

sim crtl+shift e f[/quote]

Ok, muito obrigado dtxk.

:wink:

Seu código acima não compila. Provavelmente você quis dizer:


public class PerguntasFaceis extends Perguntas ...

Perguntas[] p = new PerguntasFaceis[10];

[quote=entanglement]Seu código acima não compila. Provavelmente você quis dizer:


public class PerguntasFaceis extends Perguntas ...

Perguntas[] p = new PerguntasFaceis[10];

[/quote]

Isso, esta dessa forma… porém está dentro de um método, pois irei fazer um método abstrato na superclasse…

Na verdade… se puderem me ajudar, tenho que fazer um programa baseado no Show do Milhão…

Bom, vou tentar explicar um pouco mais detalhado…

O polimorfismo trata da sobreposição de métodos da classe mãe na classe filha. Normalmente, as classes-mãe possuem métodos genéricos onde cada filha pode apresentá-lo de uma maneira!
Um bom exemplo de polimorfismo pode ser a herança entre classes GUI de um software.

Por exemplo: eu tenho um formulário que cadastra Alunos e um que cadastra Turmas.
Para reduzir o código e torná-lo reusável, vamos fazer um exemplo de polimorfismo:

  1. Eu crio uma classe mãe, a qual possuirá todos os atributos em comum entre esses dois formulários:

[code]public abstract GUIMae extends JFrame {

public GUIMae() {

    // O que você tem em comum entre os dois formulários?
    // 'Bom, eles terão o mesmo LaF, a mesma operação ao fechar...'

    // Você coloca no construtor tudo em comum que eles terão.
    try {

        UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setResizable(false);

        iniciarComponentesEmComum();
    }
    catch (Exception anyError) {
        anyError.printStackTrace();
    }
}

//E agora? Eles terão métodos em comum? Métodos que devem ser implementados pelos dois?
// Tá, vamos supor que os dois formulários tenham um botão de cancelar e um botão de confirmar.
// Os dois formulários terão o MESMO botão, mas ações DIFERENTES, certo?
// Para isso, criamos um método abstrato que a classe filha implementará!

protected abstract void onConfirmarClick(ActionEvent e);
protected abstract void onCancelarClick(ActionEvent e); 

public void showDialog() {

    pack();
    setLocationRelativeTo(null);
    setVisible(true);
}


private void iniciarComponentesEmComum() {

    setLayout(new FlowLayout());


    // Vou adicionar os dois botões no formulário...
    JButton buttonConfirmar = new JButton("Confirmar");
    buttonConfirmar.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e) {

            // Chamo o meu método abstrato, que estará implementado na filha!
            onConfirmarClick(e);
        }
    }
    add(buttonConfirmar);

    JButton buttonCancelar = new JButton("Cancelar");
    buttonCancelar.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e) {

            // Chamo o meu método abstrato, que estará implementado na filha!
            onCancelarClick(e);
        }
    }
    add(buttonCancelar);
}

}[/code]

Daí beleza… Resolvido isso, vamos fazer nossa classe filha GUIAluno:

[code]// Ela estenderá da classe mãe que contém as operações e componentes básicos dela
public class GUIAluno extends GUIMae {

public GUIAluno() {

    // Você chama a classe mãe para executar tudo que ela tem no construtor.
    // Ou seja, ela vai chamar as operações básicas e adicionar os componentes 
    // em comum no formulário. 
    super();
}

// Ao estender da classe-mãe, ela pedirá para SOBRESCREVER esse método.
// É aqui que entra o polimorfismo: o mesmo método tem comportamento diferente
// em cada uma das classes filhas.
protected void onConfirmarClick(ActionEvent e) {
    JOptionPane.showMessageDialog(null, "Oi, estou na GUIAluno!");
}

// o mesmo para o cancelar...
protected void onCancelarClick(ActionEvent e) {
    throw new NotImplementedException("Not implemented yet.");
}

}[/code]

E o mesmo para o GUITurma…

[code]public class GUITurma extends GUIMae {

public GUITurma() {

    super();
}

protected void onConfirmarClick(ActionEvent e) {
    JOptionPane.showMessageDialog(null, "Oi, estou na GUITurma!");
}

protected void onCancelarClick(ActionEvent e) {
    throw new NotImplementedException("Not implemented yet.");
}

}[/code]

Agora, para testar, faça algo como:

[code]public class Main {

public static void main(String[] args) {

    GUIMae guiAluno = new GUIAluno();
    guiAluno.showDialog();
}

}[/code]
E o mesmo para a GUITurma, e note a diferença ao clicar no botão confirmar!
Espero ter ajudado, abraços!

Não vou dar quote porque é muito…

Mas com certeza Nicolas, ajudou muito…

Ajudou não… esclareceu!

Obrigado!

[quote=buiutb]Não vou dar quote porque é muito…

Mas com certeza Nicolas, ajudou muito…

Ajudou não… esclareceu!

Obrigado![/quote]
Disponha, estamos aqui para isso!
Abraço!

[quote=Nicolas Fernandes][quote=buiutb]Não vou dar quote porque é muito…

Mas com certeza Nicolas, ajudou muito…

Ajudou não… esclareceu!

Obrigado![/quote]
Disponha, estamos aqui para isso!
Abraço![/quote]

Aproveitando o tópico… Esta semana ainda pretendo estudar mais JAVA…
E o que eu tenho como meta são o seguinte:

Manipulação de arquivos, exceções e testes unitários, Hibernate e EJB e finalmente WEB com JSF.

Qual a melhor sequência, material, e outras coisas a mais pra estudar?

Material… Tenho em mão, o livro dos Deitel 8º edição, Use a Cabeça JAVA, JUnit em Ação, apostilas Caelum, k12, cursos JEDI…

Alguém para dar sugestão?

[quote=buiutb][quote=Nicolas Fernandes][quote=buiutb]Não vou dar quote porque é muito…

Mas com certeza Nicolas, ajudou muito…

Ajudou não… esclareceu!

Obrigado![/quote]
Disponha, estamos aqui para isso!
Abraço![/quote]

Aproveitando o tópico… Esta semana ainda pretendo estudar mais JAVA…
E o que eu tenho como meta são o seguinte:

Manipulação de arquivos, exceções e testes unitários, Hibernate e EJB e finalmente WEB com JSF.

Qual a melhor sequência, material, e outras coisas a mais pra estudar?

Material… Tenho em mão, o livro dos Deitel 8º edição, Use a Cabeça JAVA, JUnit em Ação, apostilas Caelum, k12, cursos JEDI…[/quote]

Oi!

Recomendo fortemente que deixe este tópico fechado e abra um novo solicitando conselhos para direcionamento dos teus estudos.
A sua dúvida, que era pertinente ao tópico em questão, já foi resolvido e não há motivos para permanecemos aqui, concorda ? :slight_smile:
Eu só entrei nesse tópico porque fiquei curioso sobre o que haviam respondido sobre polimorfismo e não pensando que tu precisava de algo mais.

se conselho fosse bom, não era dado era vendido. Isso é bem velho, não é mesmo? Mas mesmo assim vou me arriscar.
Eu vi JAVA na universidade por apenas um semestre, após isso, devo ter ficado mais de 1 (um) ano sem ver a linguagem. Lá, apenas vimos conceitos bem básicos e não havia nada de MVC ou qualquer coisa do tipo. O que eu quero dizer?

Simples, consegui um estágio a anos atrás para trabalhar com Java WEB, envolvendo Hibernate, Struts, JSP, JSF, EJB, JPA e essas coisas.
Cara, eu não sabia nem o que era um objeto direito e mesmo assim, meti a cara e até que aprendi. Só vou lhe dizer o seguinte, tive bastante dificuldades porque nem com a API Collections e suas classes mais usadas, como ArrayList eu sabia manipular.

Portanto, fica meu conselho, estude o básico, pois você veio tirar dúvida sobre polimorfismo, o que dá a entender que não entende alguns conceitos básicos do Java. Estude-os, procure entender as API´s “mais usadas”, como IO, Collections bem como conceitos como sobrecarga, sobrescrita, associação entre outros.
Quando possuir um pouco mais de conhecimento nisso, ai comece a direcionar teus esforços para o JEE.

Fica a dica.
Forte abraço.

[quote=nel][quote=buiutb][quote=Nicolas Fernandes][quote=buiutb]Não vou dar quote porque é muito…

Mas com certeza Nicolas, ajudou muito…

Ajudou não… esclareceu!

Obrigado![/quote]
Disponha, estamos aqui para isso!
Abraço![/quote]

Aproveitando o tópico… Esta semana ainda pretendo estudar mais JAVA…
E o que eu tenho como meta são o seguinte:

Manipulação de arquivos, exceções e testes unitários, Hibernate e EJB e finalmente WEB com JSF.

Qual a melhor sequência, material, e outras coisas a mais pra estudar?

Material… Tenho em mão, o livro dos Deitel 8º edição, Use a Cabeça JAVA, JUnit em Ação, apostilas Caelum, k12, cursos JEDI…[/quote]

Oi!

Recomendo fortemente que deixe este tópico fechado e abra um novo solicitando conselhos para direcionamento dos teus estudos.
A sua dúvida, que era pertinente ao tópico em questão, já foi resolvido e não há motivos para permanecemos aqui, concorda ? :slight_smile:
Eu só entrei nesse tópico porque fiquei curioso sobre o que haviam respondido sobre polimorfismo e não pensando que tu precisava de algo mais.

se conselho fosse bom, não era dado era vendido. Isso é bem velho, não é mesmo? Mas mesmo assim vou me arriscar.
Eu vi JAVA na universidade por apenas um semestre, após isso, devo ter ficado mais de 1 (um) ano sem ver a linguagem. Lá, apenas vimos conceitos bem básicos e não havia nada de MVC ou qualquer coisa do tipo. O que eu quero dizer?

Simples, consegui um estágio a anos atrás para trabalhar com Java WEB, envolvendo Hibernate, Struts, JSP, JSF, EJB, JPA e essas coisas.
Cara, eu não sabia nem o que era um objeto direito e mesmo assim, meti a cara e até que aprendi. Só vou lhe dizer o seguinte, tive bastante dificuldades porque nem com a API Collections e suas classes mais usadas, como ArrayList eu sabia manipular.

Portanto, fica meu conselho, estude o básico, pois você veio tirar dúvida sobre polimorfismo, o que dá a entender que não entende alguns conceitos básicos do Java. Estude-os, procure entender as API´s “mais usadas”, como IO, Collections bem como conceitos como sobrecarga, sobrescrita, associação entre outros.
Quando possuir um pouco mais de conhecimento nisso, ai comece a direcionar teus esforços para o JEE.

Fica a dica.
Forte abraço.[/quote]

Concordo com os tópicos abordados por você, era pra mim ter aberto outro tópico.
Conselhos são muito bons, ainda mais quando vêm de uma pessoa experiente.
Referente aos estudos, eu consegui um estágio nessa área ai também e como nunca trabalhei em empresas distintas, estou com receio de não satisfaze-los com minha limitada conhecimento no assunto.
Mas, contudo isso vou fazer o que você me aconselhou. Concordo ser o mais certo a se fazer.

Portanto, muito obrigado!

[quote=buiutb][quote=nel][quote=buiutb][quote=Nicolas Fernandes][quote=buiutb]Não vou dar quote porque é muito…

Mas com certeza Nicolas, ajudou muito…

Ajudou não… esclareceu!

Obrigado![/quote]
Disponha, estamos aqui para isso!
Abraço![/quote]

Aproveitando o tópico… Esta semana ainda pretendo estudar mais JAVA…
E o que eu tenho como meta são o seguinte:

Manipulação de arquivos, exceções e testes unitários, Hibernate e EJB e finalmente WEB com JSF.

Qual a melhor sequência, material, e outras coisas a mais pra estudar?

Material… Tenho em mão, o livro dos Deitel 8º edição, Use a Cabeça JAVA, JUnit em Ação, apostilas Caelum, k12, cursos JEDI…[/quote]

Oi!

Recomendo fortemente que deixe este tópico fechado e abra um novo solicitando conselhos para direcionamento dos teus estudos.
A sua dúvida, que era pertinente ao tópico em questão, já foi resolvido e não há motivos para permanecemos aqui, concorda ? :slight_smile:
Eu só entrei nesse tópico porque fiquei curioso sobre o que haviam respondido sobre polimorfismo e não pensando que tu precisava de algo mais.

se conselho fosse bom, não era dado era vendido. Isso é bem velho, não é mesmo? Mas mesmo assim vou me arriscar.
Eu vi JAVA na universidade por apenas um semestre, após isso, devo ter ficado mais de 1 (um) ano sem ver a linguagem. Lá, apenas vimos conceitos bem básicos e não havia nada de MVC ou qualquer coisa do tipo. O que eu quero dizer?

Simples, consegui um estágio a anos atrás para trabalhar com Java WEB, envolvendo Hibernate, Struts, JSP, JSF, EJB, JPA e essas coisas.
Cara, eu não sabia nem o que era um objeto direito e mesmo assim, meti a cara e até que aprendi. Só vou lhe dizer o seguinte, tive bastante dificuldades porque nem com a API Collections e suas classes mais usadas, como ArrayList eu sabia manipular.

Portanto, fica meu conselho, estude o básico, pois você veio tirar dúvida sobre polimorfismo, o que dá a entender que não entende alguns conceitos básicos do Java. Estude-os, procure entender as API´s “mais usadas”, como IO, Collections bem como conceitos como sobrecarga, sobrescrita, associação entre outros.
Quando possuir um pouco mais de conhecimento nisso, ai comece a direcionar teus esforços para o JEE.

Fica a dica.
Forte abraço.[/quote]

Concordo com os tópicos abordados por você, era pra mim ter aberto outro tópico.
Conselhos são muito bons, ainda mais quando vêm de uma pessoa experiente.
Referente aos estudos, eu consegui um estágio nessa área ai também e como nunca trabalhei em empresas distintas, estou com receio de não satisfaze-los com minha limitada conhecimento no assunto.
Mas, contudo isso vou fazer o que você me aconselhou. Concordo ser o mais certo a se fazer.

Portanto, muito obrigado![/quote]

Se lhe contrataram como estagiário é porque não estão exigindo conhecimentos profundos seus na tecnologia. A não ser que eles queiram alguém com anos de experiência e aceite o cargo de estagiário. Nada contra, mas sabemos a diferença salarial e bla bla bla.
Acredito que a maior preocupação deles no momento é com a sua evolução e esforço em aprender o que lhe propuseram e isso vem com muita dedicação, estudos e o tempo. Já que é dessa forma, procure ler sobre as tecnologias que vocês usam na empresa e “por fora” vai estudando o que eu lhe disse, vai facilitar bastante as coisas.

Abraços e sucesso.

[quote=nel][quote=buiutb][quote=nel][quote=buiutb][quote=Nicolas Fernandes][quote=buiutb]Não vou dar quote porque é muito…

Mas com certeza Nicolas, ajudou muito…

Ajudou não… esclareceu!

Obrigado![/quote]
Disponha, estamos aqui para isso!
Abraço![/quote]

Aproveitando o tópico… Esta semana ainda pretendo estudar mais JAVA…
E o que eu tenho como meta são o seguinte:

Manipulação de arquivos, exceções e testes unitários, Hibernate e EJB e finalmente WEB com JSF.

Qual a melhor sequência, material, e outras coisas a mais pra estudar?

Material… Tenho em mão, o livro dos Deitel 8º edição, Use a Cabeça JAVA, JUnit em Ação, apostilas Caelum, k12, cursos JEDI…[/quote]

Oi!

Recomendo fortemente que deixe este tópico fechado e abra um novo solicitando conselhos para direcionamento dos teus estudos.
A sua dúvida, que era pertinente ao tópico em questão, já foi resolvido e não há motivos para permanecemos aqui, concorda ? :slight_smile:
Eu só entrei nesse tópico porque fiquei curioso sobre o que haviam respondido sobre polimorfismo e não pensando que tu precisava de algo mais.

se conselho fosse bom, não era dado era vendido. Isso é bem velho, não é mesmo? Mas mesmo assim vou me arriscar.
Eu vi JAVA na universidade por apenas um semestre, após isso, devo ter ficado mais de 1 (um) ano sem ver a linguagem. Lá, apenas vimos conceitos bem básicos e não havia nada de MVC ou qualquer coisa do tipo. O que eu quero dizer?

Simples, consegui um estágio a anos atrás para trabalhar com Java WEB, envolvendo Hibernate, Struts, JSP, JSF, EJB, JPA e essas coisas.
Cara, eu não sabia nem o que era um objeto direito e mesmo assim, meti a cara e até que aprendi. Só vou lhe dizer o seguinte, tive bastante dificuldades porque nem com a API Collections e suas classes mais usadas, como ArrayList eu sabia manipular.

Portanto, fica meu conselho, estude o básico, pois você veio tirar dúvida sobre polimorfismo, o que dá a entender que não entende alguns conceitos básicos do Java. Estude-os, procure entender as API´s “mais usadas”, como IO, Collections bem como conceitos como sobrecarga, sobrescrita, associação entre outros.
Quando possuir um pouco mais de conhecimento nisso, ai comece a direcionar teus esforços para o JEE.

Fica a dica.
Forte abraço.[/quote]

Concordo com os tópicos abordados por você, era pra mim ter aberto outro tópico.
Conselhos são muito bons, ainda mais quando vêm de uma pessoa experiente.
Referente aos estudos, eu consegui um estágio nessa área ai também e como nunca trabalhei em empresas distintas, estou com receio de não satisfaze-los com minha limitada conhecimento no assunto.
Mas, contudo isso vou fazer o que você me aconselhou. Concordo ser o mais certo a se fazer.

Portanto, muito obrigado![/quote]

Se lhe contrataram como estagiário é porque não estão exigindo conhecimentos profundos seus na tecnologia. A não ser que eles queiram alguém com anos de experiência e aceite o cargo de estagiário. Nada contra, mas sabemos a diferença salarial e bla bla bla.
Acredito que a maior preocupação deles no momento é com a sua evolução e esforço em aprender o que lhe propuseram e isso vem com muita dedicação, estudos e o tempo. Já que é dessa forma, procure ler sobre as tecnologias que vocês usam na empresa e “por fora” vai estudando o que eu lhe disse, vai facilitar bastante as coisas.

Abraços e sucesso.[/quote]

Ansiedade em excesso aqui. hahaha…

nel muito obrigado ai pelas dicas, sugestões e conselhos.
Agora, com certeza, um tópico Resolvido.

Um forte abraço, valeu.