Diagramas de Package

Desenvolvimento de Sistemas de Software

By Pedro Pereira20-11-2024

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.
  • Qualificação:
    • Os elementos de um package podem ser referenciados usando nomePackage::nomeClasse.
    • Exemplo: Produtos::Lente ou java.lang.String.
  • Visibilidade:
    • Usa os mesmos símbolos dos diagramas de classe:
      • +: Público.
      • -: Privado.

3. Relações Entre Packages

  1. Dependência Simples:
    • Uma alteração no package destino pode afetar o package origem.
  2. Estereótipos UML:
    • <<import>>: O package origem importa o conteúdo público do package destino, disponibilizando-o diretamente.
      • Exemplo: import java.util.*.
    • <<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;.
    • <<merge>>: Combina dois pacotes em um novo.

4. Exemplos de Dependências

  1. Importação Total:
    • O package Clientes importa todas as definições públicas de Produtos:
      import Produtos.*;
      
  2. Importação Específica:
    • O package Clientes importa apenas a classe Lente de Produtos:
      import Produtos.Lente;
      
  3. 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;
      

5. Vantagens e Boas Práticas

  1. Organização Modular:
    • Ajuda a segmentar grandes sistemas em partes mais gerenciáveis e independentes.
  2. Facilidade de Manutenção:
    • Permite alterar um pacote sem afetar outros, desde que respeitadas as dependências e visibilidade.
  3. Anticipação de Mudanças:
    • A organização antecipada dos pacotes facilita a escalabilidade do sistema.

6. Casos de Uso - Exemplo de Aplicação

  1. Estrutura Modular do Sistema de Reservas:
    • Clientes e Produtos como pacotes separados.
    • Clientes importa publicamente definições de Produtos (e.g., Lente, Armação).
  2. 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.

Apresentação de conteúdos concisos.