22/01/2012 18:40

Caso Prático: Modelando um Sistema de Academia de Ginástica Parte 2

 

Introdução 

 
Continuando artigo anterior, o proximo passo seria a modelagem do diagrama de classes do sistema fictício da Academia Boa Forma.
Enquanto o diagrama de casos de uso reflete o aspecto comportamental do sistema, representando as funções e o comportamento que sistema deve ter para atender aos objetivos do negócio, o diagrama de classes reflete o aspecto estático do sistema, representando os conceitos do negocio na forma de classes de dominio que capturam estes conceitos do negocio representando as informações, relacionamentos e operações que devem ser modeladas para representar estes conceitos.
 
Nao existe uma forma rígida para se elaborar um Diagrama de Classes mas eu acho que fica bem mais fácil de se fazer o trabalho se a pessoa seguir os passos abaixo:
 
  • Identificar as Classes de negócio
  • Identificar os Relacionamentos entre as Classe
  • Identificar os atributos de cada Classe

É importante lembrar que existem diferentes tipos de classe quando falamos em modelagem de sistemas. Existem classes de negócio, classes utilitárias, classes de serviço entre outras. No caso do nosso artigo, vamos nos concentrar nas classes de negócio que são as classes que representam os conceitos do domínio do problema e que são a base para a modelagem das demais classes do sistema. Por exemplo, as classes de serviço que representam as funcionalidades fornecidas pelo sistema ao usuario, dependem das classes de negócio que são usadas como argumentos na chamada dos serviços. Vamos entao começar pelas classes de negocio.

 

Identificando as classes de negocio

 
Tomamos como base o diagrama de casos de uso para identificacao das classes. A partir dos casos de uso podemos identificar as classes que devem manter as informações do sistema.
 
Os casos de uso Manter Professor, Manter Filial, Manter Turma e Manter Atividade  Esportiva representam funções com objetivo de manter informações atualizadas. Desta forma, já podemos identificar as primeiras classes Professor, Filial e Atividade Esportiva. São classes de negócio para manter informações cadastrais.
 
Merece especial atenção a classe Turma que é uma classe associativa pois ela é derivada da associação existente entre as classes Atividade Esportiva e Filial, pois uma Atividade Esportiva é oferecida em uma Filial, formando uma Turma. Em outras palavras, uma Turma existe quando temos uma Atividade Esportiva sendo oferecida em uma Filial.
Da mesma forma, a classe Matricula reflete uma associação entre um Aluno e uma Turma.
A classe Professor possui um relacionamento com a classe Turma pois toda turma deve ter um professor. 
 
O Caso de Uso Manter Valor de Mensalidades nos diz que a Coordenação Esportiva informa os valores das mensalidades referentes as Atividades Esportivas. Sendo assim, precisamos de uma classe para representar este conceito e criamos então a classe Valor Mensalidade que manter o valor da mensalidade de uma atividade esportiva.
 
Os Casos de uso Matricular Aluno, Consultar Aluno e Manter Aluno também nos ajudam a perceber a necessidade de uma Classe Aluno para manter informações cadastrais de um aluno e de informações sobre sua matricula em uma turma.
 
O Caso de uso Cadastrar Pagamento de Mensalidade representa uma transação do negocio e portanto deve ter uma classe para manter as informações de pagamento das mensalidades. Por opção de projeto, modelamos a classe Mensalidade onde temos as informações de mensalidade e do pagamento efetuado.
 
 
O casos de uso Notificar Cancelamento, Emitir Aviso de Cobrança, Solicitar Regularizacao de Débito e Calcular Remuneracao de Professor representam funções temporais que são acionadas pelo tempo. É importante perceber que muitas das informações necessarias para a realização destes casos de caso já estão presentes nas classes já identificadas. Uma exceção é o caso de uso Calcular Remuneração Processor pois não temos ainda uma classe para representar as remunerações que são pagas aos professores. Então criamos a classe Remuneração para atender a este novo conceito.
 
 
 
Os casos de uso Emitir Relatorio Diario por Filial e Emitir Relatorio Consolidado representam também funções temporais, que são acionadas com o passar do tempo, sendo que as classes identificadas já representam os conceitos necessários para a realização destes casos de uso.
 

Identificar os Relacionamentos entre as Classes

 
As classes do diagrama de classes mantem relacionamentos umas com as outras como forma de colaborarem para atender aos objetivos do sistema. Estes relacionamentos refletem as associações existentes entre os conceitos no mundo real. Por exemplo: toda turma deve ter um professor, toda matricula é feita por um aluno em uma turma, uma matricula tem mensalidades para serem pagas, etc. 
 
Este relacionamentos são identificados de forma natural dentro do contexto do negocio. No caso o Mini-mundo possui as informações necessárias para identificarmos estes relacionamentos. Segue abaixo algumas sentenças tiradas do texto.
 
 
  • As atividades oferecidas em cada filial...
  • A remuneração dos professores... 
  • ...mensalidades efetivamente pagas pelos seus alunos...
 
Existem relacionamentos como Professor e Turma onde um professor pode ministrar aulas em zero ou mais turmas.
 
