Uma perspectiva conceitual sobre a comparação de LPOO´s Bent Bruun Kristenser Kasper Osterbte By Lineu Antonio de Lima Santos
Enumerando Características LPOO´s são compreendidas, avaliadas e comparadas a partir de suas características Elas também modelam os processos baseados em LPOO’s Exemplo: OO = Objeto + Classe + Herança
Vantagens e Desvantagens Visão profunda da lingaugem Diferenças são facilmente percebidas Isso só contribui com o entendimento isolado dos vários aspectos de uma LPOO.
Perspectiva Conceitual Visão Global de aspectos de uma LPOO Perspectiva baseada em conceitos Programação conceitual : programar é um processo de modelar de um sistema de referência onde “fenômenos” e abstrações desse sistema são expressados numa LP. Abstrações dessa LP são baseadas no entendimento geral dos fenômenos e conceitos.
Conceito Denominação Extensão : Conjunto de fenômenos cobertos pelo conceito Intenção :Descrição das propriedades dos fenômenos da extensão
Conceito em LPOO’s Classes modelam os conceitos Objetos modelam o fenômeno
Framework Conceitual Relacionamento intenção/extensão Processos de Abstração Aspectos pragmáticos do processo de abstração Tipos de conceitos
Linguagens Utilizadas na Comparação
Características das Linguagens
Características Self Não existem classes, só objetos. Objeto é o protótipo para clonagem. Variáveis e métodos são unificados como Slots Delegação combina herança e instanciação
Características Objective-C Tipo de dado OBJECT Message expression Método é o corpo de uma função em C Noção de Protocolo
Características ADA Pacotes são os mecanismos de abstração que modelam objetos Pacote possui tipos locais, variáveis e procedimentos
Características das Linguagens
Relação Intenção/Extensão de um conceito Determinar se um fenômeno é ou não coberto por um conceito Perspectiva Aristotélica : intensão define a extensão Perspectiva Prototipal : comparação Propriedade mandatária : descrita explicitamente no conceito Propriedade característica : implícita
Relação Intensão/Extensão
Processos de Abstração Quais são e quais suas propriedades? Classificação, Exemplificação, Especialização, Generalização, Agregação e Decomposição
Classificação Vai do fenômeno para o conceito Um objeto é classificado pela classe da qual é instanciado
Exemplificação Vai do conceito para o fenômeno A partir de classes instanciamos objetos A partir de classes podemos “pegar” um objeto
Especialização Cria um conceito especial a partir de um mais geral {extensão conceito especializado} está contida {extensão do conceito geral}
conceito geral X conceito especializado Herança : as propriedades do geral são as mesmas do especializado Modificação : uma prop. é mais elaborada num especializado Adicional : Propriedades aparecem no conceito especializado
Generalização Contrário da Especialização Só é suportada se isso for feito de forma explicita
Agregação Combinar vários conceitos num novo conceito É usualmente suportada por meio de variáveis de instancia
Agregado X Partes Aparição : propriedade é nova em relação às partes Propriedade da parte torna-se propriedade do agregado Cancealed : propriedade de uma das partes não torna-se propriedade do agregado
Decomposição Contrário da Agregação Esse processo só é considerado se for avaliado de forma explicita
Processos de Abstração
Processo de Abstração
Exemplificação suportada por instanciações Uso de valores iniciais : inicialização dos valores de um objeto Inicialização é feita através de parametrização Parametrização de valores é diferente de Generecidade
Agregação : características adicionais Linguagem somente suporta referencia a objetos somente? Referencia a objetos constituintes é suportada? Action Part Constituents
Especialização : características adicionais Linguagem suporta a extensibilidade de todos os tipos de propriedades? Referencia Action Part
Processo de Abstração: características adicionais
Modificação de propriedades Overriding : re-declaração do método Extensão : forçada ou não Combinação : uso de “super” ou “inner”
Propriedades : Características adicionais
Aspectos pragmáticos dos processos de abstração Caracteriza tais processos Time : O tempo de uso do processo(Estático ou Dinâmico) Order : Ordem dos produtos de um processo(Simples, Múltiplo)
Aspectos Pragmáticos Classificação por tempo : quando é feita a amarração objeto-classe Exemplificação simples : somente um fenômeno pode ser criado a partir de um conceito Especialização simples : conceito com uma única especialização
Aspectos Pragmáticos Especialização Múltipla : o mesmo conceito é especializado para vários conceitos Agregação múltipla : o mesmo conceito pode ser usado para formar vários conceitos agregados diferntes
Aspectos Pragmáticos
Classificação Implícita Tipagem estática ou dinâmica Uma referência “r” é dita qualificada pela classe C quando r pode ser associado com objetos de C r também é qualificada para subclasses de C
Referencias(r) e classes(C) Referencias de um tipo : C é usada apenas como uma descrição comum de objetos instanciados Referencia sem qualificação : protocolo não é explicitamente definido por alguma declaração
Especialização Simultânea Suporte para essa abstração através de herança múltipla Duplicação : superclasse comum nas superclasses herdadas Conflitos : mesmo nome herdado de varias superclasses
Aspectos pragmáticos : caracterização adicional
Os tipos de Conceitos Descrevem coisas -> Classes Descrevem ações -> Métodos Ação depende da coisa ou coisa depende da ação?
Tipos de Conceitos
Formas de execução de programas Ação - Combinação : como combinar as ações sequencial quasi-paralela concorrente
O conceito “conceito” Denominação : conceito Intenção : denominação + extensão + intensão Extensão : todos os conceitos Isso garante o suporte do framework ao nível de metaclasse
Tipos de Conceitos : Caracterização adicional
Resultado como diferenças relativas entre as lings em %