• Nenhum resultado encontrado

5 CONSIDERAÇÕES FINAIS

5.2.5 Extensão de outras linguagens OO

Outras linguagens, como Java, poderiam ter sido utilizadas tanto para a implementação da biblioteca de apoio como para servir de linguagem base para a extensão. Porém, algumas características ausentes nesta e presentes em C#, como properties e possibilidade de passar parâmetros por referência para métodos, são utilizadas na implementação da biblioteca de apoio, na linguagem Association# e na aproximação semântica desta extensão de linguagem com a UML.

O uso da passagem de argumentos como referência é utilizado na destruição de objetos obrigatoriamente associados, sem o uso de um bloco atômico (ver Subseção 4.1.1.14, Figura 87). Esta característica

atua como vantagem no desempenho de execução, não havendo diferenças para a modelagem.

Properties são utilizadas na associação de interfaces, no código C# resultante de tradução (ver Subseção 4.1.1.11, Figura 75) e no código Association#. A ausência destas na implementação de associações (código C#) pode ser contornada substituindo-as por métodos. Entretanto, na codificação de interfaces em Association#, considerando que é impossível declarar variáveis de instância, elas permitem codificar atributos de forma mais intuitiva do que utilizar pares de métodos set e get.

5.3 CONCLUSÕES

Este trabalho, diferentemente dos trabalhos correlatos, apresentou uma forma de representar em código de linguagem de programação, associações da UML 2, abordando multiplicidade, navegabilidade, association end ownership e especialização de associações, resolvendo em uma única abordagem o problema da destruição de objetos obrigatoriamente associados, o problema da visibilidade global e o problema da referência perdida. Isto foi possível através da extensão de uma linguagem de programação orientada a objetos, acrescentando-se suporte nativo a associações, implementando estas (em código C# resultante de tradução) de forma similar ao pattern mutual friends composto por dois objetos de coleção.

Esta proposta de extensão de linguagem esconde do programador os detalhes de construção de associações, provendo abstração para estas, e resolve os problemas de navegabilidade, visibilidade e association end ownership na própria definição da extensão.

O uso desta linguagem elimina a necessidade de estabelecer code patterns para construção de associações, facilitando a codificação e o reconhecimento do código escrito, diminuindo a discrepância semântica entre a linguagem de programação e a linguagem de modelagem. 5.3.1 Trabalhos Futuros

Como proposta para trabalhos futuros, sugere-se estudos sobre: a) Possibilidades de inserção de uma nova funcionalidade no

garbage collector, que permita a este coletar objetos específicos, no exato momento em que estes perdem a última referência forte, possibilitando resolver o problema do association end não navegável;

b) Os conceitos da UML e as possibilidades de implementação de características dos association ends, como redefinição, subsetting, derivação, ordenação etc;

c) Inserção de associações n-árias, com verificação de limites de multiplicidade, na linguagem Association#;

d) Possibilidade de inserção de invariantes em Association# que sejam codificáveis em OCL;

e) Inserção da semântica de atributos com suas propriedades (multiplicidade, ordenação, etc) na linguagem Association#; f) Definição da semântica operacional da linguagem

Association#;

g) Implementação de um tradutor para a linguagem Association# que gere código C#.

REFERÊNCIAS

ALBANO, Antonio; GHELLI, Giorgio; ORSINI, Renzo. A relationship mechanism for a strongly typed object-oriented database programming language. In: INTERNATIONAL CONFERENCE ON VERY LARGE DATA BASES (VLDB), 17., 1991, Barcelona. Proceedings... San Francisco: Morgan Kaufmann Publishers Inc, 1991. p. 565-575. ISBN: 1-55860-150-3.

BALZER, Stephanie; GROSS, Tomas R.; EUGSTER, Patrick. A relational model of object collaborations and its use in reasoning about relationships. In: EUROPEAN CONFERENCE ON OBJECT-

ORIENTED PROGRAMMING (ECOOP), 21., 2007, Berlin. Lectures Notes in Computer Science. Heidelberg: Springer, 2007. v. 4609. p. 323-346. DOI: 10.1007/978-3-540-73589-2_16.

BIERMAN, Gavin M.; WREN, Alisdair. First-class relationships in an object-oriented language. In: EUROPEAN CONFERENCE ON OBJECT-ORIENTED PROGRAMMING (ECOOP), 19., 2005, Glasgow. Lectures Notes in Computer Science. Heidelberg: Springer, 2005. v. 3586. p. 262-286. DOI: 10.1007/11531142_12.

DEL CASTILLO, Carlos Ruiz. Implementación en java de asociaciones binarias uml. 2002. 165 p. Proyecto Fin de Carrera, Ingeniería Informática (Segundo Ciclo) - Universidad Carlos III de Madrid, Madrid, 2002. Disponível em:

<http://www.ie.inf.uc3m.es/ggenova/pfc-Carlos2002.html>. Acesso em: 2 julho 2011.

