Você está na página 1de 6

Naked Objects View Language

Marcius Gomes Brando1, Mariela Ines Corts1, Enyo J. T. Gonalves2


Abstract A critical constraint to the use of the Naked Objects architectural pattern is the automatic generation of a single generic user interface. For many developers and users, this restriction prevents the use of frameworks based on this archetype. This article presents the Naked Objects View Language, a language for customization of user interfaces that uses the Naked Objects. The biggest benefit of this language is the ability to define multiple views for the same naked object, regardless of the platform used and maintaining the characteristics of the pattern. Resumo Uma restrio crtica ao uso do padro arquitetural Naked Objects reside na gerao automtica de uma nica interface genrica de usurio. Para muitos desenvolvedores e usurios essa restrio impede a utilizao de frameworks baseados em tal arqutipo. Este artigo apresenta a Naked Objects View Language, uma linguagem para a customizao das interfaces de usurios que utiliza o padro Naked Objects. O maior benefcio dessa linguagem a possibilidade de definir mltiplas vises para o mesmo naked object, independentemente da plataforma utilizada e mantendo as caractersticas do padro. Index Terms Naked Objects; User Interface; Frameworks; Object-oriented programming.

interface de usurio a partir de uma linguagem definida no prprio modelo de negcio atravs de meta informaes. O artigo est organizado como segue: na Seo II, os trabalhos relacionados so apresentados. Na Seo III apresentado o referencial terico em relao aos padres Naked Objects e MVC, a notao EBNF e diagramas de sintaxe utilizados na criao da linguagem e a tcnica de design Layout Grid. Na Seo IV apresentada a Naked Objects View Language (NOVL). Na Seo V ilustrado um estudo de caso. E por fim, na Seo VI, so apresentadas as concluses e sugestes para trabalhos futuros. II. TRABALHOS RELACIONADOS Vrios frameworks tm sido implementados com a proposta do padro Naked Objects, no entanto praticamente nenhum deles oferece suporte adequado customizao do layout da interface do usurio de forma consistente com o referido padro. Naked Objects Framework (NOF) [6] a primeira implementao do padro, liderado pelo prprio autor do arqutipo, Richard Pawson. As verses iniciais escritas em Java 1.1 no permitiam nenhum tipo de personalizao da interface genrica do usurio. S em 2010, quando foi lanada a nova verso Naked Objects MVC, agora proprietrio e para a plataforma dotNET, foi possvel a customizao da interface [5]. Entretanto estas personalizaes so baseadas em cdigo CSS e HTML que, alm de espalhar as caractersticas visuais do modelo entre as camadas da aplicao, cria um nvel de acoplamento muito alto com a plataforma web, dificultando, por exemplo, a reutilizao do modelo em outra plataforma, como desktop. Apache ISIS [7] est sendo desenvolvido para a plataforma Java como alternativa gratuita ao Naked Objects MVC para dotNET e liderado por Dan Haywood (exintegrante do projeto original NOF) e pretende gerar aplicaes que sejam executveis tanto na plataforma web quanto para desktop. O projeto ainda est em desenvolvimento e a documentao atual no explicita a forma de customizao das interfaces, mas deixa claro que depender da plataforma de execuo. Domain Object Explorer [8] permite a customizao dos controles de interfaces do usurio para as propriedades do objeto de domnio (rtulo, ordem de apresentao, tamanho, etc.). Entretanto uma customizao completa realizada por meio de uma ferramenta externa que gera arquivos xml ou jfrm ou por cdigo Java baseando na API (Application Programming Interface) Swing [9], uma biblioteca contendo diversos componentes que permitem a criao de interfaces grficas de usurios (GUI) para desktop. Em ambos os casos os artefatos gerados devem ser anexados ao projeto na mesma pasta e nome da classe de negcio. JMatter [10] um framework proprietrio e tem seu principal mecanismo de gerao de interfaces do usurio

I. INTRODUO

