É uma construção de agrupamento que permite a você pegar qualquer construção na UML e agrupar seus elementos em unidades de nível alto. Representa um grupo de classes (ou outros elementos) que se relaciona com outros pacotes através de uma relação de dependência. Os pacotes também podem ser membros de outros pacotes, construindo uma estrutura hierárquica. Cada pacote representa um espaço de nomes, o que significa que toda classe deve ter um nome exclusivo dentro do pacote a que pertence. Se eu quiser criar uma classe Date e já existir uma classe Date dentro do pacote System, eu posso ter minha classe Date, desde que a coloque em um outro pacote. Nome que mostra a estrutura do pacote ao qual pertence. Ex: Java::Util::Date Xiii!! Muito complicado. É necessário uma habilidade em projetos para ser respondida. Porém existem dois princípios básicos dos diagramas de pacotes, são eles, o Princípio do Fechamento Comum e o Princípio da Reutilização Comum . As classes de um pacote devem precisar de alterações por motivos semelhantes. Todas as classes de uma pacote devem ser reutilizadas juntas. Se você tem pacotes de apresentação e de domínio, então tem uma dependência do pacote de apresentação para o pacote de domínio, caso qualquer classe do pacote de apresentação dependa de qualquer classe do pacote de dependência. Logo, as dependências entre pacotes resumem as dependências entre seus conteúdos. A camada de aplicação: apresentação, domínio, mapeamento de dados e banco de dados. E a áreas de assunto: arrendamento e bens. Frequentemente, você verá um caso em que um pacote define uma interface que pode ser implementada por vários outros pacotes. É extremamente útil em sistemas de grande porte, para ter uma visão de dependência entre os principais elementos de um sistema. Pesquise Robert Martin.