GAMA, Erich et al. Design patterns: elements of reusable object- oriented software. Boston: Addison-Wesley, 1995. 395 p. ISBN : 0201633612.

GÉNOVA, Gonzalo; DEL CASTILLO, Carlos Ruiz; LLORENS, Juan. Mapping uml associations into Java code. Journal of Object

Technology. v. 2, n. 5, p. 135-162, set. 2003. Disponível em: <http://www.jot.fm/issues/issue_2003_09/article4>. Acesso em: 12 outubro 2010. ISSN: 1660-1769

GESSENHARTER, Dominik. Mapping the uml2 semantics of associations to a java code generations model. In: ACM/IEEE INTERNATIONAL CONFERENCE ON MODEL DRIVEN ENGINEERING LANGUAGES AND SYSTEMS (MODELS), 11., 2008, Toulouse. Lectures Notes in Computer Science. Heidelberg: Springer, 2008. Volume 5301. p. 813-827. DOI: 10.1007/978-3-540- 87875-9_56

______. Implementing uml associations in java: a slim code pattern for a complex modeling concept. In: WORKSHOP ON RELATIONSHIPS AND ASSOCIATIONS IN OBJECT-ORIENTED LANGUAGES (RAOOL), 2., 2009, Genova. Proceedings… New York: ACM, 2009. p. 17-24. DOI: 10.1145/1562100.1562104.

LARMAN, Craig. Utilizando uml e padrões: uma introdução à análise e ao projeto orietado a objetos. Tradução de Luiz Augusto Meirelles Salgado. Porto Alegre: Bookman, 2000. 492 p. Título original: Applying uml and patterns: na introduction to object-oriented analysis and design.

MICROSOFT. C# Programmer’s Reference. Disponível em: <http://msdn.microsoft.com/en-us/library/618ayhy6(v=vs.71).aspx>. Acesso em: 1 julho 2011.

MONO PROJECT. Mono project: an cross-platform, open source .net development framework. Disponível em: <http://mono-project.com/>. Acesso em: 1 julho 2011.

NOBLE, James. Basic Relationship Patterns. In: EUROPEAN

CONFERENCE ON PATTERN LANGUAGES OF PROGRAMMING (EUROPLOP), 2., 1997, Irsee. Proceedings… Munich: Siemens AG, 1997.

OBJECT MANAGEMENT GROUP. Unified modeling language superstructure: version 2.3 without change bars. Maio 2010. Disponível em:

<http://www.omg.org/spec/UML/2.3/Superstructure/PDF/>. Acesso em: 15 setembro 2010.

ORACLE. Oracle technology network for java developers. Disponível em: <http://www.oracle.com/technetwork/java/>. Acesso em: 10 outubro 2011.

ØSTERBYE, Kasper. Design of a class library for association relationships. In: ACM SIGPLAN SYMPOSIUM ON LIBRARY- CENTRIC SOFTWARE DESIGN (LCSD), 2007, Montreal. Proceedings… New York: ACM, 2007. p. 67-75. DOI: 10.1145/1512762.1512769.

PEARCE, David J.; NOBLE, James. Relationship aspects. In: INTERNATIONAL CONFERENCE ON ASPECT-ORIENTED SOFTWARE DEVELOPMENT (AOSD), 5., 2006, Bonn. Proceedings… New York: ACM, 2006. p 75-86. DOI: 10.1145/1119655.1119668.

______;______. Relationship aspects patterns. In: EUROPEAN CONFERENCE ON PATTERN LANGUAGES OF PROGRAMS (EUROPLOP), 11., 2006, Irsee. Disponível em:

<http://homepages.ecs.vuw.ac.nz/~djp/files/PN-EPLOP06.pdf>. Acesso em: 21 junho 2011.

RUMBAUGH, James. Relations as semantic constructs in an object- oriented language. In: ACM CONFERENCE ON OBJECT ORIENTED PROGRAMMING SYSTEMS LANGUAGES AND APPLICATIONS (OOPSLA), 2., 1987, Orlando. Proceedings… New York: ACM, 1987. p. 466-481. DOI: 10.1145/38765.38850.

______; JACOBSON, Ivar; BOOCH, Grady. The unified modeling language reference manual. 2. ed. Boston: Addison-Wesley, 2004. 550 p. ISBN: 020130998X.

SHAH, Ashwin V. et al. Dsm: an object-relationship modeling language. In: ACM CONFERENCE ON OBJECT ORIENTED PROGRAMMING SYSTEMS LANGUAGES AND APPLICATIONS (OOPSLA), 4., 1989, New Orleans. Proceedings… New York: ACM, 1989. p. 191-202. ACM, New York (1989). DOI: 10.1145/74877.74898.

THE ECLIPSE FOUNDATION. The aspect project: crosscutting objects for better modularity. Disponível em