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::Lente
oujava.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
Lente
de 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 (