Polimorfismo consiste em quatro propriedades que a linguagem pode ter (atente para o facto de que nem toda linguagem orientada a objecto tem implementado todos os tipos de polimorfismo):
- Universal:
- Inclusão: um ponteiro para classe mãe pode apontar para uma instância de uma classe filha (exemplo em Java: "List lista = new LinkedList ();" (tipo de polimorfismo mais básico que existe).
- Paramétrico: se restringe ao uso de templates (C++, por exemplo) e generics (Java/C#).
- Ad-Hoc:
- Sobrecarga: duas funções/métodos com o mesmo nome mas assinaturas diferentes.
- Coerção: a linguagem que faz as conversões implicitamente (como por exemplo atribuir um int a um float em C++, isto é aceito mesmo sendo tipos diferentes pois a conversão é feita implicitamente).
Encapsulamento consiste na separação de aspectos internos e externos de um objecto. Este mecanismo é utilizado amplamente para impedir o acesso directo ao estado de um objecto, disponibilizando externamente apenas os métodos que alteram estes estados. Exemplo: você não precisa conhecer os detalhes dos circuitos de um telefone para utilizá-lo. A carcaça do telefone encapsula esses detalhes, provendo a você uma interface mais amigável.
Abstracção é a habilidade de concentrar nos aspectos essenciais de um contexto qualquer, ignorando características menos importantes ou acidentais. Em modelagem orientada a objectos, uma classe é uma abstracção de entidades existentes no domínio do sistema de software.
Sem comentários:
Enviar um comentário