Naked Objects

Loading...

Flash Player 9 (or above) is needed to view presentations.
We have detected that you do not have it on your computer. To install it, go here.

0 comments

Post a comment

    Post a comment
    Embed Video
    Edit your comment Cancel

    Favorites, Groups & Events

    Naked Objects - Presentation Transcript

    1. Validação do Projeto Conceitual com Naked Objects Marcos Eduardo Bolelli Broinizi Universo Online Mestrado IME 2006
    2. Introdução
      • Objetivo
        • agilidade e precisão no projeto conceitual
          • sem prejuízo na precisão => abstrações de dados
      • Hipótese
        • validação do projeto conceitual com a participação do especialista de domínio
    3. Introdução
      • Justificativas
        • requisitos de dados => projeto conceitual
        • diagramas ER e UML
          • precisão de representação das abstrações de dados
          • difícil validação pelo especialista de domínio
        • ferramentas existentes
          • não priorizam a interação entre o especialista de domínio e as abstrações de dados
    4. Introdução
      • Proposta
        • Validação precisão e agilidade
          • abstrações de dados => precisão
          • iniciativa Naked Objects
            • usuário: solucionador de problemas
            • especialista de domínio: responsável por solucionar os problemas de especificação conceitual de dados
    5. O que é Naked Objects?
      • Um padrão arquitetural no qual objetos do domínio são expostos diretamente ao usuário ao invés de serem escondidos atrás de estruturas convencionais de interface de usuário.
      • Um arcabouço que permite definir objetos como classes em Java seguindo um conjunto pré-estabelecido de convenções de código, tornando possível criar automaticamente uma interface de usuário orientada a objetos.
    6. Ambiente Naked Objects
    7. Criando um Naked Object
        • public class Patient extends AbstractNakedObject {
        • private final TextString name = new TextString();
        • private final InternalCollection appointments =
        • new InternalCollection(Appointment.class, this);
        • public TextString getName(){
        • return name;
        • }
        • public InternalCollection getAppointments() {
        • return appointments;
        • }
        • public Title getTitle(){
        • return getName().getTitle();
        • }
        • }
    8. Arcabouço NO
      • Classes ou tipos de entidade são representados por meio de ícones a partir dos quais é possível criar novas instâncias.
      • Uma instância também é representada como um ícone ou como um formulário listando os atributos dessa instância e seus valores.
      • Valores dos atributos podem ser editados por meio dos formulários das instâncias.
      • Métodos podem ser invocados por meio de um menu de contexto. Métodos cujo parâmetro seja uma instância de um outro objeto podem ser executados arrastando uma instância parâmetro e soltando-a sobre a instância alvo da execução.
    9. Fundamentos – Naked Objects
      • Criação automática da interface gráfica
      • Objetos expostos diretamente ao usuário
      • Exploração dos requisitos de um sistema
      • Ciclos rápidos: prototipação e validação
    10. Anotações – limites NO
      • Não permite definir restrições de inserção nas coleções
      • Grande volume de código para definir uma abstração simples como o relacionamento
      • Dificuldade em alterar características, como a cardinalidade
        • muitos trechos de código devem ser alterados
        • criação de novos métodos e/ou exclusão de outros
      • Não apresenta a agilidade esperada para explorar requisitos de dados com base nas abstrações
    11. Anotações – superando os limites do NO
      • Extensão do arcabouço – novas coleções
      • Anotações
        • permitem acrescentar dados adicionais às definições de classes NO
        • uma ferramenta interpreta as anotações criando o código necessário
        • pequeno volume de código
        • modificações muito mais simples e rápidas
    12. Fundamentos - abstrações
      • Classificação
        • classe ou entidade
        • nome e atributos
      • Relacionamento
        • cardinalidade
    13. Fundamentos - abstrações
      • Generalização-especialização
        • total ou parcial
        • disjunta ou sobreponível
        • especialização definida por predicado
    14. Fundamentos - abstrações
      • Composição
        • física ou lógica
    15. Fundamentos - abstrações
      • Objeto-relacionamento
        • entidade que representa o relacionamento
    16. Anotações - Classificação
      • Identificar a classe como um tipo de entidade do domínio de aplicação
      • @Entity
      • public class Book extends AbstractNakedObject {
      • ...
      • private final WholeNumber edition = new WholeNumber();
      • ...
      • public WholeNumber getEdition() {
      • return edition;
      • }
      • ...
      • }
    17. Anotações - Generalização
      • Identificar hierarquias de dados entre as entidades
      • Entidade pai da relação
        • @Generalization(
        • completeness = Completeness.Partial,
        • disjointness = Disjointness.Overlapping
        • )
        • Class Person {
        • WholeNumber age;
        • ...
        • }
    18. Anotações - Especialização
      • Entidade filha
        • @Specialization(
        • specializes = Person.class
        • )
        • @Entity
        • Class Student{
        • ...
        • }
    19. Anotações – Especialização definida por predicado
      • Extensão da anotação de Especialização
        • @PredicatedSpecialization(
        • specializes = Person.class,
        • fieldName = "age",
        • operator = Operator.greaterThanEqualTo,
        • value = "18"
        • )
        • @Entity
        • Class Employee{
        • ...
        • }
    20. Anotações - Relacionamento
      • Identificar associações que representam relacionamentos quaisquer entre duas entidades do domínio
        • @Entity
        • public class Publisher extends AbstractNakedObject{
        • ...
        • private final ExtendedInternalCollection items =
        • new ExtendedInternalCollection("Items",Item.class, this);
        • ...
        • public ExtendedInternalCollection getItems(){
        • return items;
        • }
        • ...
        • }
    21. Anotações - Relacionamento
        • @Entity
        • public class Item extends AbstractNakedObject{
        • ...
        • @RelationshipAssociation(
        • cardinality = Cardinality.ManyToOne,
        • relatedWith = Publisher.class,
        • fieldRelatedName = "items",
        • ) private Publisher publisher;
        • ...
        • public Publisher getPublisher() {
        • }
        • public void setPublisher(Publisher publisher) {
        • }
        • ...
        • }
    22. Anotações - Composição
      • Identificar uma associação de todo e parte , ou seja, uma associação na qual uma das entidades é composta pela outra
        • @Entity
        • public class Volume extends AbstractNakedObject{
        • ...
        • private PeriodicItem periodicItem;
        • public PeriodicItem getPeriodicItem() {
        • }
        • public void setPeriodicItem(PeriodicItem periodicItem) {
        • }
        • ...
        • }
    23. Anotações - Composição
        • @Entity
        • public class PeriodicItem extends AbstractNakedObject{
        • ...
        • @CompositeAssociation(
        • cardinality = Cardinality.OneToMany,
        • relatedWith = Volume.class,
        • fieldRelatedName = "periodicItem",
        • compositeType = CompositeType.Physical
        • )private final ExtendedInternalCollection volumes = new
        • ExtendedInternalCollection("Volumes",Volume.class, this);
        • public ExtendedInternalCollection getVolumes() {
        • return volumes;
        • }
        • ...
        • }
    24. Anotações – Objeto-relacionamento
      • Identificar uma associação que possui um destaque suficiente no domínio de aplicação para ser representada como uma entidade, mas mantendo características de associação entre duas entidades existentes
    25. Anotações – Objeto-relacionamento
        • @Entity
        • public class Patient extends AbstractNakedObject {
        • private final TextString name = new TextString();
        • private final ExtendedInternalCollection appointments =
        • new ExtendedInternalCollection("Appointments", Appointment.class, this);
        • public ExtendedInternalCollection getAppointments() {
        • return appointments;
        • }
        • ...
        • }
    26. Anotações – Objeto-relacionamento
        • @Entity
        • public class Appointment extends AbstractNakedObject {
        • private final TextString date = new TextString();
        • private Patient patient; //with getters and setters
        • private Dentist dentist;
        • ...
        • public TextString getDate() {
        • return date;
        • }
        • }
    27. Anotações – Objeto-relacionamento
        • @Entity
        • public class Dentist extends AbstractNakedObject {
        • ...
        • private final TextString name = new TextString();
        • @RelationshipObject(
        • cardinality = Cardinality.ManyToMany,
        • relatedWith = Patient.class,
        • fieldRelatedName = "dentist",
        • compositeClass = Appointment.class,
        • compositeFieldName = "appointments",
        • compositeFieldRelatedName = "patient"
        • ) private final ExtendedInternalCollection appointments = new
        • ExtendedInternalCollection("Appointments",
        • Appointment.class, this);
        • public ExtendedInternalCollection getAppointments() {
        • return appointments;
        • }
        • ...
        • }
    28. Ferramenta
    29. Fim
      • [email_address]

    + Renato ShirakashiRenato Shirakashi, 3 years ago

    custom

    839 views, 0 favs, 1 embeds more stats

    Apresentação no laboratório de banco de dados da more

    More info about this document

    © All Rights Reserved

    Go to text version

    • Total Views 839
      • 834 on SlideShare
      • 5 from embeds
    • Comments 0
    • Favorites 0
    • Downloads 12
    Most viewed embeds
    • 5 views on http://www.via6.com

    more

    All embeds
    • 5 views on http://www.via6.com

    less

    Flagged as inappropriate Flag as inappropriate
    Flag as inappropriate

    Select your reason for flagging this presentation as inappropriate. If needed, use the feedback form to let us know more details.

    Cancel
    File a copyright complaint
    Having problems? Go to our helpdesk?

    Categories