Prévia do material em texto
Suporte para Programação Orientada a Objeto em Ada 95 A Ada 95 estendeu a Ada 83 para suportar programação orientada a objeto. Introduziu tipos-marcados, herança e vinculação dinâmica, mantendo a verificação de tipos estática. by HarmonyKY Haven 1 Tipos-Marcados em Ada 95 Definição Tipos-marcados são registros ou tipos privados encapsulados em pacotes. Característica Cada objeto inclui uma marca implícita indicando seu tipo. Compilação Podem ser compilados separadamente. 2 Herança em Ada 95 1 Tipos Derivados Baseados em tipos-marcados, permitem adicionar novas entidades às herdadas. 2 Pacotes Separados Classes derivadas são definidas em pacotes separados para facilitar modificações. 3 Subtipos Classes derivadas são subtipos, estendendo apenas as classes-pai. 3 Vinculação Dinâmica em Ada 95 1 Tipos de Classe Ampla Representam todos os tipos de uma hierarquia de classes. 2 Sintaxe Especificada como 'class' de um tipo marcado T. 3 Ponteiros Polimórficos Definidos para ter o tipo de classe ampla. 4 Tipos Abstratos em Ada 95 Definição Usam a palavra reservada 'abstract' nas definições de tipos e subprogramas. Características Subprogramas abstratos não têm corpos. Tipos abstratos são puramente básicos. 5 Comparação com C++: Herança Ada 95 C++ Sem herança múltipla nativa Melhor suporte para herança múltipla Unidades de biblioteca-filhas para controle de acesso Funções e classes amigas 6 Comparação com C++: Construtores e Destrutores C++ Possui construtores e destrutores automáticos. Ada 95 Requer chamadas explícitas para inicialização e finalização. 7 Comparação com C++: Vinculação Dinâmica C++ Decisão de vinculação dinâmica na classe-raiz. Restrita a ponteiros e referências. Ada 95 Decisão de vinculação dinâmica em cada chamada. Aplicável a objetos diretamente. 8 image-1002-1.png image-1-1.png image-1-2.png image-1003-1.png image-2-1.png image-1004-1.png image-3-1.png image-1005-1.png image-4-1.png image-1006-1.png image-1007-1.png image-6-1.png image-1008-1.png image-7-1.png image-7-2.png image-7-3.png image-1009-1.png image-8-1.png image-8-2.png image-8-3.png