Diagrama de classes - ravileal/ezhealth_desktop_-_2020.2_PIES GitHub Wiki

Modelagem de classes

O diagrama de Classes abaixo mostra todas as classes do sistema EzHealth, contendo também todos os seus relacionamentos, métodos e atributos.

Baixe a imagem em alta resolução clicando aqui.

Modelo gerado a partir do Visual Paradigm.

Descrição dos pacotes do diagrama

Model

Neste pacote criamos todas as classes de modelo do sistema. Entre elas: Usuario, Exercicio, Refeição, Alimento e AbstractAlimentacao. Nessa camada do sistema implementamos as regras de negócio referentes ao contexto em que o sistema está inserido. A maioria das classes deste pacote está como uma classe concreta para sua instanciação e possui apenas uma classe abstrata (AbstractAlimentacao) para representar de forma geral atributos que estão em comum entre classes de alimento e refeição.

View

Para a classe de model criamos dois layouts principais. Esses layouts servem como modelos que podem ser estendidos para as demais classes que necessitem usa-los. Existem apenas dois layouts no sistema, o layout principal nomeado de LayoutMain e o layout de popus nomeado de LayoutPopup. Eles representam respectivamente, os modelos que devem servir para apresentação principal das telas, como a home, e para apresentação de telas de pop up, utilizando JDialog, como é o caso da tela pop up editar exercício. As demais classes desse pacote são classificadas entre "Telas" e "Popups", com cada uma estendendo o LayoutMain para as "Telas" e o LayoutPopup para os "Popups".

Controller

Para realizar a implementação dos controladores do projeto utilizamos a interface CRUD do pacote Util, tornando obrigatório a construção do escopo das operações essenciais. Além das operações necessárias cara classes controller deverá conter os métodos necessários dependendo de seu contexto. Para realizar a validação de dados e tratamento de erros foram utilizadas exceções criadas no pacote Validation. As exceções serão "levantadas" de acordo com sua necessidade e deverão ser tratadas no pacote View apresentando para o usuário uma mensagem que auxilie ele a realizar o fluxo correto na aplicação.

Util

O pacote Util foi criado com o intuito de criar classes e interfaces utilitárias para o resto do sistema. Seu conteúdo pode variar de acordo com a necessidade de expansão das classes utilitárias que forem necessárias. Essas decisões devem ser feitas para cada membro da equipe. Na versão atual do sistema este pacote possui quatro classes e uma interface, sendo essa interface, nomeada de CRUD, que foi utilizada no pacote Controller descrito anteriormente. Os demais itens são classes que auxiliam na implementação dos viewers, como é o caso da classe ViewUtils, DragListener e DatasFormatadas. Já a classe Popular auxilia as classes do pacote Repository que será descrito mais à frente.

Repository

Esse pacote possui classes com a responsabilidade de armazenarem os dados do sistema localmente na memória. Assim com o foi dito antes, essas classes utilizam o singleton Popupar que está no pacote Util para realizar a criação de objetos no sistema. Além disso, as classes desse pacote implementam as operações básicas descritas na interface "CRUD" do pacote Util. Essa classe trabalha em conjunto com as classes do pacote Model e pacote Controller para realizar buscar, cadastrar, atualizações e remoções dentro do sistema.