Emulação de um Gerenciador de Dados Orientado a Objetos através de uma Interface de Programação de Aplicativos sobre um Gerenciador Relacional - Sousa, Elaine Parros Machado de (2000)
Este trabalho mostra o desenvolvimento de uma Interface de Programação de Aplicativos (Application Program Interface - API) para um gerenciador de dados orientado a objetos. A API é composta por um conjunto de primitivas que integram a definição e a manipulação de objetos em uma representação compatível com uma linguagem de programação orientada a objetos. A definição da API explora os recursos básicos de modelos de dados orientados a objetos e baseia-se nas extensões de um metamodelo baseado em quatro abstrações: classificação, generalização, agregação e composição. O suporte à abstração de classificação com hierarquias em múltiplos níveis é tratado com especial destaque, pois resulta em uma das características predominantes da API: o tratamento homogêneo de tipos e instâncias em tempo de execução, unificando comandos usualmente separados em DDL (Data Definition Language) e DML (Data Manipulation Language). A implementação da API sobre um gerenciador relacional emula um gerenciador de dados orientado a objetos. Os conceitos envolvidos no trabalho de emulação foram aplicados no desenvolvimento de uma versão com núcleo relacional do Gerenciador de Objetos SIRIUS, criando em ambiente experimental, precursor à versão com núcleo nativo desse gerenciador. A API definida neste trabalho é compatível com ambas as versões do Gerenciador SIRIUS, permitindo que uma aplicação utilize qualquer uma das versões sem alterações em seu código fonte. Para exemplificar a utilização prática da API, foi implementado um utilitário de bases de dados destinado à representação de modelagens baseadas no modelo de dados SIRIUS usando a versão relacional do Gerenciador de Objetos SIRIUS. Esse utilitário, além de demonstrar a utilização da API, demonstra também como as operações típicas da DDL e da DML são integradas em um único conjunto de comandos que não faz diferença entre a definição de tipos e de instâncias.