Por favor, use este identificador para citar o enlazar este ítem:
http://hdl.handle.net/11422/7789
Especie: | Trabalho de conclusão de graduação |
Título : | CPPObjects: Biblioteca de mapeamento objeto-relacional em C++ |
Autor(es)/Inventor(es): | Lima, Rodolfo Schulz de |
Tutor: | Villas-Boas, Sergio Barbosa |
Resumen: | Este projeto descreve a implementação de uma biblioteca na linguagem de programação C++ chamada CPPObjects que visa facilitar o desenvolvimento de aplicações que lidam com informações armazenadas em bancos de dados relacionais. Isto é feito através de procedimentos que mapeiam o modelo relacional em um modelo orientado a objetos com ênfase na possibilidade de navegação entre os objetos relacionados através de referências, tal como em um modelo em rede.Partindo de uma descrição lógica das entidades a serem armazenadas e seus relacionamentos entre si (diagrama ER), a biblioteca oferece ferramentas que possibilitam o mapeamento desta descrição para código-fonte em C++ de uma forma direta e eficiente utilizando o paradigma de modelagem orientada a objetos. Nestes modelo, cada objeto representa uma entidade do domínio e pode estar ligado a zero ou mais objetos relacionados, e outros objetos por sua vez podem estar ligados a ele, formando assim uma rede de objetos onde a partir de um objetos e chega a qualquer outro que esteja direta ou indiretamente relacionado a ele. De posse da descrição do sistema em C++, a biblioteca utiliza as informações passadas sobre este sistema (metainformações) para poder criar o esquema de banco de dados respeitando as relações entre os objetos, suas cardinalidades e os tipos e propriedades dos atributos de cada entidade.Uma vez criado o banco de dados, o desenvolvedor o popula instanciando objetos e preenchendo seus atributos e os de seus objetos relacionados. Partindo então de um objeto da rede,o desenvolvedor por meio da biblioteca inclui o objeto no banco de dados. Todos os objetos relacionados direta ou indiretamente ao objeto inserido serão também inseridos no banco. Com o banco de dados populado, o desenvolvedor pode realizar então consultas fazendo ouso ou não de filtros que restringem o conjunto de objetos retornados. Estes filtros são criados utilizando-se uma sintaxe própria da linguagem C++ que se assemelha à sintaxe das cláusulas WHERE da linguagem SQL. Cada objeto retornado pela consulta está ligado aos seus objetos relacionados e estes podem ser acessados diretamente. Alterações em objetos que já armazenados podem ser realizadas. Ao atualizar o banco de dados, a biblioteca somente irá atualizar os objetos que foram modificados, inserindo, atualizando ou removendo objetos de forma que a rede de objetos alterada pelo usuário seja refletida no banco, de forma eficiente.Diversas técnicas de desenvolvimento foram utilizadas para tornar a linguagem C++ própria para a representação e manipulação das entidades e seus relacionamentos. Aproveitando-se que ela aceita vários paradigmas de desenvolvimento, técnicas como programação genérica, programação orientada a objetos, meta-programação entre outras, foram empregadas visando ganho sem otimização tanto temporal quanto espacial, checagem de erros já em tempo de compilação,diminuição de tempo de compilação de aplicações e a minimização das situações onde uma alteração na biblioteca, seja por mudança de funcionalidade ou correção de defeitos, não acarrete a necessidade de recompilação de aplicações que dependam dela. |
Materia: | C++ base de dados |
Materia CNPq: | CNPQ::ENGENHARIAS |
Unidade de producción: | Escola Politécnica |
Editor: | Universidade Federal do Rio de Janeiro |
Fecha de publicación: | nov-2008 |
País de edición : | Brasil |
Idioma de publicación: | por |
Tipo de acceso : | Acesso Aberto |
Aparece en las colecciones: | Engenharia Eletrônica e de Computação |
Ficheros en este ítem:
Fichero | Descripción | Tamaño | Formato | |
---|---|---|---|---|
monopoli10003014.pdf | 354.78 kB | Adobe PDF | Visualizar/Abrir |
Los ítems de DSpace están protegidos por copyright, con todos los derechos reservados, a menos que se indique lo contrario.