om a crescente demanda por sistemas desenvolvidos utilizando linguagens de programao orientadas a objeto, h necessidade de implementao da completeza comportamental por estes sistemas [1], de modo que um objeto modele completamente o comportamento do que ele se prope a representar [2]. Naked Objects (NO) [3] uma abordagem de desenvolvimento de sistemas em que o ncleo dos objetos de negcio mostrado diretamente na interface do usurio e todas as interaes consistem em invocar os mtodos desses objetos. As vantagens dessa abordagem so (i) um rpido ciclo de desenvolvimento; (ii) grande agilidade; (iii) fcil anlise de requisitos e (iv) uma interface de usurio mais poderosa, pois tratam o usurio como um solucionador de problemas e no como um seguidor de processo [3][4]. Embora o principal caso de sucesso do Naked Objects tenha sido um aplicativo de misso-crtica de 1500 usurios para um departamento do Governo irlands, onde a interface no-personalizvel funciona perfeitamente bem, esta mesma interface no-personalizvel um dos maiores fatores que limitou a aplicabilidade do padro Naked Objects em outros domnios [5]. Outra desvantagem o mapeamento 1:1 entre o modelo e a viso, ou seja, para cada objeto do modelo tem-se uma nica interface grfica. Este artigo apresenta uma abordagem de customizao da
marcius.brandao@uece.br, mariela@larces.uece.br, enyo@ufc.br 1 Mestrado Acadmico em Cincia da Computao - Universidade Estadual do Cear 2 Universidade Federal do Cear

baseado em Swing. As customizaes de GUI do JMatter podem ser em arquivos XML complementados com sobreposio de cdigos em classes do framework ou pela construo completa da GUI atravs de cdigo baseado na API Swing mais sobreposio de cdigo e implementao de interfaces do framework [11]. Independente da forma de customizao todas as alternativas apresentadas, alm de aumentarem o nvel de acoplamento com a tecnologia utilizada, quebram um dos princpios bsicos do Naked Objects Pattern (NOP) que a gerao automtica das interfaces totalmente baseada na definio dos objetos de domnio[1][3], tirando o foco do desenvolvimento para as demais camadas da aplicao. Todos eles tambm esto atrelados idia da gerao de uma nica GUI para cada objeto de domnio. Outros frameworks como dotObjects [12], Sanssouci [13] e Trails [14] no apresentam documentao e nenhum indicativo se o projeto est ativo ou no. III. REFERENCIAL TERICO Nesta seo so apresentados, de maneira sucinta, os padres Naked Objects e MVC, bem como o design Layout Grid, que formam a base conceitual e tcnica utilizadas para elaborao da linguagem NOVL. Tambm apresentada a notao EBNF e Diagrama de Sintaxe utilizados na definio formal da linguagem para a compreenso de compiladores e desenvolvedores, respectivamente. A. Naked Objects Pattern (NOP) O conceito bsico por trs do Naked Objects que, ao escrever um aplicativo de negcios, o desenvolvedor deve criar apenas os naked objects (os objetos de negcio que modelam o domnio [2][15]) e as suas respectivas lgicas de negcio encapsuladas. O framework que utilizar a tecnologia se encarrega de disponibilizar, a partir dos objetos de negcio, a aplicao com interface grfica, persistncia e gerenciamento desses objetos. Alm de eliminar a necessidade de escrever uma camada de interface do usurio e a camada de acesso a dados, o padro Naked Objects tambm facilita uma boa modelagem dos objetos porque o prottipo do modelo de domnio transformado diretamente em um aplicativo que pode ser avaliado pelos usurios de negcios [16]. Os trs princpios do NOP so: (i) toda a lgica de negcio deve ser encapsulada nos objetos de domnio, (ii) a interface de usurio deve refletir completamente os objetos de domnio, incluindo todas as aes do usurio, como criar e recuperar os objetos de domnio e (iii) a criao da interface de usurio deve ser inteiramente automatizada a partir dos objetos de domnio [1][2]. O padro arquitetural Naked Objects surgiu como uma alternativa ao padro 4-camadas (Figura 1). Neste padro, um simples conceito de negcio (por exemplo, um Cliente) ser normalmente representado em todas as quatro camadas, em diferentes formas. Alm disso, como indicado no diagrama, as relaes entre os elementos nessas quatro camadas muitas vezes exigem um mapeamento complexo (muitos-para-muitos). Embora cada uma das camadas possa ser orientada a objeto em um certo sentido, est muito longe do princpio original de objetos comportalmentalmente

completos, pois este modelo promove a separao continua entre dados e procedimentos [3].

Figura 1 - Arquitetura padro em 4-camadas [3]

No padro Naked Objects as funes de visualizao e controlador (como originalmente definidas no MVC) so completamente genricas e, por tanto, no h nenhum outro lugar para por as regras de negcios exceto nas entidades do domnio (ou seja, no modelo), promovendo assim a modelagem de objetos com completude comportamental [3].

Figura 2 - Arquitetura com Naked Objects [3]

B. O padro MVC O padro Model-View-Controller (MVC) [5] amplamente utilizado tanto pela indstria quanto pelo meio acadmico. Utilizado para separao das atribuies, permite que objetos de modelo (Model) se preocupem apenas com recursos de negcios de modelagem, no com a forma como sero apresentados para o usurio (View) e nem com a captura ou resposta s entradas do usurio (Controller). MVC separa as vises e modelos atravs do estabelecimento de um protocolo de inscrio/notificao entre eles. Uma viso deve assegurar que sua aparncia reflete o estado do modelo e o modelo, sempre que modificado, notifica as vises que dependem dele. Essa abordagem permite criar e adicionar vrios modos de exibio para um modelo sem reescrev-lo [17]. O diagrama a seguir mostra um modelo com trs modos de exibio. O modelo contm alguns valores de dados e os modos de exibio em forma de planilha, histograma e grfico de pizza exibem esses dados de vrias maneiras [17].

Figura 3 Exemplo de trs vises do mesmo modelo [17]

C. Layout Grid O alinhamento de elementos visuais uma das principais maneiras que projetistas podem ajudar os usurios a experimentar um produto de uma forma organizada e sistemtica. Textos, controles e grupos de controles devem ser alinhados horizontal e verticalmente (ver Figura 4). Em geral, todos os elementos na tela devem ser alinhados com tantos outros elementos quanto possvel. A deciso de no alinhar dois elementos ou grupos de elementos deve ser feita criteriosamente e sempre para obter um efeito especfico de diferenciao [18].

para EBNF. Diagramas de sintaxe so mais facilmente compreendidos pela maioria das pessoas, uma vez que permitem a exposio concisa e lcida de uma sintaxe de forma rigorosa, porm amigvel. A regra bsica para a interpretao de um diagrama de sintaxe que qualquer caminho traado junto s direes diante das setas produzir um comando sintaticamente vlido. A Figura 5 exibe o digrama de sintaxe equivalente notao EBNF do arquivo XML:

Figura 5 - Diagrama de Sintaxe para arquivos XML

O contedo dentro das caixas de vrtices arredondados deve aparecer literalmente no comando, enquanto o contedo das caixas retangulares indica o tipo de informao a ser escrita. IV. NAKED OBJECTS VIEW LANGUAGE (NOVL)
Figura 4 - Adobe Lightroom: uso eficaz de alinhamento em uma grade de layout[18]

Um esquema em grade uma das mais poderosas ferramentas disponveis para o projetista visual. Popularizada por tipgrafos suos aps a Segunda Guerra Mundial, o uso de uma grade fornece uma estrutura uniforme e consistente para um layout, que particularmente importante durante a criao de uma interface com vrios nveis de complexidade visual ou funcional. A utilizao de um sistema de grade no projeto de interface visual fornece vrios benefcios como usabilidade, apelo esttico e eficincia. Uma grade bem projetada melhora a legibilidade da tela, cria uma sensao de ordem e deixa o usurio confortvel e predisposto a interagir com o produto. D. EBNF e Diagramas de Sintaxe Componentes gerais de uma linguagem de programao so a sua sintaxe e a sua semntica. A sintaxe de uma linguagem influencia na maneira como os programas so escritos pelos programadores, lidos por outros programadores e reconhecidos pelo computador. A semntica de uma linguagem determina como os programas so resolvidos pelos programadores, entendidos por outros programadores e interpretados pelo computador [19]. A Extended BackusNaur Form [20] uma metalinguagem utilizada para expressar e definir de maneira formal e matematicamente a sintaxe de uma linguagem no apenas de programao de computador, mas para definies formais. A maioria dos padres de linguagem de programao usa alguma variante da EBNF para definir a gramtica da lngua, possibilitando a construo de compiladores porque o analisador para o compilador pode ser gerado automaticamente com um compilador de compilador como YACC[21]. Por exemplo, a seguinte notao define a sintaxe de um arquivo XML: XML::= "<" tag ">" ( XML+ | dado )? "</" tag ">" A partir desta definio possvel gerar automaticamente o diagrama de sintaxe [19][22] que uma alternativa grfica

Naked Objects View Language ou NOVL uma linguagem de descrio de layout para o padro Naked Objects. Seu objetivo de personalizar as interfaces de usurio de forma simples e rpida utilizando texto simples no lugar de estruturas mais sofisticadas como SWING, CSS, XML, HTML, etc., e sem a necessidade de um editor grfico de interface ou ferramentas externas. NOVL se diferencia de outras linguagens de interface no sentido em que ela especifica a forma da interface e no o caminho para chegar a ela. Isto reduz o ciclo de aprendizado daqueles que se iniciam na linguagem. A NOVL baseada no uso de layout grid [18] para dividir o espao da tela, onde uma grade alinha e organiza diferentes tipos de elementos inter-relacionados. Desta forma, a idia dividir a interface em linhas e colunas flexveis e alinhar os componentes nas clulas da grade retangular que formam a tela, permitindo que cada componente ocupe uma ou mais clulas. As prximas subsees definem e detalham a NOVL. A. Definio formal da NOVL Para que os frameworks possam validar a sintaxe e interpretar os comandos da NOVL para gerar a GUI utilizou-se a meta-linguagem EBNF [20], que define formal e matematicamente uma linguagem. Na Figura 6 temos a descrio completa da NOVL em EBNF. A linguagem divida em trs elementos. (i) view, que define a grade e a distribuio dos componentes na tela, (ii) component, que define o tipo de componente que ser inserido na grade, e (iii) member, um subcomponente que define qual e como uma propriedade ou mtodo de um naked object ou controlador ser apresentado.

Figura 6 Definio EBNF da NOVL

As prximas subsees descrevem os trs elementos da NOVL utilizando diagramas de sintaxe gerados a partir da definio EBNF [22]. B. O elemento View A Figura 7 mostra o diagrama de sintaxe do elemento view que define a grade do layout da tela. Para distribuir os componentes em colunas utilizam-se vrgulas {,}, para indicar que um determinado componente ocupa mais de uma coluna (colspan) utiliza-se o smbolo dois pontos {:} seguido da quantidade de colunas como sufixo do componente. Finalmente, para a distribuio em linhas utiliza-se o ponto-e-vrgula {;}.

nova grade de duas colunas e duas linhas que ocupar as trs colunas da quarta linha da grade principal.
1 2 3 4 5 componentA:3; componentB,componentC,componentD; componentE,componentF:2; [componentG,componentH; componentI,componentJ]:3 Figura 9 - Exemplo de um comando NOVL

Embora o rtulo de um componente, principalmente um member, deva permanecer inalterado para manter a consistncia visual entre as diversas vises, h casos excepcionais onde se torna necessrio modific-lo. Nestes casos um novo rtulo, delimitado por aspas simples {}, pode ser prefixado ao nome do membro separado por dois pontos {:}. D. O elemento member Um membro uma propriedade ou mtodo de um naked object ou controlador (MVC), que ser representado por seu respectivo controle visual na GUI de acordo com o tipo da propriedade (numrico, data, texto, etc.) e tecnologia utilizada pelo framework. Sua sintaxe mostrada na Figura 10.

Figura 7 - Diagrama de sintaxe do elemento View

C. O elemento Component Um componente pode ser um simples texto (label), um membro ou uma nova grade, e assim sucessivamente. Para definir uma nova grade, envolvemos os componentes com colchetes {[...]}. O diagrama de sintaxe do elemento component mostrado na Figura 8.

Figura 8 - Diagrama de Sintaxe do elemento Component

Por exemplo, a Tabela 1 apresenta uma grade que distribui dez componentes necessrios para a formao de uma 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 desta grade. Na linha (1) o sufixo {:3} no componente A seguido por {;} indica que a grade principal ter 3 colunas e este componente ir ocupar todas as colunas da primeira linha da grade. Na linha (2), as vrgulas {,} distribuem os componentes B,C e D pelas trs colunas da segunda linha da grade. Na linha (3), temos a mesma distribuio da linha dois por vrgulas para os componentes E e F, sendo que o sufixo {:2} de F indica que o mesmo ocupa duas colunas. Nas linhas (4) e (5), os colchetes com o sufixo {:3} determinam uma

Figura 10 - Diagrama de sintaxe do elemento Member

Para identificar um membro utiliza-se o nome do membro em case-sensitive. Para diferenciar visualmente uma propriedade de um mtodo, estes devem ter dois parnteses {()} como sufixo e para diferenciar um membro do naked object de um membro do controlador, estes devem ter o prefixo {Ctrl.} mais o nome do controlador. Composies podem ser aninhadas por ponto {.}. Por exemplo: endereco.cidade.estado.sigla. Um asterisco {*} como prefixo indica que o membro

