Hélio Engholm Jr

Especializado em Engenharia de Software

Figura 4.10 – Classes para polimorfismoNeste artigo estarei fornecendo um exemplo bacana que ensina e exemplifica a utilização de polimorfismo, na implementação de um menu dinâmico que é apresentado de acordo com o perfil do usuário. Você terminará a leitura sabendo definitivamente o que é e como implementar o polimorfismo.

Afinal, o que é polimorfismo? Saiba que NÃO EXISTEM OBJETOS POLIMÓRFICOS, mas sim referências polimórficas.

Polimorfismo

O polimorfismo permite esconder ações diferentes em uma interface única e é normalmente implementado pela herança, sendo considerado como uma das características que definem a tecnologia Orientada a Objetos.

Uma forma popular de polimorfismo é a inclusão de operações polimórficas de operações aplicadas a classes herdadas, como por exemplo, subclasses de uma classe Impressora imprimem utilizando procedimentos diferentes para cada tipo de impressora de mercado.

Permitindo existir um mesmo nome de método para subclasses diferentes de uma mesma superclasse, esta característica nos permite utilizar uma mesma chamada de método, a partir de uma referência polimórfica, para obter resultados diferentes simplesmente apontando para as subclasses diferentes em tempo de execução, chamando a mesma mensagem.

Desta maneira o polimorfismo permite decidir, em tempo de execução, com qual objeto se deseja comunicar.

É importante perceber que não existem objetos polimórficos mas sim referências polimórficas, já que objetos não deixam de ser o que são nem se transformam em outros objetos. O exemplo a seguir vai deixar bem claro este conceito de polimorfismo.

Exemplo de uso de polimorfismo

Imagine um sistema com perfis de acesso, que precisa mostrar o menu de opções de acordo com o perfil do usuário após a realização de login no sistema. Neste cenário, cada tipo de usuário terá opções diferentes, dependendo das funcionalidades a que ele tem permissão de acesso e está apto a executar no sistema. Isto nos permite utilizar o conceito de polimorfismo, em que o sistema carrega o menu em tempo de execução após o login do usuário e o referencia em uma referência polimórfica.

Nossa análise orientada a objetos identifica inicialmente dois tipos de objetos candidatos, MenuUsuarioCliente e MenuUsuarioAdministrador. Prosseguindo na fase de análise verificamos que estes usuários deverão possuir algumas opções de menu em comum, tais como a de alterar dados cadastrais e a de realizar logout do sistema. Isto sugere que podemos modelar uma superclasse com estas opções de menu e reutilizá-las em subclasses derivadas dela. Como opções diferentes, cada tipo de usuário deve visualizar e ter acesso apenas às respectivas matrizes de opções, implementadas nas subclasses.

Deste modo, nossa análise nos leva a implementar uma superclasse MenuUsuario contendo membros de dados e funções membro comum e especializá-la para os objetos MenuUsuarioCliente e MenuUsuarioAdministrador utilizando uma referência polimórfica para carregar o menu adequado após o login em tempo de execução. A figura 1 mostra diagrama UML representando a modelagem proposta para implementação deste exemplo de polimorfismo.

A seguir é apresentado o código-fonte das classes mostradas no diagrama de classes da figura 1, além da classe MenuMain que implementa uma aplicação de console em Java para visualizar o polimorfismo em ação. Observe que este exemplo pode ser implementado em qualquer linguagem de programação orientada a objetos, apesar do código abaixo estar em Java.

Aprenda MUITO MAIS e veja diversos exemplos no livro Análise e Design Orientados a Objetos.

PARA COMPRAR O LIVRO, CLIQUE NA IMAGEM ABAIXO:

Livro Análise e Design

Link Novatec: http://www.novatec.com.br/livros/analise-design/

Link Livraria Cultura:

http://www.livrariacultura.com.br/scripts/resenha/resenha.asp?nitem=42129370

Livraria Saraiva: 

http://www.livrariasaraiva.com.br/produto/4912029




+ Artigos