Outro relacionamento interessante é do tipo composição onde uma classe é composta por ocorrencias de outra classe. No caso a classe Professor possui relacionamento do tipo composicao com a classe Remuneracao, onde um professor pode receber uma ou mais remuneracoes pelas aulas ministradas. Caso o Professor seja excluido do sistema, as informações de remuneração do professor também sao excluidas. Isto porque se trata de um relacionamento do tipo composicao onde a classe pai ( Professor ) é composta por uma ou mais ocorrencias da classe filho (Remuneracao). Este mesmo tipo de relacionamento está presenta entre as classes AtividadeEsportiva e ValorMensalidade, onde uma atividade esportiva é composta por ocorrencias de valor de mensalidade. Vemos este mesmo tipo de relacionamento entre Matricula e Mensalidade. 
 
Existem relacionamentos entre classes que definem classes associativas como a classe Turma que é uma classe associativa entre as classes AtividadeEsportiva e Filial. No caso uma Turma representa uma associação entre uma Atividade Esportiva que é oferecida em uma Filial. Do mesmo modo uma Matricula representa uma associação entre as classes Aluno e Turma, onde um aluno se matricula em uma turma para realizar uma atividade esportiva em uma filial. As classes associativas sao uteis para modelagem de conceitos que dependem de outros conceitos. No caso uma Turma depende de uma filial e de uma atividade esportiva, a turma nao existe por si mesma. Da mesma forma a matricula se refere sempre a um aluno que deseja frequentar uma turma. Geralmente as classes associatias possuem relacionamentos com cardinalidade do tipo muitos para muitos. Por exemplo, um aluno pode se matricula em mais de uma turma e uma turma possui mais de um aluno.
 
Existem outros tipos de relacionamentos entre classes de negocio e classes de enumeracao que sao usadas para definir o dominio de atributos das classes associadas. No caso as classes SituacaoMatriculaEnum e SituacaoMensalidadeEnum sao classes de enumeracao que definem os valores dos atributos das classes Matricula e Mensalidade respectivamente. No caso da classe Mensalidade, o atributo situacao possui o dominio definido na classe SituacaoMensalidadeEnum que pode ter um dos valores { Em Aberto, Paga, 15 dias em Atraso ou 30 Dias em Atraso }. Da mesma forma, a classe Matricula possui um atributo situacao da matricula que pode ter os valores { Ativa ou Cancelada ). Nestes casos, as classes de enumeracao servem para definir o dominio, conjunto de valores possiveis, para os atributos de outras classes. Usamos as classes de enumeracao para atributos que possuem valores dentro de um conjunto definido. Dentro das classes de enumeracao definimos o dominio e entao associamos as classes de enumeracao às classes de negocio.
 
 

Identificar os Atributos de cada Classe

 
Cada classe possui atributos e métodos que devem ser identificados conforme o contexto do negócio. Uma Classe Aluno pode ter um conjunto de atributos no contexto de uma Academia mas pode ter outros atributos se o contexto for uma Universidade por exemplo. Tudo depende sempre do contexto. No caso todas as classes devem ter seus atributos identificados. Os atributos representam as informações que são necessárias para cada classe.
 
Os atributos devem pertencer a classe na qual estão definidos. Nao faz sentido colocar o atributo nome da filial na classe Turma por exemplo.
 
No caso vamos olhar para os atributos definidos nas classes Filial, Aluno e Professor. Sao atributos basicamente de informação cadastral tais como nome , endereço, contato, etc.
 
No caso das classes Remuneracao e ValorMensalidade temos atributos data pois estas classes armazenam informações temporais pois o valor da mensalidade é valido para um mes e a remuneracao é paga em um mes para o professor. A Classe Matricula também pois a matricula é efetuada em uma data.
 
No caso da classe Turma foram definidos os atributos de negocio, tais como quantidade de vagas e horario da turma.
 
No caso das classes Matricula e Mensalidade foram definidos atributos do tipo enum pois se referem a enumeracoes com dominios conhecidos para a situacao da matricula e da mensalidade respectivamente. Isto porque é preciso saber em qual situacao se encontra uma mensalidade, se está em Aberta, se foi Paga, se está em atraso há 15 dias, 30 dias para que se possa tomar as ações cabíveis de acordo com o negocio, que são notificar o cliente ou cancelar a matricula.
 
Ainda na classe Mensalidade temos a data de vencimento e a data de pagamento da mensalidade. Temos também o valor da mensalidade, o valor pago e ainda o valor da multa caso o pagamento seja feito em atraso.
 
Na classe ValorMensalidade temos a data, o valor da mensalidade e o valor do desconto caso exista.
 
Estas sao informações básicas, com base na descricao do Mini-mundo. Em um sistema real com certeza teríamos um numero maior de atributos e tambem de classes.
 

Conclusão

 
Concluímos esta parte 2 do artigo Academia de Ginastica Boa Forma com o diagrama de classes de negocio modelado. É importante ressaltar que esta nao é a única forma de modelar o diagrama de classes para o Mini-mundo criado. Poderíamos por exemplo ter criado uma classe Pagamento com relacionamento com a classe Mensalidade mas optei por ter todas as informações em uma única classe. Toda solução deve atender aos objetivos do Mini-mundo e aos conceitos do diagrama de casos de uso. O diagrama de casos de uso fornece as infomações necessárias para se elaborar o diagrama de classes. Portanto é importante que o diagrama de classes esteja alinhado com o diagrama de casos de uso, estando ambos consistente entre si e em relação aos objetivos do negócio.
 
 

 

 

—————

Voltar


Contato

Fernando De Siqueira