CPPObjects: Biblioteca de mapeamento objeto-relacional em C++
Autor(a) principal: | |
---|---|
Data de Publicação: | 2008 |
Tipo de documento: | Trabalho de conclusão de curso |
Idioma: | por |
Título da fonte: | Repositório Institucional da UFRJ |
Texto Completo: | http://hdl.handle.net/11422/7789 |
Resumo: | 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. |
id |
UFRJ_37b51cb8f49bd448ee82faf8b002951b |
---|---|
oai_identifier_str |
oai:pantheon.ufrj.br:11422/7789 |
network_acronym_str |
UFRJ |
network_name_str |
Repositório Institucional da UFRJ |
repository_id_str |
|
spelling |
Lima, Rodolfo Schulz deVillas-Boas, Sergio Barbosa2019-05-07T16:08:06Z2023-11-30T03:03:26Z2008-11http://hdl.handle.net/11422/7789Submitted by Moreno Barros (moreno@ct.ufrj.br) on 2019-05-03T17:41:31Z No. of bitstreams: 1 monopoli10003014.pdf: 363290 bytes, checksum: e79bd725e74e3226e0c06cc6e3c6de09 (MD5)Approved for entry into archive by Moreno Barros (moreno@ct.ufrj.br) on 2019-05-07T16:08:06Z (GMT) No. of bitstreams: 1 monopoli10003014.pdf: 363290 bytes, checksum: e79bd725e74e3226e0c06cc6e3c6de09 (MD5)Made available in DSpace on 2019-05-07T16:08:06Z (GMT). No. of bitstreams: 1 monopoli10003014.pdf: 363290 bytes, checksum: e79bd725e74e3226e0c06cc6e3c6de09 (MD5) Previous issue date: 2008-11Este 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.porUniversidade Federal do Rio de JaneiroUFRJBrasilEscola PolitécnicaCNPQ::ENGENHARIASC++base de dadosCPPObjects: Biblioteca de mapeamento objeto-relacional em C++info:eu-repo/semantics/publishedVersioninfo:eu-repo/semantics/bachelorThesisabertoinfo:eu-repo/semantics/openAccessreponame:Repositório Institucional da UFRJinstname:Universidade Federal do Rio de Janeiro (UFRJ)instacron:UFRJORIGINALmonopoli10003014.pdfmonopoli10003014.pdfapplication/pdf363290http://pantheon.ufrj.br:80/bitstream/11422/7789/1/monopoli10003014.pdfe79bd725e74e3226e0c06cc6e3c6de09MD51LICENSElicense.txtlicense.txttext/plain; charset=utf-81853http://pantheon.ufrj.br:80/bitstream/11422/7789/2/license.txtdd32849f2bfb22da963c3aac6e26e255MD5211422/77892023-11-30 00:03:26.592oai:pantheon.ufrj.br:11422/7789TElDRU7Dh0EgTsODTy1FWENMVVNJVkEgREUgRElTVFJJQlVJw4fDg08KCkFvIGFzc2luYXIgZSBlbnRyZWdhciBlc3RhIGxpY2Vuw6dhLCB2b2PDqihzKSBvKHMpIGF1dG9yKGVzKSBvdSBwcm9wcmlldMOhcmlvKHMpIGRvcyBkaXJlaXRvcyBhdXRvcmFpcyBjb25jZWRlKG0pIGFvIFJlcG9zaXTDs3JpbyBQYW50aGVvbiBkYSBVbml2ZXJzaWRhZGUgRmVkZXJhbCBkbyBSaW8gZGUgSmFuZWlybyAoVUZSSikgbyBkaXJlaXRvIG7Do28gLSBleGNsdXNpdm8gZGUgcmVwcm9kdXppciwgY29udmVydGVyIChjb21vIGRlZmluaWRvIGFiYWl4byksIGUvb3UgZGlzdHJpYnVpciBvIGRvY3VtZW50byBlbnRyZWd1ZSAoaW5jbHVpbmRvIG8gcmVzdW1vKSBlbSB0b2RvIG8gbXVuZG8sIGVtIGZvcm1hdG8gZWxldHLDtG5pY28gZSBlbSBxdWFscXVlciBtZWlvLCBpbmNsdWluZG8sIG1hcyBuw6NvIGxpbWl0YWRvIGEgw6F1ZGlvIGUvb3UgdsOtZGVvLgoKVm9jw6ogY29uY29yZGEgcXVlIGEgVUZSSiBwb2RlLCBzZW0gYWx0ZXJhciBvIGNvbnRlw7pkbywgdHJhZHV6aXIgYSBhcHJlc2VudGHDp8OjbyBkZSBxdWFscXVlciBtZWlvIG91IGZvcm1hdG8gY29tIGEgZmluYWxpZGFkZSBkZSBwcmVzZXJ2YcOnw6NvLgoKVm9jw6ogdGFtYsOpbSBjb25jb3JkYSBxdWUgYSBVRlJKIHBvZGUgbWFudGVyIG1haXMgZGUgdW1hIGPDs3BpYSBkZXNzYSBzdWJtaXNzw6NvIHBhcmEgZmlucyBkZSBzZWd1cmFuw6dhLCBiYWNrLXVwIGUgcHJlc2VydmHDp8OjbyBkaWdpdGFsLgoKRGVjbGFyYSBxdWUgbyBkb2N1bWVudG8gZW50cmVndWUgw6kgc2V1IHRyYWJhbGhvIG9yaWdpbmFsLCBlIHF1ZSB2b2PDqiB0ZW0gbyBkaXJlaXRvIGRlIGNvbmNlZGVyIG9zIGRpcmVpdG9zIGNvbnRpZG9zIG5lc3RhIGxpY2Vuw6dhLiBWb2PDqiB0YW1iw6ltIGRlY2xhcmEgcXVlIGEgc3VhIGFwcmVzZW50YcOnw6NvLCBjb20gbyBtZWxob3IgZGUgc2V1cyBjb25oZWNpbWVudG9zLCBuw6NvIGluZnJpbmdpIGRpcmVpdG9zIGF1dG9yYWlzIGRlIHRlcmNlaXJvcy4KClNlIG8gZG9jdW1lbnRvIGVudHJlZ3VlIGNvbnTDqW0gbWF0ZXJpYWwgZG8gcXVhbCB2b2PDqiBuw6NvIHRlbSBkaXJlaXRvcyBkZSBhdXRvciwgZGVjbGFyYSBxdWUgb2J0ZXZlIGEgcGVybWlzc8OjbyBpcnJlc3RyaXRhIGRvIGRldGVudG9yIGRvcyBkaXJlaXRvcyBhdXRvcmFpcyBlIGNvbmNlZGUgYSBVRlJKIG9zIGRpcmVpdG9zIHJlcXVlcmlkb3MgcG9yIGVzdGEgbGljZW7Dp2EsIGUgcXVlIGVzc2UgbWF0ZXJpYWwgZGUgcHJvcHJpZWRhZGUgZGUgdGVyY2Vpcm9zIGVzdMOhIGNsYXJhbWVudGUgaWRlbnRpZmljYWRvIGUgcmVjb25oZWNpZG8gbm8gdGV4dG8gb3UgY29udGXDumRvIGRhIHN1Ym1pc3PDo28uCgpTZSBvIGRvY3VtZW50byBlbnRyZWd1ZSDDqSBiYXNlYWRvIGVtIHRyYWJhbGhvIHF1ZSBmb2ksIG91IHRlbSBzaWRvIHBhdHJvY2luYWRvIG91IGFwb2lhZG8gcG9yIHVtYSBhZ8OqbmNpYSBvdSBvdXRybyhzKSBvcmdhbmlzbW8ocykgcXVlIG7Do28gYSBVRlJKLCB2b2PDqiBkZWNsYXJhIHF1ZSBjdW1wcml1IHF1YWxxdWVyIGRpcmVpdG8gZGUgUkVWSVPDg08gb3UgZGUgb3V0cmFzIG9icmlnYcOnw7VlcyByZXF1ZXJpZGFzIHBvciBjb250cmF0byBvdSBhY29yZG8uCgpBIFVGUkogaXLDoSBpZGVudGlmaWNhciBjbGFyYW1lbnRlIG8ocykgc2V1KHMpIG5vbWUocykgY29tbyBhdXRvcihlcykgb3UgcHJvcHJpZXTDoXJpbyhzKSBkYSBzdWJtaXNzw6NvLCBlIG7Do28gZmFyw6EgcXVhbHF1ZXIgYWx0ZXJhw6fDo28sIHBhcmEgYWzDqW0gZGFzIHBlcm1pdGlkYXMgcG9yIGVzdGEgbGljZW7Dp2EsIG5vIGF0byBkZSBzdWJtaXNzw6NvLgo=Repositório de PublicaçõesPUBhttp://www.pantheon.ufrj.br/oai/requestopendoar:2023-11-30T03:03:26Repositório Institucional da UFRJ - Universidade Federal do Rio de Janeiro (UFRJ)false |
dc.title.pt_BR.fl_str_mv |
CPPObjects: Biblioteca de mapeamento objeto-relacional em C++ |
title |
CPPObjects: Biblioteca de mapeamento objeto-relacional em C++ |
spellingShingle |
CPPObjects: Biblioteca de mapeamento objeto-relacional em C++ Lima, Rodolfo Schulz de CNPQ::ENGENHARIAS C++ base de dados |
title_short |
CPPObjects: Biblioteca de mapeamento objeto-relacional em C++ |
title_full |
CPPObjects: Biblioteca de mapeamento objeto-relacional em C++ |
title_fullStr |
CPPObjects: Biblioteca de mapeamento objeto-relacional em C++ |
title_full_unstemmed |
CPPObjects: Biblioteca de mapeamento objeto-relacional em C++ |
title_sort |
CPPObjects: Biblioteca de mapeamento objeto-relacional em C++ |
author |
Lima, Rodolfo Schulz de |
author_facet |
Lima, Rodolfo Schulz de |
author_role |
author |
dc.contributor.author.fl_str_mv |
Lima, Rodolfo Schulz de |
dc.contributor.advisor1.fl_str_mv |
Villas-Boas, Sergio Barbosa |
contributor_str_mv |
Villas-Boas, Sergio Barbosa |
dc.subject.cnpq.fl_str_mv |
CNPQ::ENGENHARIAS |
topic |
CNPQ::ENGENHARIAS C++ base de dados |
dc.subject.por.fl_str_mv |
C++ base de dados |
description |
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. |
publishDate |
2008 |
dc.date.issued.fl_str_mv |
2008-11 |
dc.date.accessioned.fl_str_mv |
2019-05-07T16:08:06Z |
dc.date.available.fl_str_mv |
2023-11-30T03:03:26Z |
dc.type.status.fl_str_mv |
info:eu-repo/semantics/publishedVersion |
dc.type.driver.fl_str_mv |
info:eu-repo/semantics/bachelorThesis |
format |
bachelorThesis |
status_str |
publishedVersion |
dc.identifier.uri.fl_str_mv |
http://hdl.handle.net/11422/7789 |
url |
http://hdl.handle.net/11422/7789 |
dc.language.iso.fl_str_mv |
por |
language |
por |
dc.rights.driver.fl_str_mv |
info:eu-repo/semantics/openAccess |
eu_rights_str_mv |
openAccess |
dc.publisher.none.fl_str_mv |
Universidade Federal do Rio de Janeiro |
dc.publisher.initials.fl_str_mv |
UFRJ |
dc.publisher.country.fl_str_mv |
Brasil |
dc.publisher.department.fl_str_mv |
Escola Politécnica |
publisher.none.fl_str_mv |
Universidade Federal do Rio de Janeiro |
dc.source.none.fl_str_mv |
reponame:Repositório Institucional da UFRJ instname:Universidade Federal do Rio de Janeiro (UFRJ) instacron:UFRJ |
instname_str |
Universidade Federal do Rio de Janeiro (UFRJ) |
instacron_str |
UFRJ |
institution |
UFRJ |
reponame_str |
Repositório Institucional da UFRJ |
collection |
Repositório Institucional da UFRJ |
bitstream.url.fl_str_mv |
http://pantheon.ufrj.br:80/bitstream/11422/7789/1/monopoli10003014.pdf http://pantheon.ufrj.br:80/bitstream/11422/7789/2/license.txt |
bitstream.checksum.fl_str_mv |
e79bd725e74e3226e0c06cc6e3c6de09 dd32849f2bfb22da963c3aac6e26e255 |
bitstream.checksumAlgorithm.fl_str_mv |
MD5 MD5 |
repository.name.fl_str_mv |
Repositório Institucional da UFRJ - Universidade Federal do Rio de Janeiro (UFRJ) |
repository.mail.fl_str_mv |
|
_version_ |
1784097138371723264 |