Diagramas de Package
1. Introdução aos Diagramas de Package
Os diagramas de package são um tipo de diagrama estrutural da UML, usados para organizar e representar pacotes (packages) e as relações entre eles.
- Objetivo:
- Lidar com a complexidade crescente dos sistemas, agrupando classes, interfaces e outros elementos em unidades lógicas.
- Facilitar a compreensão, manutenção e evolução do sistema.
- Aplicações:
- Organizar componentes em diagramas de classes, componentes, distribuição ou casos de uso.
- Representar dependências entre subsistemas e identificar pontos de integração.
2. Definição de Packages
- Pacotes:
- Em UML, agrupam classes, interfaces, componentes, ou até outros pacotes.
- No código:
- Java:
package. - C++:
namespace.
- Java:
- Qualificação:
- Os elementos de um package podem ser referenciados usando
nomePackage::nomeClasse. - Exemplo:
Produtos::Lenteoujava.lang.String.
- Os elementos de um package podem ser referenciados usando
- Visibilidade:
- Usa os mesmos símbolos dos diagramas de classe:
+: Público.-: Privado.
- Usa os mesmos símbolos dos diagramas de classe:
3. Relações Entre Packages
- Dependência Simples:
- Uma alteração no package destino pode afetar o package origem.
- Estereótipos UML:
<<import>>: O package origem importa o conteúdo público do package destino, disponibilizando-o diretamente.- Exemplo:
import java.util.*.
- Exemplo:
<<access>>: O package origem pode aceder ao conteúdo público do package destino, mas com nomes totalmente qualificados.- Exemplo:
private java.util.HashMap<Produto> produtos;.
- Exemplo:
<<merge>>: Combina dois pacotes em um novo.
4. Exemplos de Dependências
- Importação Total:
- O package Clientes importa todas as definições públicas de Produtos:
import Produtos.*;
- O package Clientes importa todas as definições públicas de Produtos:
- Importação Específica:
- O package Clientes importa apenas a classe
Lentede Produtos:import Produtos.Lente;
- O package Clientes importa apenas a classe
- Acesso Sem Importação:
- Classes no package Clientes usam definições públicas de Produtos, mas sem importar explicitamente:
private Produtos.Lente lenteEsq, lenteDir; private Produtos.Armação arm;
- Classes no package Clientes usam definições públicas de Produtos, mas sem importar explicitamente:
5. Vantagens e Boas Práticas
- Organização Modular:
- Ajuda a segmentar grandes sistemas em partes mais gerenciáveis e independentes.
- Facilidade de Manutenção:
- Permite alterar um pacote sem afetar outros, desde que respeitadas as dependências e visibilidade.
- Anticipação de Mudanças:
- A organização antecipada dos pacotes facilita a escalabilidade do sistema.
6. Casos de Uso - Exemplo de Aplicação
- Estrutura Modular do Sistema de Reservas:
- Clientes e Produtos como pacotes separados.
- Clientes importa publicamente definições de Produtos (e.g.,
Lente,Armação).
- Fluxo de Dependência entre Camadas:
- Camadas de interface (
IU), lógica de negócios (LN) e dados (DL) interagem através de pacotes bem definidos, garantindo desacoplamento.
- Camadas de interface (