Polimorfismo - Uma visão em C++ e Java

Artigo que aborda o tema Polimorfismo e como é sua utilização em Programação Orientada a Objetos, com a implantação de exemplos em C++ e Java.

[ Hits: 43.391 ]

Por: Matheus Santana Lima em 27/11/2008


Implantação em Java



abstract class CorpoCeleste{
    protected float massa;
    protected float raio;
    protected String tipo = new String();
    public CorpoCeleste(float m,float r,String t){
        massa = m;
        raio = r;
        tipo = t;
    };
    abstract void orbita();
    abstract void display();
}
class Planeta extends CorpoCeleste{
    public Planeta(float m2, float r2, String t2){
        super(m2, r2, t2);
    };
    void display(){
        System.out.println("Massa: " + massa);
        System.out.println("Raio: " + raio);
        System.out.println("Tipo: " + tipo);
    };
    void orbita(){
        System.out.println("Órbita eliptica");
}
    void atmosfera(){
        System.out.println("Atmosfera gasosa, composta de Oxigênio, Ozônio, Dioxido de Carbono, dentro outros em menor proporção");
    };
}
class Cometa extends CorpoCeleste{
    private int orb;
    public Cometa(float m3, float r3, String t3){
        super(m3, r3, t3);
    };
    public void Setorb(int orb){
        this.orb = orb;
    }
    void display(){
        System.out.println("Massa: " + massa);
        System.out.println("Raio: " + raio);
        System.out.println("Tipo: " + tipo);
    };
    void orbita(){
        if(orb==1)
            System.out.println("Órbita elipsóide");
        else
           System.out.println("Órbita hiperbólica");}
}
public class Main {
    /**
     * @param args the command line arguments
     */

    public static void main(String[] args) {
        // TODO code application logic here
        Planeta Terra = new Planeta(57942,2345,"Planeta Rochoso");
        Terra.display();
        Terra.atmosfera();
        System.out.println("--------------------------");
        Cometa Halley = new Cometa(22,55,"Cometa Periódico");
        Halley.Setorb(1);
        Halley.orbita();
        Halley.display();
//Não esqueça que o arquivo com o código-fonte deve ter o mesmo nome
//que a classe que tem o método main. No caso deve ser Main.java

    }
}

Bibliografia

  • Programação de softwares em Java - Érico Casella Tavares de Mattos - Editora Digerati
  • OOP Desmistificado - Alta Books
  • Deitel C++ - How to Program

Página anterior    

Páginas do artigo
   1. O que é Polimorfismo
   2. Classes e métodos abstratos em Java e C++
   3. Implantação em C++
   4. Implantação em Java
Outros artigos deste autor

Projeto OLPC - O famoso laptop de $100

Apresentando e pondo a prova o Mono

Rodando aplicações nativas de Windows em Linux pela Web

Análise do Mandriva Free 2006 - Conhecendo melhor o sistema

Visopsys - Sistema Operacional aberto e portátil para manipulação de discos rígidos

Leitura recomendada

Certificação Java - 2 - Literals and Ranges of All Primitive Data Types (Exam Objective 4.6)

Modelos de desenvolvimento

Entendendo POO (História e conceitos)

Introdução a eXtreme Programming (XP) e instalação do ANT + JUnit

180 dias sem solução

  
Comentários
[1] Comentário enviado por femars em 27/11/2008 - 17:36h

Opa... mto legal e bem feito... parabens!
[]'s
Xiiico/Libra!

[2] Comentário enviado por edgurgel em 08/12/2008 - 17:28h

Na implementação em C++, o construtor da classe abstrata deve ser protegido, pois ele só será chamado na hora da construção dos filhos. Não faz sentido ser public.

[3] Comentário enviado por matheusslima em 08/12/2008 - 21:04h

Sou obrigado a discordar de voce, os metodos declarados na classe base sao abstratos(funçao virtual pura) e consequentemente a classe base é uma classe abstrata, e como tal não pode ser instanciada como um objeto. Este é um dos conceitos base do Polimorfismo que você esqueceu.

[4] Comentário enviado por danltmz em 28/09/2009 - 21:34h

"Sou obrigado a discordar de voce, os metodos declarados na classe base sao abstratos(funçao virtual pura) e consequentemente a classe base é uma classe abstrata, e como tal não pode ser instanciada como um objeto. Este é um dos conceitos base do Polimorfismo que você esqueceu. "


Exato :)


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner
Linux banner
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts