SlideShare una empresa de Scribd logo
1 de 33
Naked Objects Richard Pawson e Robert Mathews Apresentação : Marcos E. B. Broinizi Orientador : João E. Ferreira
“ Behavioural completeness ” ,[object Object],[object Object],[object Object],[object Object],[object Object]
Encapsulamento: significado ,[object Object],[object Object]
Separação dos Dados e Processos ,[object Object],[object Object],[object Object],Objeto Dado Objeto Processo Objeto
Separação dos Dados e Processos ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Orientação a processos de negócio ,[object Object],[object Object],[object Object],[object Object],[object Object]
Orientação a processos de negócio ,[object Object],[object Object]
Interfaces de usuário otimizadas a tarefas ,[object Object],[object Object],[object Object],[object Object]
The Incredible Machine ,[object Object]
Métodos orientados a Use-Cases ,[object Object],[object Object],[object Object]
Métodos orientados a Use-Cases ,[object Object],[object Object],[object Object],[object Object]
Métodos orientados a Use-Cases ,[object Object],[object Object],[object Object],[object Object],[object Object]
O padrão Model-View-Controller ,[object Object],[object Object],[object Object],[object Object],[object Object]
Desenvolvimento de sistemas baseados em componentes ,[object Object],[object Object]
Desenvolvimento de sistemas baseados em componentes ,[object Object],[object Object],[object Object]
Alternativas Naked Objects
Orientação a processos de negócio ,[object Object],[object Object]
Interfaces de usuário otimizadas a tarefas ,[object Object],[object Object]
Métodos orientados a use-cases ,[object Object],[object Object]
Model-View-Controller ,[object Object],[object Object],[object Object],[object Object]
Desenvolvimento de software baseado em componentes ,[object Object]
Práticas conceituadas no projeto de sistemas de negócio contemporâneos dividem uma aplicação em quatro camadas principais Apresentação Aplicação, Processo ou Controlador de Use-Case Modelo de objetos de  domínio Persistência
Apresentação Aplicação, Processo ou Controlador de Use-Case Modelo de objetos de  domínio Persistência O Padrão Naked Objects elimina a camada controlador encapsulando todas as funcionalidades de negócio nos objetos entidade
E tem uma camada de apresentação genérica que automaticamente reflete o modelo de objetos de domínio como uma interface de usuário orientada a objetos Apresentação Aplicação, Processo ou Controlador de Use-Case Modelo de objetos de domínio Persistência
Para um sistema standalone, ou para prototipação, é também possível autogerar a persistência a partir do mesmo modelo de domínio Presentation Aplicação, Processo ou Controlador de Use-Case Modelo de objetos de domínio Persistência
Framework Naked Objects
Framework  Naked Objects ,[object Object],[object Object],[object Object],[object Object]
Framework  Naked Objects ,[object Object],[object Object]
Exemplo ,[object Object],[object Object],Objetos da classe Projeto referenciam objetos da classe Papel Objetos da classe Papel referenciam objetos da classe Empregado
A abordagem através de objetos comportamentalmente completos ,[object Object],[object Object],[object Object]
Benefícios ,[object Object],[object Object],[object Object],[object Object]
Questões levantadas ,[object Object],[object Object],[object Object],[object Object]
Referências ,[object Object],[object Object],[object Object]

Más contenido relacionado

La actualidad más candente

La actualidad más candente (8)

Princípios de Modelagem de Dados
Princípios de Modelagem de DadosPrincípios de Modelagem de Dados
Princípios de Modelagem de Dados
 
design patterns - introdução
design patterns - introduçãodesign patterns - introdução
design patterns - introdução
 
Análise de Sistemas Orientado a Objetos - 05
Análise de Sistemas Orientado a Objetos - 05Análise de Sistemas Orientado a Objetos - 05
Análise de Sistemas Orientado a Objetos - 05
 
Arquitetura de Software EXPLICADA
Arquitetura de Software EXPLICADAArquitetura de Software EXPLICADA
Arquitetura de Software EXPLICADA
 
Aula teste ETEC - Analise de Programacao
Aula teste ETEC - Analise de ProgramacaoAula teste ETEC - Analise de Programacao
Aula teste ETEC - Analise de Programacao
 
Análise de Sistemas Orientado a Objetos - 01
Análise de Sistemas Orientado a Objetos - 01Análise de Sistemas Orientado a Objetos - 01
Análise de Sistemas Orientado a Objetos - 01
 
O (papel do) Arquiteto de Software
O (papel do) Arquiteto de SoftwareO (papel do) Arquiteto de Software
O (papel do) Arquiteto de Software
 
Modelagem Arquitetural e Visão 4+1
Modelagem Arquitetural e Visão 4+1Modelagem Arquitetural e Visão 4+1
Modelagem Arquitetural e Visão 4+1
 

Similar a Naked Objects

Modelo Conceitual
Modelo ConceitualModelo Conceitual
Modelo Conceitualkottrim
 
Poo apostila a programacao orientada
Poo   apostila a programacao orientadaPoo   apostila a programacao orientada
Poo apostila a programacao orientadarobinhoct
 
Especificação de Requisitos de Software
Especificação de Requisitos de SoftwareEspecificação de Requisitos de Software
Especificação de Requisitos de SoftwareRalph Rassweiler
 
O conceito de processo de trabalho versao final
O conceito de processo de trabalho   versao finalO conceito de processo de trabalho   versao final
O conceito de processo de trabalho versao finallisimello13
 
Técnicas de Concepção - Livro de Walter Cybis
Técnicas de Concepção - Livro de Walter CybisTécnicas de Concepção - Livro de Walter Cybis
Técnicas de Concepção - Livro de Walter CybisLuiz Agner
 
Especificação requisitos
Especificação requisitosEspecificação requisitos
Especificação requisitosLuis Fernandes
 
Entendendo a Tríade Model-View-Controller (MVC) Utilizando Padrões de Projeto...
Entendendo a Tríade Model-View-Controller (MVC) Utilizando Padrões de Projeto...Entendendo a Tríade Model-View-Controller (MVC) Utilizando Padrões de Projeto...
Entendendo a Tríade Model-View-Controller (MVC) Utilizando Padrões de Projeto...Lucas Furtado de Oliveira
 
Metodologia de desenvolvimento de sistemas
Metodologia  de desenvolvimento de sistemasMetodologia  de desenvolvimento de sistemas
Metodologia de desenvolvimento de sistemasPriscila Stuani
 
Net uma revisão sobre a programação orientada a objetos
Net   uma revisão sobre a programação orientada a objetosNet   uma revisão sobre a programação orientada a objetos
Net uma revisão sobre a programação orientada a objetosLP Maquinas
 
Apresentação Introdução Design Patterns
Apresentação Introdução Design PatternsApresentação Introdução Design Patterns
Apresentação Introdução Design PatternsLucas Simões Maistro
 
Desenvolvimento ágil de software: análise sintética a partir de KANBAN
Desenvolvimento ágil de software: análise sintética a partir de KANBANDesenvolvimento ágil de software: análise sintética a partir de KANBAN
Desenvolvimento ágil de software: análise sintética a partir de KANBANFernando Palma
 
Questionário sobre modelagem revisão da tentativa
Questionário sobre modelagem  revisão da tentativaQuestionário sobre modelagem  revisão da tentativa
Questionário sobre modelagem revisão da tentativaAluisioSantos4
 
Mpn apoio requisitos_sistema1
Mpn apoio requisitos_sistema1Mpn apoio requisitos_sistema1
Mpn apoio requisitos_sistema1gtiprotec
 
Mpn apoio requisitos_sistema 2
Mpn apoio requisitos_sistema 2Mpn apoio requisitos_sistema 2
Mpn apoio requisitos_sistema 2gtiprotec
 

Similar a Naked Objects (20)

Modelo Conceitual
Modelo ConceitualModelo Conceitual
Modelo Conceitual
 
Trabalho individual
Trabalho individualTrabalho individual
Trabalho individual
 
DCI com PHP
DCI com PHPDCI com PHP
DCI com PHP
 
Poo apostila a programacao orientada
Poo   apostila a programacao orientadaPoo   apostila a programacao orientada
Poo apostila a programacao orientada
 
Design de interação aula 2
Design de interação aula 2Design de interação aula 2
Design de interação aula 2
 
Especificação de Requisitos de Software
Especificação de Requisitos de SoftwareEspecificação de Requisitos de Software
Especificação de Requisitos de Software
 
Sld 4
Sld 4Sld 4
Sld 4
 
O conceito de processo de trabalho versao final
O conceito de processo de trabalho   versao finalO conceito de processo de trabalho   versao final
O conceito de processo de trabalho versao final
 
Técnicas de Concepção - Livro de Walter Cybis
Técnicas de Concepção - Livro de Walter CybisTécnicas de Concepção - Livro de Walter Cybis
Técnicas de Concepção - Livro de Walter Cybis
 
Especificação requisitos
Especificação requisitosEspecificação requisitos
Especificação requisitos
 
Entendendo a Tríade Model-View-Controller (MVC) Utilizando Padrões de Projeto...
Entendendo a Tríade Model-View-Controller (MVC) Utilizando Padrões de Projeto...Entendendo a Tríade Model-View-Controller (MVC) Utilizando Padrões de Projeto...
Entendendo a Tríade Model-View-Controller (MVC) Utilizando Padrões de Projeto...
 
Metodologia de desenvolvimento de sistemas
Metodologia  de desenvolvimento de sistemasMetodologia  de desenvolvimento de sistemas
Metodologia de desenvolvimento de sistemas
 
Análise de sistemas oo 1
Análise de sistemas oo   1Análise de sistemas oo   1
Análise de sistemas oo 1
 
Net uma revisão sobre a programação orientada a objetos
Net   uma revisão sobre a programação orientada a objetosNet   uma revisão sobre a programação orientada a objetos
Net uma revisão sobre a programação orientada a objetos
 
Apresentação Introdução Design Patterns
Apresentação Introdução Design PatternsApresentação Introdução Design Patterns
Apresentação Introdução Design Patterns
 
Oficina cake php
Oficina cake phpOficina cake php
Oficina cake php
 
Desenvolvimento ágil de software: análise sintética a partir de KANBAN
Desenvolvimento ágil de software: análise sintética a partir de KANBANDesenvolvimento ágil de software: análise sintética a partir de KANBAN
Desenvolvimento ágil de software: análise sintética a partir de KANBAN
 
Questionário sobre modelagem revisão da tentativa
Questionário sobre modelagem  revisão da tentativaQuestionário sobre modelagem  revisão da tentativa
Questionário sobre modelagem revisão da tentativa
 
Mpn apoio requisitos_sistema1
Mpn apoio requisitos_sistema1Mpn apoio requisitos_sistema1
Mpn apoio requisitos_sistema1
 
Mpn apoio requisitos_sistema 2
Mpn apoio requisitos_sistema 2Mpn apoio requisitos_sistema 2
Mpn apoio requisitos_sistema 2
 

Más de elliando dias

Clojurescript slides
Clojurescript slidesClojurescript slides
Clojurescript slideselliando dias
 
Why you should be excited about ClojureScript
Why you should be excited about ClojureScriptWhy you should be excited about ClojureScript
Why you should be excited about ClojureScriptelliando dias
 
Functional Programming with Immutable Data Structures
Functional Programming with Immutable Data StructuresFunctional Programming with Immutable Data Structures
Functional Programming with Immutable Data Structureselliando dias
 
Nomenclatura e peças de container
Nomenclatura  e peças de containerNomenclatura  e peças de container
Nomenclatura e peças de containerelliando dias
 
Polyglot and Poly-paradigm Programming for Better Agility
Polyglot and Poly-paradigm Programming for Better AgilityPolyglot and Poly-paradigm Programming for Better Agility
Polyglot and Poly-paradigm Programming for Better Agilityelliando dias
 
Javascript Libraries
Javascript LibrariesJavascript Libraries
Javascript Librarieselliando dias
 
How to Make an Eight Bit Computer and Save the World!
How to Make an Eight Bit Computer and Save the World!How to Make an Eight Bit Computer and Save the World!
How to Make an Eight Bit Computer and Save the World!elliando dias
 
A Practical Guide to Connecting Hardware to the Web
A Practical Guide to Connecting Hardware to the WebA Practical Guide to Connecting Hardware to the Web
A Practical Guide to Connecting Hardware to the Webelliando dias
 
Introdução ao Arduino
Introdução ao ArduinoIntrodução ao Arduino
Introdução ao Arduinoelliando dias
 
Incanter Data Sorcery
Incanter Data SorceryIncanter Data Sorcery
Incanter Data Sorceryelliando dias
 
Fab.in.a.box - Fab Academy: Machine Design
Fab.in.a.box - Fab Academy: Machine DesignFab.in.a.box - Fab Academy: Machine Design
Fab.in.a.box - Fab Academy: Machine Designelliando dias
 
The Digital Revolution: Machines that makes
The Digital Revolution: Machines that makesThe Digital Revolution: Machines that makes
The Digital Revolution: Machines that makeselliando dias
 
Hadoop - Simple. Scalable.
Hadoop - Simple. Scalable.Hadoop - Simple. Scalable.
Hadoop - Simple. Scalable.elliando dias
 
Hadoop and Hive Development at Facebook
Hadoop and Hive Development at FacebookHadoop and Hive Development at Facebook
Hadoop and Hive Development at Facebookelliando dias
 
Multi-core Parallelization in Clojure - a Case Study
Multi-core Parallelization in Clojure - a Case StudyMulti-core Parallelization in Clojure - a Case Study
Multi-core Parallelization in Clojure - a Case Studyelliando dias
 

Más de elliando dias (20)

Clojurescript slides
Clojurescript slidesClojurescript slides
Clojurescript slides
 
Why you should be excited about ClojureScript
Why you should be excited about ClojureScriptWhy you should be excited about ClojureScript
Why you should be excited about ClojureScript
 
Functional Programming with Immutable Data Structures
Functional Programming with Immutable Data StructuresFunctional Programming with Immutable Data Structures
Functional Programming with Immutable Data Structures
 
Nomenclatura e peças de container
Nomenclatura  e peças de containerNomenclatura  e peças de container
Nomenclatura e peças de container
 
Geometria Projetiva
Geometria ProjetivaGeometria Projetiva
Geometria Projetiva
 
Polyglot and Poly-paradigm Programming for Better Agility
Polyglot and Poly-paradigm Programming for Better AgilityPolyglot and Poly-paradigm Programming for Better Agility
Polyglot and Poly-paradigm Programming for Better Agility
 
Javascript Libraries
Javascript LibrariesJavascript Libraries
Javascript Libraries
 
How to Make an Eight Bit Computer and Save the World!
How to Make an Eight Bit Computer and Save the World!How to Make an Eight Bit Computer and Save the World!
How to Make an Eight Bit Computer and Save the World!
 
Ragel talk
Ragel talkRagel talk
Ragel talk
 
A Practical Guide to Connecting Hardware to the Web
A Practical Guide to Connecting Hardware to the WebA Practical Guide to Connecting Hardware to the Web
A Practical Guide to Connecting Hardware to the Web
 
Introdução ao Arduino
Introdução ao ArduinoIntrodução ao Arduino
Introdução ao Arduino
 
Minicurso arduino
Minicurso arduinoMinicurso arduino
Minicurso arduino
 
Incanter Data Sorcery
Incanter Data SorceryIncanter Data Sorcery
Incanter Data Sorcery
 
Rango
RangoRango
Rango
 
Fab.in.a.box - Fab Academy: Machine Design
Fab.in.a.box - Fab Academy: Machine DesignFab.in.a.box - Fab Academy: Machine Design
Fab.in.a.box - Fab Academy: Machine Design
 
The Digital Revolution: Machines that makes
The Digital Revolution: Machines that makesThe Digital Revolution: Machines that makes
The Digital Revolution: Machines that makes
 
Hadoop + Clojure
Hadoop + ClojureHadoop + Clojure
Hadoop + Clojure
 
Hadoop - Simple. Scalable.
Hadoop - Simple. Scalable.Hadoop - Simple. Scalable.
Hadoop - Simple. Scalable.
 
Hadoop and Hive Development at Facebook
Hadoop and Hive Development at FacebookHadoop and Hive Development at Facebook
Hadoop and Hive Development at Facebook
 
Multi-core Parallelization in Clojure - a Case Study
Multi-core Parallelization in Clojure - a Case StudyMulti-core Parallelization in Clojure - a Case Study
Multi-core Parallelization in Clojure - a Case Study
 

Naked Objects

  • 1. Naked Objects Richard Pawson e Robert Mathews Apresentação : Marcos E. B. Broinizi Orientador : João E. Ferreira
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22. Práticas conceituadas no projeto de sistemas de negócio contemporâneos dividem uma aplicação em quatro camadas principais Apresentação Aplicação, Processo ou Controlador de Use-Case Modelo de objetos de domínio Persistência
  • 23. Apresentação Aplicação, Processo ou Controlador de Use-Case Modelo de objetos de domínio Persistência O Padrão Naked Objects elimina a camada controlador encapsulando todas as funcionalidades de negócio nos objetos entidade
  • 24. E tem uma camada de apresentação genérica que automaticamente reflete o modelo de objetos de domínio como uma interface de usuário orientada a objetos Apresentação Aplicação, Processo ou Controlador de Use-Case Modelo de objetos de domínio Persistência
  • 25. Para um sistema standalone, ou para prototipação, é também possível autogerar a persistência a partir do mesmo modelo de domínio Presentation Aplicação, Processo ou Controlador de Use-Case Modelo de objetos de domínio Persistência
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.
  • 32.
  • 33.

Notas del editor

  1. - A noção de BC retoma as origens de OO com Simula, cujos inventores trouxeram a idéia de construir sistemas a partir de objetos, cada um representando algum elemento do domínio a ser simulado.Uma simulação envolvia diversas classes de objetos, que representavam “templates” a partir dos quais eram criadas instâncias individuais de acordo com a necessidade da simulação. Esse princípio foi resgatado pelos autores sobre o nome de BC. Cada objeto do sistema não só conhece as propriedades da entidade que representa mas também como modelar o comportamento dessa entidade. Isso não significa que cada objeto deve implementar todo comportamento possível que possa ser necessário em algum momento. Isso significa que todos os comportamentos necessários associados a algum objeto que são necessários para a aplicação sendo desenvolvida devem pertencer a esse objeto e não ser implementadas em algum outro lugar do sistema. Alguns acreditam que essa é apenas uma utopia. Alguns argumentam que a separação de dados e processos em algum nível é necessária e desejada. Outros argumentam que não importa como considerar dados e processos. Riel em OO Design Heuristics identifica algumas heuristicas valorizadas de design OO. Manter dados e comportamentos relacionados em um único lugar. Classes de nível mais alto devem distribuir o trabalho uniformemente. Não criar classes ou objetos “divinas”. Cuidado com classes cujos nomes contenham Controlador, Gerenciador, Sistema ou Subsistema no nome.
  2. O Pequeno Dicionário Oxford revela os dois significados da palavra ‘encapsulamento’. No contexto de orientação a objetos, muitas pessoas assumem o primeiro significado, mas o segundo significado é a mais importante.
  3. - Na cadeia de valor , o produto é o meio de transferência de valor entre a empresa e seus consumidores. - A idéia de Cadeia de Valor tem sido desafiada por Charles Stabell e Oystein Fjeldstadt que dizem que a cadeia de valor é atualmente um modelo de negócio muito pobre, e seu uso pode conduzir a falhas perigosas no nível estratégico. - Eles também argumentam que a proporção do negócio compatível com o modelo de cadeia está decaindo rapidamente. Eles afirmam que o conceito de cadeia de valor é melhor aplicado para a análise de setores industriais que produzem bens manufaturados e homogêneos. Loja de valor (tal como consultorias, construtores e principalmente organizações de saúde) cria valor aplicando recursos para resolver problemas individuais . Suas atividades raramente seguem uma seqüência linear e são freqüentemente iterativos por natureza. -A distinção principal em relação ao conceito de cadeia de valor é que as empresas que prestam serviços tendem a trabalhar em tempo real para entregar aos seus clientes novas soluções ao invés de definirem uma solução e a reproduzem continuamente. -Essas empresas selecionam, combinam e ordenam a aplicação dos seus recursos e de suas atividades de acordo com os requisitos do problema. - Rede de valor (que inclui muitas companhias de telecomunicações, bancos e seguradoras) cria valor pela venda de clientes a outros clientes. A rede de valor é a configuração de valor baseada na reunião de diversos compradores e vendedores independentes, por uma empresa que atua como intermediária, através das tecnologias de mediação.
  4. -Uma idéia por trás desta abordagem é a de que as ações programadas é a chave para a otimização. -Isso pode ser rastreada diretamente recordando Frederick Taylor (1911) e seus princípios de gerenciamento científico. -A solução foi remover todos os direitos de decisões dos trabalhadores criando roteiros de todas as suas ações. -Muitos sistemas de negócio tratam o usuário como um mero seguidor de roteiros. -O sistema controla todo o processo, subcontratando o usuário somente para aquelas subtarefas que ele não está capacitado a realizar autonomamente. -A alternativa é projetar sistemas que tratem os usuários como solucionadores de problemas. -Muitos negócios já possuem alguns sistemas que são, por natureza, problemas a serem resolvidos. -Todos os programas de desenho, do PowerPoint aos sistemas CAD/CAE, são desse tipo, assim como as planilhas eletrônicas. - No entanto, na maioria dos negócios, esses sistemas não são considerados ‘tradicionais’. - Os sistemas tradicionais estão normalmente preocupados com o processamento padronizado das transações de negócio, e são otimizados para um conjunto de tarefas, os quais são quase sempre implementados como processos seqüenciais.
  5. -Muitas pessoas acham que sistemas de problemas a serem resolvidos e sistemas transacionais refletem duas necessidades muito diferentes dentro do negócio, que não existe necessidade de uni-los, e que fazer tal coisa só iria tirar a otimização do processamento das tarefas padrão que representam a maior parte das atividades de negócio. -Pawson sugere que existe uma necessidade muito real de trazer as duas idéias próximas uma da outra: em outras palavras, a de tornar os sistemas transacionais tradicionais tão ‘expressivos’ quanto um programa de desenho. Colocar estas duas idéias juntas não significa apenas colocar interfaces de usuários gráficas em sistemas transacionais tradicionais. -Um outro preconceito é que introduzir mais expressividade num sistema transacional tradicional irá reduzir sua eficiência. -Isso pode ser verdade num contexto reduzido de tarefas padrões específicas, mas no sentido amplo a eficiência pode, na verdade, aumentar. Todos podem relatar suas frustrações quando se relacionou com um representante de serviços ao cliente, talvez num call center , onde toda as interações são ou definidas ou restritas pelo roteiro do sistema de computador -Assim, a proporção crescente de chamadas ou visitas a um centro de serviços ao cliente está relacionada: -Ou aos problemas não “padrão”, -ou às pessoas que simplesmente não desejam trabalhar confinadas a uma abordagem limitada. -Mesmo assim, infelizmente os sistemas de call center continuam se esforçando para aparar segundos na duração média de chamadas tentando ‘otimizar os roteiros’.
  6. -O argumento do MVC é que os objetos de negócio fundamentais de uma classe de objetos de negócio fundamental, podem ser visualizados de várias maneiras diferentes: -sobre diferentes plataformas, -em diferentes contextos -e usando diferentes representações visuais. -O conhecimento combinado de todas essas visões diferentes, bem como o conhecimento de como afetá-los dentro de objetos de negócio faz com que os objetos fiquem inchados e pesados devido à duplicação de funcionalidades nesses objetos. -Usando MVC, os objetos do Modelo não têm conhecimento dessas diferentes visões. -Objetos de Visão dedicados especificam o que aparece em cada visão, e de que forma, e têm o know-how de criar a apresentação visual. -Objetos Controladores fornecem a cola entre os dois: -povoando as visões com atributos a partir dos objetos de entidade de negócio, e chamando métodos desses objetos em resposta a eventos do usuário. - Esse pensamento é legítimo, mas tem alguns efeitos colaterais negativos. -Embora não tenha sido a intenção original da abordagem MVC, os objetos Controladores tendem a ser uma representação explícita das tarefas de negócio – especialmente se a abordagem de projeto for orientada a use-case, mas isso ocorre também em outros casos. -Os objetos Controladores deixam de exercer o papel limitado de ser apenas uma ‘cola’ técnica entre interfaces de usuários e objetos de negócio, e passam a assumir o papel de roteiro de tarefas, incorporando não apenas a seqüência de atividades otimizadas, como também regras de negócio – com isso usurpando as responsabilidades que deveriam ser dos objetos de negócio fundamentais.
  7. -Pode-se argumentar que uma das razões que levou várias organizações para o lado de componentes no debate ‘objetos versus componentes’ é que elas desenvolveram um medo quase patológico de fazer seus próprios projetos e desenvolvimentos. -Elas foram atormentadas pela lembrança da paralisia de análise, desenvolvimento interminável e de sistemas finalmente liberados cujas especificações falharam ao atender as necessidades reais de negócio. -Nós esperamos demonstrar que isso não tem que ser assim. -O desenvolvimento de seus próprios modelos de objetos de negócio não precisa ser uma experiência tão dolorosa.
  8. Isso significa escrever um mecanismo de visualização para cada plataforma de cliente solicitada (por exemplo: Windows, Linux, browser web ou Palm Pilot). -O mecanismo de visualização genérica é obtida automaticamente, a partir dos objetos do Modelo de negócio contendo comportamentos disponíveis. -Os objetos do Modelo e suas associações podem ser apresentados, por exemplo, como ícones com métodos ou comportamentos disponibilizados em opções sobre um menu pop-up. -Essa abordagem não viola a essência do MVC, mas é uma re-interpretação radical de como aplicá-la: -Uma maneira de enxergar isso é que ela gera os objetos de Visão e Controlador considerando o Modelo. -A idéia de auto-gerar a interface do usuário a partir do modelo subjacente não é nova. -O conceito existia em muitas linguagens proprietárias de quarta geração e nos geradores de aplicações, e re-emergiu em várias iniciativas baseadas em XML tais como o Xforms da W3C. -No entanto, poucas dessas abordagens são orientadas a objetos: -A interface do usuário é normalmente uma representação explícita da estrutura de dados e módulos ou processos funcionais. Eles continuam a encorajar a separação dos processos e dados.
  9. -All fields usable by the user need to be of type org.nakedobjects.object.Naked. The framework does not know how to display or persist the standard Java types. The framework does provide a number of generic Naked types such as TextString, Money, WholeNumber and Date (all part of the org.nakedobjects.object.value package), which both encompass and extend the types provided by Java. -It is important to access variables through their accessor (get... and set...) methods rather than directly. The persistence mechanism relies on such methods to store away and reload the object's data. -To create an intialized and persistent object, use the factory method createInstance. New instances of business objects should not be created using just the standard Java new operator - this would not initialize them properly. Related to this, a persisted object's constructor will be invoked every time it is restored. -Every persistent object must have a unique ID that does not change between instantiations. The equals and hashCode methods are based on this ID and should not be changed. If a business object class is defined as a subclass of AbstractNakedObject, then you must also do the following in order for the framework to be able to access and manipulate these objects, and thereby make them available to users: -Declare the class as public. -Ensure the class has a zero-parameter constructor (this is often referred to as the default constructor). -Declare as public all of its methods that are to be made available to the framework. -Implement the abstract title method from the superclass so that it returns a non-null reference. The title method will help users to distinguish each object from the rest of the instances of a specific type - but it could also be used for other purposes, such as searching or report generation.
  10. With the naked objects approach, building a business system consists solely of defining the domain objects All user actions consist of creating or retrieving objects, specifying their attributes, forming associations between them, or invoking methods on an object (or collection of objects) - in other words through a truly object-oriented user interface. The naked objects approach encourages the design of truly object-oriented business systems. It does so in a negative sense, by making it very difficult for the designer to separate procedure and data; it does so in a positive sense, by making the idea of behaviourally-complete domain objects very concrete and very fast to develop I originally predicted that the naked objects approach should deliver four benefits: -Higher development productivity through not having to write a user interface -More maintainable systems through the enforced use of behaviourally-complete objects. More agile -Improved usability deriving from a pure object-oriented user interface -Easier capture of business requirements because the naked objects would constitute a common language between developers and users. Our experience to date has demonstrated four such benefits: Naked objects can better accommodate future changes to business requirements. Naked objects empower the user. Naked objects improve communication between developers and users. Naked objects can speed up the development process.