UC_21 - antoniodanielbf-isep/LAPR5-2021 GitHub Wiki

|| INICIO || VOLTAR ||

UC_21 -> Consultar o grafo de amigos comuns entre dois utilizadores

=======================================

MENU

|| REQUISITOS || ANÁLISE || DESIGN || OBSERVAÇÕES ||

=======================================

1. Requisitos

Esclarecimento de dúvidas pelo cliente

Tuesday, 14 de December de 2021 às 14:49

Boa tarde professor, o objetivo desta UC é intercetar a lista de ligações de dois jogadores e depois, dependendo do grau que foi pedido o grafo, mostrar os restantes jogadores que possuem ligação com os jogadores dessa lista?

RESPOSTA:
apenas listar os amigos diretos comuns a ambos os utilizadores.

supondo que:

A tem ligação direta com B, C, D, E
X tem ligação direta com C, Y, Z
o "grafo" de amigos comuns é {C}

ACEDER


Tuesday, 14 de December de 2021 às 18:31

É necessário uma página específica para esta UC? Pois no meu caso isso ja existe na UC de solicitar introdução.

RESPOSTA:
Se já está disponível essa informação nessa página podes considerar o caso de uso como realizado

ACEDER


Tuesday, 14 de December de 2021 às 21:31

Um dos utilizadores tem de ser o utilizador logado?

RESPOSTA:
Sim. Deve ser escolhido outro utilizador e mostrar os amigos comuns com o utilizador autenticado

ACEDER


->MENU


2. Análise

Neste UC, pretende-se que um utilizador seja capaz de visualizar e mostrar os amigos em comum com outro utilizador, sendo o fluxo o seguinte:

SSD

Alterações ao MD

  • N/A

Testes a Implementar

Testes de validação da força.

Regras de Negócio

  • N/A

->MENU


3. Design

NÍVEL 1

SSD

NÍVEL 2

SSD NÍVEL 2

3.1. Realização da Funcionalidade

NÍVEL 3

SD

3.2. Padrões Aplicados

User Interface

O padrão de User Interface é usado para fornecer uma interface simples de usar para que as partes restantes do sistema sejam separadas.

Controller

O padrão Controller foi usado para ter um controlador que pode atuar como um organizador da lógica do caso de uso.

High Cohesion, Low Coupling

Padrão usado para diminuir o acoplamento entre classes e, ao mesmo tempo, apenas atribuir-lhes associações que sejam realmente coesas com o seu propósito. Em todo esse caso de uso, tentamos restringir as responsabilidades próprias de cada classe e, assim, minimizar as associações apenas ao necessário. Como pode ser visto neste caso de uso:

Os DTO´S guardam os dados inseridos num objeto intermediário para posteriormente mostrar o valor calculado;

O Repositório é usado para buscar os Utilizadores e Relacões criados.

O Controller trata de toda a lógica de atualização de um evento delegando etapas intermediárias às outras classes.

DTO

O padrão DTO fornece um objeto intermediário para transferência de dados, reduzindo o acoplamento entre o domínio e as camadas do aplicativo, permitindo o carregamento rápido do aplicativo e garantindo mais segurança.

Repository

O Repositório ajuda a persistir, armazenar e acessar dados. É usado na camada de Persistência para garantir a instanciação de UtilizadorRepository, onde é armazenado e tem acesso aos utilizadores. Abstrai os detalhes dos métodos que modificam o estado deste objeto.

Dependency Injection

Mantém o baixo nível de acoplamento entre os diferentes módulos do sistema. Com este princípio, ao invés de se terem dependências programas nos módulos, elas são configuradas num "container", sendo responsável por "injetar" (fornecer) as dependências necessárias a cada componente.

Inversion of Dependencies

É uma forma específica de desacoplamento de módulos de software. Partem de módulos de alto nível, responsáveis pela coordenação geral e lógica, para os de baixo nível. Assim, os módulos de alto nível tornam-se independentes dos detalhes de implementação dos de baixo nível. Módulos de alto nível não devem incorporar (ou incluir) nada dos módulos de baixo nível. Os dois módulos devem trabalhar apenas com abstrações, ou seja, através do uso de interfaces. Abstrações não devem depender de detalhes de implementação, mas os detalhes é que devem depender de abstrações.

->MENU


4. Observações

->MENU


⚠️ **GitHub.com Fallback** ⚠️