Página Inicial > Boas práticas > Passo a passo para a elaboração do modelo de domínio – Parte 2 de 2

Passo a passo para a elaboração do modelo de domínio – Parte 2 de 2

Na primeira parte desse artigo descrevi os quatro primeiros passos para a elaboração do modelo de domínio, e chegamos até a primeira versão de um diagrama de classes de domínio. Nessa segunda e última parte descreverei os dois passos finais necessários para o refinamento das classes de domínio e dos seus relacionamentos

Passo 5 – 1º Refinamento das classes de domínio

Durante a modelagem de domínio num projeto de desenvolvimento de software, são feitas reuniões com a equipe para validar o modelo de domínio, e então descobre-se novas classes, que não apareceram no texto de requisitos de alto nível. Isto se dá devido à experiência e conhecimento de cada membro da equipe no domínio do problema que está sendo resolvido.

Para ilustrar isso no nosso exemplo, descobrimos duas classes adicionais: Histórico de Pedidos e Expedição, que apesar de não terem sido citadas nos requisitos, podem ser consideradas como necessárias para o sistema da livraria virtual.

Nesse primeiro refinamento o foco foi sobre o pedido e a expedição. Foi removida do diagrama a classe Checkout, por se tratar na realidade de um verbo e não um substantivo. A classe Autor também foi removida, por se tratar de uma propriedade da classe Livro.

A figura abaixo ilustra o resultado do 1º refinamento das classes de domínio

image

 

Passo 6 – Refinamento dos relacionamentos das classes de domíno

A generalização é um relacionamento em que uma classe é uma "espécie de" alguma outra classe – Por exemplo, um gato é um tipo de animal. É por isso que a generalização é muitas vezes chamada de um relacionamento do tipo “é-um”. A classe Gato é mais específica do que a classe  Animal (Gato é um refinamento "da classe mais geral – Animal), daí o termo "generalização". A classe mais específica é chamada de subclasse, e a classe mais genérica é chamada de superclasse.

Dentro da livraria virtual, lista dos livros também é um bom candidato para a criação de sub classes, porque podem muito bem ser de diferentes tipos de contas e de diferentes tipos de listas de livros.

A medida que investigamos mais profundamente as necessidades do usuário para o sistema da Livraria Virtual , estamos começando a identificar os diferentes tipos de listas de livros: listas de desejos dos clientes, listas de recomendação, livros relacionados, resultados de pesquisa, e assim por diante. Está se tornando claro que todos estes são simplesmente listas de livros, para que eles pudessem (conceitualmente, pelo menos) ter uma classe mãe comum. Descobrimos que há certamente aspectos da lista de desejos, livros relacionados e assim por diante que são diferentes suficiente para justificar tratamento distinto, embora eles ainda têm muito em comum que eles todos são tipo de listas de livros. A figura abaixo ilustra o uso da superclasse lista de livros.

image

As novas classes (livros relacionados, lista de recomendação, lista de desejos e resultados da pesquisa) herdam os atributos e operações que definimos para a lista de livros. Vamos ler esse esquema em voz alta: Uma lista livro tem livros. Livros relacionados é uma lista de livros. Lista recomendação é uma lista de livros. Lista de desejos  é uma lista de livros. Resultados de Pesquisa é uma lista de livros.

Assim chegamoa àversão final do modelo de classes de domínio da Livraria Virtual, ilustrado pela figura abaixo.

 

image

Artigo adaptado do livro Use Case Driven Object Modeling with UML, Theory and Pratice. Doug Rosenberg e Matt Stephens

Compartilhe:
  • Print
  • email
  • RSS
  • Add to favorites
  • Digg
  • Twitter
  • Facebook
  • MySpace
  • LinkedIn
  • del.icio.us
  • Slashdot
  • Technorati
  • Rec6
  • Google Bookmarks
  • Yahoo! Bookmarks
  • Yahoo! Buzz

Related posts:

  1. Passo a passo para a elaboração do modelo de domínio – Parte 1 de 2
  2. Piores práticas para o desenvolvimento de software – Parte 2 de 2
Categories: Boas práticas Tags:
  1. Nenhum comentário ainda.
  1. Nenhum trackback ainda.