apenas para leitura, e uma hashtag {#} indica que o membro sempre estar em modo de entrada de dados pelo usurio. Por exemplo, o comando *modifiedDate indica que o membro apenas para exibio na viso. O suporte a propriedades do tipo coleo ou listas de objetos um dos diferenciais da linguagem, pois permite o projeto de subviews em uma sub-grade com os membros dos elementos da lista, que por sua vez podem ser outras colees, recursivamente. Esta sub-grade definida delimitando a subview com os sinais de menor e maior {<...>} como prefixo da propriedade do tipo coleo. Em GUIs comum a utilizao de componentes visuais que se expandem ou se colapsam. Para determinar que um desses componentes aparea colapsado utiliza-se como sufixo o sinal de menos {-} e o sinal de mais {+} para expandido. A Tabela 2 explana todos os elementos da NOVL:
Conveno property Action , ; :colspan Usado para Nome case-sensitive da propriedade do naked object ou do controlador. Nome case-sensitive do mtodo do naked object ou do controlador. Separador de colunas. Separador de linhas. Colspan define quantas colunas o membro deve ocupar na grade (readonly) O membro sempre ser exibido em modo de leitura (sada de dados) incondicionalmente. (writeonly) O membro sempre ser exibido em modo de edio (entrada de dados) incondicionalmente. um texto simples que ser atribudo ao prximo elemento. No caso de um membro, substitui o rtulo padro. 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 domnio de uma coleo. Tabela 2 - Convenes da NOVL

uma possvel personalizao e a notao equivalente em NOVL utilizando vrios dos recursos da linguagem. A. Interface tpica de um framework NOP Podendo variar de acordo com o framework e tecnologia utilizados, a Figura 11 mostra um layout tpicamente empregado na maioria dos frameworks que programam o NOP. Qualquer exibio de outro naked object seguir o mesmo modelo. Na tela na figura, gerada pelo NOF-MVC para o naked object Product, todas as propriedades so expostas verticalmente. A maioria dos frameworks permite a definio da ordem em que as propriedades so exibidas. As aes do naked object so expostas em um menu suspenso acima da grade principal, e as aes dos controladores abaixo.

Figura 11 - GUI gerada pelo NOF-MVC

B. Interface personalizada usando NOVL A apresentao das mesmas informaes pode ser personalizada usando a NOVL. Na Figura 12 apresentada uma possvel interface para Product. Observe que nesta viso as propriedades e aes so agrupadas por co-relao. Propriedades importantes para o usurio ficam em primeiro plano e as menos importantes em segundo plano ou ocultas.

'label' [] + <...>

No estudo de caso a seguir so apresentandos exemplos mais detalhados sobre os membros. V. ESTUDO DE CASO Nesta seo apresentado um estudo de caso utilizando o banco de dados Adventure Works Sample Database [23], que contem, dentre outras informaes, dados sobre produo, vendas e comercializao de uma empresa multinacional fictcia chamada Adventure Works Cycles que fabrica e vende bicicletas e seus acessrios. Neste estudo de caso o foco ser na personalizao da interface de usurio do naked object Product. Para fins didticos, inicialmente ser apresentada uma interface tpica dos frameworks, no caso gerada pelo NOF-MVC, e em seguida ser apresentada Figura 12 - GUI gerada pela NOVL A grade principal na tela formada por duas colunas e duas linhas (em azul), a primeira linha preenchida por uma sub-grade 2x4 que ocupa as duas colunas (em amarelo), e na segunda linha cada coluna preenchida por uma sub-grade 1x2, e assim sucessivamente (em vermelho). Baseando-se na estrutura apresentada na Figura 12 , o cdigo NOVL necessrio detalhado na Figura 13.

sem o uso de editores visuais de interfaces. Com isso, o ciclo de aprendizado pode ser reduzido, se comparado a outras tecnologias e a manuteno facilitada. Como trabalhos futuros sugerido uma implementao de referncia da linguagem para alguma tecnologia de projeto de GUIs como Swing, JSF, HTML, etc., a utilizao da linguagem em algum framework NOP, bem como a avaliao e extenso da linguagem para abordar outros aspectos das interfaces grficas de usurios. Assim, os desenvolvedores podero beneficiar-se do uso de NOVL e suas futuras aplicaes para concentrar seus esforos apenas no domnio da aplicao, sem a preocupao de como a interface ser implementada. REFERNCIAS BIBLIOGRFICAS
[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 Cdigo NOVL de customizao de Product.

Inicialmente foram definidos quatro agrupamentos principais: Product (linha 69 a 72), Dates (linha 75 a 78), Estoque (linha 79 a 86) e Details (linha 91 a 98). Note que este ltimo deve aparecer no modo colapsado para o usurio e por isto sufixado com o sinal de menos. O primeiro ponto-e-vrgula (linha 73) logo aps o primeiro componente sufixado com {:2} (linhas 69 a 72), uma sub-grade com rtulo Product, definem a grade principal em duas colunas e duas linhas e este componente ocupar as duas colunas da primeira linha, enquanto que na segunda linha uma subgrade de duas linhas definida para cada coluna (linhas 74, 87 a 89 e 99). Observe que tanto as aes do domnio como as do controlador podem ser posicionadas livremente em qualquer parte da viso, de acordo com as necessidades ou gosto dos usurios (linhas 71,72, 84, 85, 86 e 90). Observe tambm que a propriedade photos (linha 90) do tipo coleo de fotos e uma subviso foi criada para exibir os seus membros:a propriedade largePhoto e o mtodo para adicionar mais fotos addOrChangePhoto(). Como photos est prefixada com asterisco o componente visual para este membro deve sempre estar em modo de leitura, mesmo que a tela mude para o modo de edio. Photos tambm teve seu rtulo removido para evitar uma repetio indesejvel com o rtulo do painel. VI. CONCLUSES E TRABALHOS FUTUROS

[4] Richard Pawson and Robert Matthews, "Naked objects: a technique for designing more expressive systems," ACM SIGPLAN Notices, vol. 36, no. 12, 2001. [5] Richard Pawson. (2010, Novembro) http://www.infoq.com/articles/Nacked-MVC InfoQ. [Online].

[6] Naked Objects Group. (2010) Naked Objects MVC. [Online]. http://nakedobjects.net [7] Apache Isis. (2010) Apache http://incubator.apache.org/isis/index.html Isis. [Online].

[8] Domain Object Explorer for JPA / EJB3 entity beans. [Online]. http://java.net/projects/doe/pages/Home [9] Oracle and/or its affiliates. (2012) The Java Tutorials. [Online]. http://docs.oracle.com/javase/tutorial/ui/overview/intro.html [10] Jmatter. [Online]. http://jmatter.org/ [11] Eitan Suez, "Customized Views and Editors," in Building Software Applications with JMATTER.: JMatterSoft LLC, 2009, ch. 14, pp. 171182. [12] CodePlex Open Source http://dotobjects.codeplex.com/ Community. [Online].

[13] Free Code. [Online]. http://freecode.com/projects/sanssouci [14] Trails. [Online]. http://www.trailsframework.org/ [15] Richard Pawson and Robert Matthews, Naked Objects, traduo ed., Osvaldo Kotaro Takai and Joo Eduardo Ferreira, Eds., 2002. [16] Richard Pawson. (2008, Dezembro) InforQ. http://www.infoq.com/articles/RAD-Naked-Objects [Online].

[17] Erich Gama, Richard Helm, Ralph Johnson, and John Vlissides, Design Patterns - Elements of Reusable Object-Oriented Software.: Addison-Wesley, 1998. [18] Alan Cooper, Robert Reimann, and David Cronin, About Face 3 : The Essentials of Interaction Design. Indianapolis: Wiley Publishing, Inc., 2007. [19] David A. Watt, Programming Language Concepts and Paradigms.: Prentice Hall, 1990. [20] ISO/IEC 14977, Information technologySyntactic metalanguage Extended BNF., 1996. [21] John R. Levine, Tony Mason, and Doug Brown, Lex & Yacc, 2nd ed., Dale Dougherty, Ed. United States of America: O'Reilly, 1992. [22] Gunther Rademacher. (2012, Janeiro) Railroad Diagram Generator. [Online]. http://railroad.my28msec.com/rr/ui [23] Microsoft. MSDN. [Online]. http://msdn.microsoft.com/enus/library/ms124501%28v=sql.100%29.aspx

Este artigo apresenta a Naked Objects View Language, que possibilita a definio de mltiplas visualizaes atravs de metadados em cada objeto do domnio. Desta forma interfaces de usurio personalizadas podem ser especificadas atravs da linguagem. Com isso, um dos principais limitadores da utilizao do padro Naked Objects pode ser contornado, sem ferir o padro, pois nem o comportamento nem a forma de armazenamento dos objetos so modificados. Por diferenciar-se de outras linguagens de interface no sentido em que ela especifica a forma da interface e no o caminho para chegar a ela, possvel a codificao direta

Você também pode gostar