Model-View-Controller (MVC) é um padrão de design básico que separa a lógica da interface do usuário da lógica de negócios. O padrão Model-View-Controller (MVC) é uma maneira de dividir um aplicativo em três componentes distintos; o modelo, a visão e o controlador.
Estrutura MVC usando modelagem UML
Este controlador de visualização de modelo pode ser melhor descrito visualmente usando análise de robustez em notação UML estereotipada, que foi proposta pela primeira vez por Ivar Jacobson em seu premiado livro Object-Oriented Software Engineering (veja as referências abaixo) e explicado por Doug Rosenberg et al. . em seu livro Use Case-Driven UML Object Modeling.
Aqui está um diagrama de sequência simples e hipotético para MVC. O que você vê no diagrama acima é que um usuário da web inicia uma consulta e gera um evento que é processado pelo controlador para obter as informações necessárias do modelo, validar as informações e passar o conjunto de resultados de volta para a visualização.
Objetos de entidade (modelo) nada mais são do que as informações ou dados que seus objetos de limite estão procurando. Podem ser tabelas de banco de dados, arquivos do Excel ou sessões “transitórias” ou dados em cache ou algo assim.
- Descreva objetos que existem ao longo do tempo e estão principalmente preocupados com o estado persistente.
- Geralmente objetos do modelo de domínio
- Coisas que precisamos acompanhar e armazenar
Objetos de fronteira (View) são objetos com os quais os atores (por exemplo, usuários) se comunicam em seu sistema de software. Esses objetos podem ser qualquer janela, tela, diálogo e menu ou outra interface de usuário em seu sistema. Você pode identificá-los facilmente ao analisar casos de uso.
- descrever as conexões entre o sistema e o ambiente que se comunicam.
- Usado por atores ao se comunicar com o sistema
- Somente objetos de entidade podem iniciar eventos
- (geralmente os principais elementos da interface do usuário, por exemplo, telas)
Objetos de controle (controladores) são objetos de negócios ou seus serviços da web de negócios. É aqui que você captura as regras de negócio que são usadas para filtrar os dados a serem apresentados ao usuário, o que ele pede. Portanto, o controlador está realmente controlando a lógica de negócios e a transformação de dados.
- descrever o comportamento em um caso de uso particular.
- A “cola” entre objetos de fronteira e objetos de entidade
- Capture regras e políticas de negócios
- (nota: frequentemente implementado como métodos de outros objetos)
Regras de conexão no modelo MVC
Considere que objetos de fronteira e objetos de entidade são substantivos, enquanto controladores são verbos.
Aqui estão as quatro regras básicas de conexão.
- Os atores só podem interagir ou se comunicar com objetos de fronteira.
- Objetos de fronteira só podem se comunicar com controladores e atores.
- Objetos de entidade só podem interagir com controladores.
- Os controladores podem se comunicar com objetos de fronteira e objetos de entidade, bem como outros controladores, mas não com atores
Lembre-se de que tanto os objetos de fronteira quanto os objetos de entidade são substantivos, enquanto os controladores são verbos. Substantivos não podem falar com outros substantivos, mas verbos podem falar com substantivos ou verbos.
Visão geral do diagrama de análise de robustez
Suponha que tenhamos a seguinte descrição simples de caso de uso em formato textual:
Na página de detalhes do aluno, o professor clica no botão ”Adicionar cursos” e o sistema exibe a lista de cursos. O professor seleciona o nome de um curso e pressiona o botão ”Registrar”. O sistema cadastra o aluno para o curso.
Agora você pode criar um diagrama de robustez simples de acordo com o caso de uso acima:
Você também pode usar um rótulo de texto para anexar a descrição do caso de uso no lado direito do diagrama de Robustez.
Cinco etapas para criar uma análise de robustez
- Você executa a análise de robustez para um caso de uso percorrendo o texto do caso de uso.
- Uma frase por vez, e desenhando os atores, o limite apropriado, objetos de entidade e controladores e as conexões entre os vários elementos do diagrama.
- Você deve ser capaz de encaixar o curso básico e todos os cursos alternativos em um diagrama.
- Qualquer pessoa que revise um diagrama de robustez deve ser capaz de ler um curso de ação no texto do caso de uso, traçar seu dedo junto com as associações no diagrama e ver uma correspondência clara entre texto e imagem.
Você provavelmente terá que reescrever o texto do seu caso de uso ao fazer isso, para remover a ambiguidade e referenciar explicitamente objetos de limite e objetos de entidade. A maioria das pessoas não escreve um texto de caso de uso perfeito no primeiro rascunho. Assim, podemos usar a análise de robustez para preencher a lacuna entre o texto do caso de uso e o diagrama.
Desenvolva um cenário de caso de uso usando diagramas de sequência MVC
Com base na Análise de Robustez, podemos desenvolver cenários de casos de uso (normais ou alternativos) usando um conjunto de diagramas de sequência relacionados no formato MVC. Da mesma forma, o diagrama de sequência MVC possui objetos de interface, objetos de controlador e objetos de entidade:
- Entidades são objetos que representam dados do sistema: Cliente, Produto, Transação, Carrinho, etc.
- Os limites são objetos que fazem interface com os atores do sistema: UserInterface, DataBaseGateway, ServerProxy, etc.
- Controles são objetos que fazem a mediação entre limites e entidades.
Eles orquestram a execução de comandos vindos do limite interagindo com entidades através dos objetos do limite. Um objeto controlador geralmente corresponde ao cenário de caso de uso e geralmente é representado por um diagrama de sequência.
Você pode usar estereótipos para a linha de vida no diagrama de sequência do MVC para deixar visualmente claro que tipo de objetos você está usando no MVC, como no Diagrama de Análise de Robustez acima.
Exemplo de diagrama de sequência MVC
Suponha um aplicativo que permite pesquisar pessoas. A interface do usuário deve ter um campo de texto onde o usuário possa inserir uma string de pesquisa e pode ter um botão para iniciar a pesquisa. Por fim, deve ter uma área onde sejam exibidos os resultados da pesquisa. No nosso caso, ele é implementado com um componente de lista.
O cenário de caso de uso “Search for Persons” é:
- O usuário insere uma string de pesquisa no campo de texto
- O usuário clica no botão de pesquisa.
- O resultado da pesquisa é exibido na lista de resultados.
O diagrama de sequência acima mostra como o clique do botão do usuário se move pelo aplicativo até que o resultado seja finalmente exibido no componente de lista.
Referências
- Tutorial do Diagrama de Sequência
- Como desenhar diagrama de seqüência?
- Modelos de Diagrama de Sequência
- Ferramenta de diagrama de sequência UML