Paper NOVL - Naked Objects View Language- InfoBrasil 2012
Upcoming SlideShare
Loading in...5
×
 

Like this? Share it with your network

Share

Paper NOVL - Naked Objects View Language- InfoBrasil 2012

on

  • 624 views

 

Statistics

Views

Total Views
624
Views on SlideShare
486
Embed Views
138

Actions

Likes
1
Downloads
3
Comments
0

6 Embeds 138

http://brandaomg.blogspot.com.br 122
http://brandaomg.blogspot.com 10
http://www.blogger.com 2
http://brandaomg.blogspot.it 2
http://brandaomg.blogspot.com.es 1
http://brandaomg.blogspot.fr 1

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Paper NOVL - Naked Objects View Language- InfoBrasil 2012 Document Transcript

  • 1. Naked Objects View Language Marcius Gomes Brandão1, Mariela Ines Cortés1, Enyo J. T. Gonçalves 2 Abstract— A critical constraint to the use of the Naked interface de usuário a partir de uma linguagem definida noObjects architectural pattern is the automatic generation of a próprio modelo de negócio através de meta informações. Osingle generic user interface. For many developers and users, artigo está organizado como segue: na Seção II, os trabalhosthis restriction prevents the use of frameworks based on this relacionados são apresentados. Na Seção III é apresentado oarchetype. This article presents the Naked Objects ViewLanguage, a language for customization of user interfaces that referencial teórico em relação aos padrões Naked Objects euses the Naked Objects. The biggest benefit of this language is MVC, a notação EBNF e diagramas de sintaxe utilizados nathe ability to define multiple views for the same naked object, criação da linguagem e a técnica de design Layout Grid. Naregardless of the platform used and maintaining the Seção IV é apresentada a Naked Objects View Languagecharacteristics of the pattern. (NOVL). Na Seção V é ilustrado um estudo de caso. E por fim, na Seção VI, são apresentadas as conclusões e Resumo— Uma restrição crítica ao uso do padrão sugestões para trabalhos futuros.arquitetural Naked Objects reside na geração automática deuma única interface genérica de usuário. Para muitosdesenvolvedores e usuários essa restrição impede a utilização II. TRABALHOS RELACIONADOSde frameworks baseados em tal arquétipo. Este artigo Vários frameworks têm sido implementados com aapresenta a Naked Objects View Language, uma linguagem proposta do padrão Naked Objects, no entanto praticamentepara a customização das interfaces de usuários que utiliza opadrão Naked Objects. O maior benefício dessa linguagem é a nenhum deles oferece suporte adequado à customização dopossibilidade de definir múltiplas visões para o mesmo naked layout da interface do usuário de forma consistente com oobject, independentemente da plataforma utilizada e mantendo referido padrão.as características do padrão. Naked Objects Framework (NOF) [6] é a primeira implementação do padrão, liderado pelo próprio autor do Index Terms— Naked Objects; User Interface; Frameworks; arquétipo, Richard Pawson. As versões iniciais escritas emObject-oriented programming. Java 1.1 não permitiam nenhum tipo de personalização da interface genérica do usuário. Só em 2010, quando foi I. INTRODUÇÃO lançada a nova versão „Naked Objects MVC‟, agoraC om a crescente demanda por sistemas desenvolvidos utilizando linguagens de programação orientadas aobjeto, há necessidade de implementação da „completeza proprietário e para a plataforma dotNET, foi possível a customização da interface [5]. Entretanto estas personalizações são baseadas em código CSS e HTML que,comportamental‟ por estes sistemas [1], de modo que um além de espalhar as características visuais do modelo entre asobjeto modele completamente o comportamento do que ele camadas da aplicação, cria um nível de acoplamento muitose propõe a representar [2]. alto com a plataforma web, dificultando, por exemplo, a Naked Objects (NO) [3] é uma abordagem de reutilização do modelo em outra plataforma, como desktop.desenvolvimento de sistemas em que o núcleo dos objetos Apache ISIS [7] está sendo desenvolvido para ade negócio é mostrado diretamente na interface do usuário e plataforma Java como alternativa gratuita ao Naked Objectstodas as interações consistem em invocar os métodos desses MVC para dotNET e é liderado por Dan Haywood (ex-objetos. As vantagens dessa abordagem são (i) um rápido integrante do projeto original NOF) e pretende gerarciclo de desenvolvimento; (ii) grande agilidade; (iii) fácil aplicações que sejam executáveis tanto na plataforma webanálise de requisitos e (iv) uma interface de usuário mais quanto para desktop. O projeto ainda está empoderosa, pois tratam o usuário como um solucionador de desenvolvimento e a documentação atual não explicita aproblemas e não como um seguidor de processo [3][4]. forma de customização das interfaces, mas deixa claro que Embora o principal caso de sucesso do Naked Objects dependerá da plataforma de execução.tenha sido um aplicativo de missão-crítica de 1500 usuários Domain Object Explorer [8] permite a customização dospara um departamento do Governo irlandês, onde a interface controles de interfaces do usuário para as propriedades donão-personalizável funciona perfeitamente bem, esta mesma objeto de domínio (rótulo, ordem de apresentação, tamanho,interface não-personalizável é um dos maiores fatores que etc.). Entretanto uma customização completa é realizada porlimitou a aplicabilidade do padrão Naked Objects em outros meio de uma ferramenta externa que gera arquivos xml oudomínios [5]. Outra desvantagem é o mapeamento 1:1 entre jfrm ou por código Java baseando na API (Applicationo modelo e a visão, ou seja, para cada objeto do modelo Programming Interface) Swing [9], uma biblioteca contendotem-se uma única interface gráfica. diversos componentes que permitem a criação de interfaces Este artigo apresenta uma abordagem de customização da gráficas de usuários (GUI) para desktop. Em ambos os casos os artefatos gerados devem ser anexados ao projeto na marcius.brandao@uece.br, mariela@larces.uece.br, enyo@ufc.br mesma pasta e nome da classe de negócio. 1 Mestrado Acadêmico em Ciência da Computação - Universidade JMatter [10] é um framework proprietário e tem seuEstadual do Ceará principal mecanismo de geração de interfaces do usuário 2 Universidade Federal do Ceará
  • 2. baseado em Swing. As customizações de GUI do JMatter completos, pois este modelo promove a separação continuapodem ser em arquivos XML complementados com entre dados e procedimentos [3].sobreposição de códigos em classes do framework ou pelaconstrução completa da GUI através de código baseado naAPI Swing mais sobreposição de código e implementaçãode interfaces do framework [11]. Independente da forma de customização todas asalternativas apresentadas, além de aumentarem o nível deacoplamento com a tecnologia utilizada, quebram um dosprincípios básicos do Naked Objects Pattern (NOP) que é ageração automática das interfaces totalmente baseada nadefinição dos objetos de domínio[1][3], tirando o foco do Figura 1 - Arquitetura padrão em 4-camadas [3]desenvolvimento para as demais camadas da aplicação. No padrão Naked Objects as funções de visualização eTodos eles também estão atrelados à idéia da geração de controlador (como originalmente definidas no MVC) sãouma única GUI para cada objeto de domínio. Outros completamente genéricas e, por tanto, não há nenhum outroframeworks como dotObjects [12], Sanssouci [13] e Trails lugar para por as regras de negócios exceto nas entidades do[14] não apresentam documentação e nenhum indicativo se domínio (ou seja, no modelo), promovendo assim ao projeto está ativo ou não. modelagem de objetos com completude comportamental [3]. III. REFERENCIAL TEÓRICO Nesta seção são apresentados, de maneira sucinta, ospadrões Naked Objects e MVC, bem como o design LayoutGrid, que formam a base conceitual e técnica utilizadas paraelaboração da linguagem NOVL. Também é apresentada anotação EBNF e Diagrama de Sintaxe utilizados nadefinição formal da linguagem para a compreensão decompiladores e desenvolvedores, respectivamente.A. Naked Objects Pattern (NOP) Figura 2 - Arquitetura com Naked Objects [3] O conceito básico por trás do Naked Objects é que, ao B. O padrão MVCescrever um aplicativo de negócios, o desenvolvedor devecriar apenas os naked objects (os objetos de negócio que O padrão Model-View-Controller (MVC) [5] é amplamentemodelam o domínio [2][15]) e as suas respectivas lógicas de utilizado tanto pela indústria quanto pelo meio acadêmico.negócio encapsuladas. O framework que utilizar a Utilizado para separação das atribuições, permite que objetostecnologia se encarrega de disponibilizar, a partir dos de modelo (Model) se preocupem apenas com recursos deobjetos de negócio, a aplicação com interface gráfica, negócios de modelagem, não com a forma como serãopersistência e gerenciamento desses objetos. Além de apresentados para o usuário (View) e nem com a captura oueliminar a necessidade de escrever uma camada de interface resposta às entradas do usuário (Controller).do usuário e a camada de acesso a dados, o padrão Naked MVC separa as visões e modelos através doObjects também facilita uma boa modelagem dos objetos - estabelecimento de um protocolo de inscrição/notificaçãoporque o protótipo do modelo de domínio é transformado entre eles. Uma visão deve assegurar que sua aparênciadiretamente em um aplicativo que pode ser avaliado pelos reflete o estado do modelo e o modelo, sempre que éusuários de negócios [16]. modificado, notifica as visões que dependem dele. Essa Os três princípios do NOP são: (i) toda a lógica de negócio abordagem permite criar e adicionar vários modos dedeve ser encapsulada nos objetos de domínio, (ii) a interface exibição para um modelo sem reescrevê-lo [17].de usuário deve refletir completamente os objetos de O diagrama a seguir mostra um modelo com três modos dedomínio, incluindo todas as ações do usuário, como criar e exibição. O modelo contém alguns valores de dados e osrecuperar os objetos de domínio e (iii) a criação da interface modos de exibição em forma de planilha, histograma ede usuário deve ser inteiramente automatizada a partir dos gráfico de pizza exibem esses dados de várias maneiras [17].objetos de domínio [1][2]. O padrão arquitetural Naked Objects surgiu como umaalternativa ao padrão 4-camadas (Figura 1). Neste padrão,um simples conceito de negócio (por exemplo, um Cliente)será normalmente representado em todas as quatro camadas,em diferentes formas. Além disso, como indicado nodiagrama, as relações entre os elementos nessas quatrocamadas muitas vezes exigem um mapeamento complexo(muitos-para-muitos). Embora cada uma das camadas possa Figura 3 – Exemplo de três visões do mesmo modelo [17]ser orientada a objeto em um certo sentido, está muito longedo princípio original de objetos comportalmentalmente
  • 3. C. Layout Grid para EBNF. Diagramas de sintaxe são mais facilmente O alinhamento de elementos visuais é uma das principais compreendidos pela maioria das pessoas, uma vez quemaneiras que projetistas podem ajudar os usuários a permitem a exposição concisa e lúcida de uma sintaxe deexperimentar um produto de uma forma organizada e forma rigorosa, porém amigável. A regra básica para asistemática. Textos, controles e grupos de controles devem interpretação de um diagrama de sintaxe é que qualquerser alinhados horizontal e verticalmente (ver Figura 4). Em caminho traçado junto às direções diante das setas produzirágeral, todos os elementos na tela devem ser alinhados com um comando sintaticamente válido. A Figura 5 exibe otantos outros elementos quanto possível. A decisão de não digrama de sintaxe equivalente à notação EBNF do arquivoalinhar dois elementos ou grupos de elementos deve ser feita XML:criteriosamente e sempre para obter um efeito específico dediferenciação [18]. Figura 5 - Diagrama de Sintaxe para arquivos XML O conteúdo dentro das caixas de vértices arredondados deve aparecer literalmente no comando, enquanto o conteúdo das caixas retangulares indica o tipo de informação a ser escrita. IV. NAKED OBJECTS VIEW LANGUAGE (NOVL) Naked Objects View Language ou NOVL é uma Figura 4 - Adobe Lightroom: uso eficaz de alinhamento em linguagem de descrição de layout para o padrão Naked uma grade de layout[18] Objects. Seu objetivo é de personalizar as interfaces de Um esquema em grade é uma das mais poderosas usuário de forma simples e rápida utilizando texto simplesferramentas disponíveis para o projetista visual. no lugar de estruturas mais sofisticadas como SWING, CSS,Popularizada por tipógrafos suíços após a Segunda Guerra XML, HTML, etc., e sem a necessidade de um editorMundial, o uso de uma grade fornece uma estrutura uniforme gráfico de interface ou ferramentas externas.e consistente para um layout, que é particularmente NOVL se diferencia de outras linguagens de interface noimportante durante a criação de uma interface com vários sentido em que ela especifica a forma da interface e não oníveis de complexidade visual ou funcional. A utilização de caminho para chegar a ela. Isto reduz o ciclo de aprendizadoum sistema de grade no projeto de interface visual fornece daqueles que se iniciam na linguagem.vários benefícios como usabilidade, apelo estético e A NOVL é baseada no uso de layout grid [18] para dividireficiência. Uma grade bem projetada melhora a legibilidade o espaço da tela, onde uma grade alinha e organizada tela, cria uma sensação de ordem e deixa o usuário diferentes tipos de elementos inter-relacionados. Destaconfortável e predisposto a interagir com o produto. forma, a idéia é dividir a interface em linhas e colunas flexíveis e alinhar os componentes nas células da gradeD. EBNF e Diagramas de Sintaxe retangular que formam a tela, permitindo que cada Componentes gerais de uma linguagem de programação componente ocupe uma ou mais células.são a sua sintaxe e a sua semântica. A sintaxe de uma As próximas subseções definem e detalham a NOVL.linguagem influencia na maneira como os programas sãoescritos pelos programadores, lidos por outros A. Definição formal da NOVLprogramadores e reconhecidos pelo computador. A Para que os frameworks possam validar a sintaxe esemântica de uma linguagem determina como os programas interpretar os comandos da NOVL para gerar a GUIsão resolvidos pelos programadores, entendidos por outros utilizou-se a meta-linguagem EBNF [20], que define formalprogramadores e interpretados pelo computador [19]. e matematicamente uma linguagem. Na Figura 6 temos a A Extended Backus–Naur Form [20] é uma meta- descrição completa da NOVL em EBNF. A linguagem élinguagem utilizada para expressar e definir de maneira divida em três elementos. (i) view, que define a grade e aformal e matematicamente a sintaxe de uma linguagem não distribuição dos componentes na tela, (ii) component, queapenas de programação de computador, mas para definições define o tipo de componente que será inserido na grade, eformais. A maioria dos padrões de linguagem de (iii) member, um subcomponente que define qual e comoprogramação usa alguma variante da EBNF para definir a uma propriedade ou método de um naked object ougramática da língua, possibilitando a construção de controlador será apresentado.compiladores porque o analisador para o compilador podeser gerado automaticamente com um compilador decompilador como YACC[21]. Por exemplo, a seguinte notação define a sintaxe de umarquivo XML: XML::= "<" tag ">" ( XML+ | dado )? "</" tag ">" A partir desta definição é possível gerar automaticamente odiagrama de sintaxe [19][22] que é uma alternativa gráfica Figura 6 – Definição EBNF da NOVL
  • 4. As próximas subseções descrevem os três elementos da nova grade de duas colunas e duas linhas que ocupará as trêsNOVL utilizando diagramas de sintaxe gerados a partir da colunas da quarta linha da grade principal.definição EBNF [22]. 1 componentA:3; 2 componentB,componentC,componentD;B. O elemento View 3 componentE,componentF:2; A Figura 7 mostra o diagrama de sintaxe do elemento 4 [componentG,componentH; 5 componentI,componentJ]:3view que define a grade do layout da tela. Para distribuir os Figura 9 - Exemplo de um comando NOVLcomponentes em colunas utilizam-se vírgulas {,}, para Embora o rótulo de um componente, principalmente umindicar que um determinado componente ocupa mais de uma member, deva permanecer inalterado para manter acoluna (colspan) utiliza-se o símbolo dois pontos {:} consistência visual entre as diversas visões, há casosseguido da quantidade de colunas como sufixo do excepcionais onde se torna necessário modificá-lo. Nestescomponente. Finalmente, para a distribuição em linhas casos um novo rótulo, delimitado por aspas simples {‘},utiliza-se o ponto-e-vírgula {;}. pode ser prefixado ao nome do membro separado por dois pontos {:}. D. O elemento member Um membro é uma propriedade ou método de um naked object ou controlador (MVC), que será representado por seu respectivo controle visual na GUI de acordo com o tipo da propriedade (numérico, data, texto, etc.) e tecnologia utilizada pelo framework. Sua sintaxe é mostrada na Figura 10. Figura 7 - Diagrama de sintaxe do elemento ViewC. O elemento Component Um componente pode ser um simples texto (label), ummembro ou uma nova grade, e assim sucessivamente. Paradefinir uma nova grade, envolvemos os componentes comcolchetes {[...]}. O diagrama de sintaxe do elementocomponent é mostrado na Figura 8. Figura 8 - Diagrama de Sintaxe do elemento Component Por exemplo, a Tabela 1 apresenta uma grade quedistribui dez componentes necessários para a formação deuma determinada GUI. componentA componentB componentC componentD componentE componentF componentG componentH componentI componentJ Tabela 1 - Exemplo de estrutura de layout A Figura 9 apresenta o comando NOVL para a montagem Figura 10 - Diagrama de sintaxe do elemento Memberdesta grade. Na linha (1) o sufixo {:3} no componente A Para identificar um membro utiliza-se o nome do membroseguido por {;} indica que a grade principal terá 3 colunas e em case-sensitive. Para diferenciar visualmente umaeste componente irá ocupar todas as colunas da primeira propriedade de um método, estes devem ter dois parênteseslinha da grade. Na linha (2), as vírgulas {,} distribuem os {()} como sufixo e para diferenciar um membro do nakedcomponentes B,C e D pelas três colunas da segunda linha da object de um membro do controlador, estes devem ter ograde. Na linha (3), temos a mesma distribuição da linha dois prefixo {Ctrl.} mais o nome do controlador. Composiçõespor vírgulas para os componentes E e F, sendo que o sufixo podem ser aninhadas por ponto {.}. Por exemplo:{:2} de F indica que o mesmo ocupa duas colunas. Nas linhas endereco.cidade.estado.sigla.(4) e (5), os colchetes com o sufixo {:3} determinam uma Um asterisco {*} como prefixo indica que o membro é
  • 5. apenas para leitura, e uma hashtag {#} indica que o membro uma possível personalização e a notação equivalente emsempre estará em modo de entrada de dados pelo usuário. NOVL utilizando vários dos recursos da linguagem.Por exemplo, o comando *modifiedDate indica que o A. Interface típica de um framework NOPmembro é apenas para exibição na visão. O suporte a propriedades do tipo coleção ou listas de Podendo variar de acordo com o framework e tecnologiaobjetos é um dos diferenciais da linguagem, pois permite o utilizados, a Figura 11 mostra um layout típicamenteprojeto de subviews em uma sub-grade com os membros dos empregado na maioria dos frameworks que programam oelementos da lista, que por sua vez podem ser outras NOP. Qualquer exibição de outro naked object seguirá ocoleções, recursivamente. Esta sub-grade é definida mesmo modelo. Na tela na figura, gerada pelo NOF-MVCdelimitando a subview com os sinais de menor e maior para o naked object Product, todas as propriedades são{<...>} como prefixo da propriedade do tipo coleção. expostas verticalmente. A maioria dos frameworks permite a Em GUIs é comum a utilização de componentes visuais que definição da ordem em que as propriedades são exibidas. Asse expandem ou se colapsam. Para determinar que um desses ações do naked object são expostas em um menu suspensocomponentes apareça colapsado utiliza-se como sufixo o sinal acima da grade principal, e as ações dos controladores abaixo.de menos {-} e o sinal de mais {+} para expandido. A Tabela 2 explana todos os elementos da NOVL: Convenção Usado para Nome case-sensitive da propriedade do naked property object ou do controlador. Nome case-sensitive do método do naked Action object ou do controlador. , Separador de colunas. ; Separador de linhas. Colspan define quantas colunas o membro deve :colspan ocupar na grade (readonly) O membro sempre será exibido em Figura 11 - GUI gerada pelo NOF-MVC * modo de leitura (saída de dados) incondicionalmente. B. Interface personalizada usando NOVL (writeonly) O membro sempre será exibido em A apresentação das mesmas informações pode ser # modo de edição (entrada de dados) personalizada usando a NOVL. Na Figura 12 é apresentada incondicionalmente. uma possível interface para Product. Observe que nesta visão É um texto simples que será atribuído ao as propriedades e ações são agrupadas por co-relação. label próximo elemento. No caso de um membro, Propriedades importantes para o usuário ficam em primeiro substitui o rótulo padrão. plano e as menos importantes em segundo plano ou ocultas. [] Define uma sub-grade. Indica que o componente deve ser apresentado + inicialmente no modo expandido. Indica que o componente deve ser apresentado - inicialmente no modo recolhido. Delimita uma sub-grade que será apresentada a <...> partir dos membros do domínio de uma coleção. Tabela 2 - Convenções da NOVL No estudo de caso a seguir são apresentandos exemplosmais detalhados sobre os membros. V. ESTUDO DE CASO Nesta seção é apresentado um estudo de caso utilizando o Figura 12 - GUI gerada pela NOVLbanco de dados “Adventure Works Sample Database” [23], A grade principal na tela é formada por duas colunas eque contem, dentre outras informações, dados sobre duas linhas (em azul), a primeira linha é preenchida por umaprodução, vendas e comercialização de uma empresa sub-grade 2x4 que ocupa as duas colunas (em amarelo), e namultinacional fictícia chamada Adventure Works Cycles que segunda linha cada coluna é preenchida por uma sub-gradefabrica e vende bicicletas e seus acessórios. Neste estudo de 1x2, e assim sucessivamente (em vermelho).caso o foco será na personalização da interface de usuário Baseando-se na estrutura apresentada na Figura 12 , odo naked object Product. Para fins didáticos, inicialmente código NOVL necessário é detalhado na Figura 13.será apresentada uma interface típica dos frameworks, nocaso gerada pelo NOF-MVC, e em seguida será apresentada
  • 6. sem o uso de editores visuais de interfaces. Com isso, o ciclo de aprendizado pode ser reduzido, se comparado a outras tecnologias e a manutenção facilitada. Como trabalhos futuros é sugerido uma implementação de referência da linguagem para alguma tecnologia de projeto de GUI´s como Swing, JSF, HTML, etc., a utilização da linguagem em algum framework NOP, bem como a avaliação e extensão da linguagem para abordar outros aspectos das interfaces gráficas de usuários. Assim, os desenvolvedores poderão beneficiar-se do uso de NOVL e suas futuras aplicações para concentrar seus esforços apenas no domínio da aplicação, sem a preocupação de como a interface será implementada. REFERÊNCIAS BIBLIOGRÁFICAS [1] Aruna Raja and Devika Lakshmanan, "Naked Objects Framework," International Journal of Computer Applications, vol. I, no. 20, 2010. [2] Richard Pawson and Robert Matthews, Naked Objects. New York: Wiley, 2002. [3] Richard Pawson, Naked Objects, Phd thesis. Dublin: Trinity College, 2004. Figura 13 – Código NOVL de customização de Product. [4] Richard Pawson and Robert Matthews, "Naked objects: a technique Inicialmente foram definidos quatro agrupamentos for designing more expressive systems," ACM SIGPLAN Notices, vol. 36, no. 12, 2001.principais: Product (linha 69 a 72), Dates (linha 75 a 78), [5] Richard Pawson. (2010, Novembro) InfoQ. [Online].Estoque (linha 79 a 86) e Details (linha 91 a 98). Note que http://www.infoq.com/articles/Nacked-MVCeste último deve aparecer no modo colapsado para o usuário [6] Naked Objects Group. (2010) Naked Objects MVC. [Online].e por isto é sufixado com o sinal de menos. http://nakedobjects.net O primeiro ponto-e-vírgula (linha 73) logo após o [7] Apache Isis. (2010) Apache Isis. [Online].primeiro componente sufixado com {:2} (linhas 69 a 72), http://incubator.apache.org/isis/index.htmluma sub-grade com rótulo „Product‟, definem a grade [8] Domain Object Explorer for JPA / EJB3 entity beans. [Online].principal em duas colunas e duas linhas e este componente http://java.net/projects/doe/pages/Homeocupará as duas colunas da primeira linha, enquanto que na [9] Oracle and/or its affiliates. (2012) The Java Tutorials. [Online].segunda linha uma subgrade de duas linhas é definida para http://docs.oracle.com/javase/tutorial/ui/overview/intro.htmlcada coluna (linhas 74, 87 a 89 e 99). [10] Jmatter. [Online]. http://jmatter.org/ Observe que tanto as ações do domínio como as do [11] Eitan Suez, "Customized Views and Editors," in Building Software Applications with JMATTER.: JMatterSoft LLC, 2009, ch. 14, pp. 171-controlador podem ser posicionadas livremente em qualquer 182.parte da visão, de acordo com as necessidades ou gosto dos [12] CodePlex - Open Source Community. [Online].usuários (linhas 71,72, 84, 85, 86 e 90). Observe também que http://dotobjects.codeplex.com/a propriedade photos (linha 90) é do tipo coleção de fotos e [13] Free Code. [Online]. http://freecode.com/projects/sanssouciuma subvisão foi criada para exibir os seus membros:a [14] Trails. [Online]. http://www.trailsframework.org/propriedade largePhoto e o método para adicionar mais [15] Richard Pawson and Robert Matthews, Naked Objects, tradução ed.,fotos addOrChangePhoto(). Como photos está prefixada com Osvaldo Kotaro Takai and João Eduardo Ferreira, Eds., 2002.asterisco o componente visual para este membro deve sempre [16] Richard Pawson. (2008, Dezembro) InforQ. [Online].estar em modo de leitura, mesmo que a tela mude para o http://www.infoq.com/articles/RAD-Naked-Objectsmodo de edição. Photos também teve seu rótulo removido [17] Erich Gama, Richard Helm, Ralph Johnson, and John Vlissides,para evitar uma repetição indesejável com o rótulo do painel. Design Patterns - Elements of Reusable Object-Oriented Software.: Addison-Wesley, 1998. VI. CONCLUSÕES E TRABALHOS FUTUROS [18] Alan Cooper, Robert Reimann, and David Cronin, About Face 3 : The Essentials of Interaction Design. Indianapolis: Wiley Publishing, Inc., Este artigo apresenta a Naked Objects View Language, 2007.que possibilita a definição de múltiplas visualizações através [19] David A. Watt, Programming Language Concepts and Paradigms.:de metadados em cada objeto do domínio. Desta forma Prentice Hall, 1990.interfaces de usuário personalizadas podem ser [20] ISO/IEC 14977, Information technology—Syntactic metalanguage— Extended BNF., 1996.especificadas através da linguagem. Com isso, um dos [21] John R. Levine, Tony Mason, and Doug Brown, Lex & Yacc, 2nd ed.,principais limitadores da utilização do padrão Naked Dale Dougherty, Ed. United States of America: OReilly, 1992.Objects pode ser contornado, sem ferir o padrão, pois nem o [22] Gunther Rademacher. (2012, Janeiro) Railroad Diagram Generator.comportamento nem a forma de armazenamento dos objetos [Online]. http://railroad.my28msec.com/rr/uisão modificados. [23] Microsoft. MSDN. [Online]. http://msdn.microsoft.com/en- Por diferenciar-se de outras linguagens de interface no us/library/ms124501%28v=sql.100%29.aspxsentido em que ela especifica a forma da interface e não ocaminho para chegar a ela, é possível a codificação direta