Diagrama de Classes

Diagrama de Classes

Em UML , o diagrama de classes representa a estrutura estática de um sistema, apresentando suas classes, atributos, operações e as relações entre os objetos. Sendo considerado o principal diagrama da linguagem.

Conceito geral

Segundo a OMG (Object Management Group) o diagrama de classes:

Descreve um conjunto de objetos que compartilham as mesmas especificações de atributos, operações, restrições e semântica. A finalidade de uma classe é classificar objetos e especificar os recursos que caracterizam a estrutura e o comportamento de desses objetos.

Durante o processo de modelagem do sistema os conceitos do negócio – dados, informações; devem ser analisados de maneira a reconhecer suas características – estados ou valores de suas propriedades; e seus comportamentos.

Primeiramente estes conceitos são identificados nos requisitos, isto é, em cenários. Por exemplo: onde o os funcionários de almoxarifado trabalham com peças, solicitações de reposição e pedidos de fornecimento; a área financeira gerencia faturas e notas fiscais; vendas organiza pedidos e clientes; dentre outros processos.

Além de características e comportamentos, os conceitos do negócio se relacionassem entre si. O diagrama de classes é utilizado para tornar mais fácil a compreensão e visualização desta estrutura de conceitos e seus relacionamentos.

As vídeo aulas a seguir apresentam a teoria e prática a respeito do diagrama. Descrevem seus elementos: classes, atributos, métodos, relacionamentos; e boas práticas na sua utilização.

Após as vídeo aulas o artigo continua ;-)

Vídeo aulas

Teoria do Diagrama de Classes

Parte I

Parte II

Usando o Diagrama de Classes na prática

Na vídeo aula a seguir está a demonstração da resolução de um estudo de caso simples de Gestão de Biblioteca de Mídias:

A seguir os elementos e como demonstrar relacionamentos e restrições no Diagrama de Classes.

Elementos do diagrama

Classes

Em orientação a objetos, uma classe é um “modelo”, que descreve estado e
comportamento comuns. É uma abstração que define um tipo de objeto e suas características (atributos) e as ações que o objeto pode realizar (métodos).

No diagrama de classes elas são representadas por um retângulo dividido em três seções:

  • Nome da classe – na primeira seção. Também é possível identificar a classe com estereótipos (assista às aulas para entender estereótipos)
  • Propriedades ou atributos – na segunda seção são definidas as propriedades, sua visibilidade e sua tipagem
  • Métodos ou ações – na terceira seção são descritas as assinaturas dos métodos, isto significa: sua visibilidade, parâmetros e tipagem de retorno
Exemplo de representação de classe Aluno no Diagrama de Classes
Representação de uma classe no Diagrama de Classes

Visibilidade

A visibilidade é definida nos elementos de uma classe com o intuito de determinar se podem (ou não) ser acessados por outras classes, em outras palavras, define o nível de acesso aos elementos da classe.

As visibilidades podem ser definidas como:

  • + {público}: o elemento pode ser utilizado pelo objeto no qual ele pertence e por qualquer objeto cliente, isto é, qualquer objeto que deseje acessar o elemento da classe/objeto.
  • # {protegido}: o elemento pode ser utilizado somente pelo próprio objeto no qual ele pertence pelas suas subclasses se existirem.
  • {privado}: o elemento pode ser utilizado somente pelo objeto ao qual ele pertence, ou seja, nem mesmo suas subclasses podem acessar o elemento.
  • ~{package}: visível para todas as classes do mesmo pacote (package).

Atributos

Um atributo é uma propriedade de um objeto (definido na classe), por exemplo.: nome, idade (atributos de pessoa). Cada atributo tem um valor para cada instância, isto é, cada criação de um objeto a partir de uma classe.

Por exemplo: para o objeto joao criado a partir da classe Aluno acima, o valor para o atributo nome é “João”.

Um atributo pode ter um valor default, isto é, a definição de um valor padrão que é atribuído a ele na instanciação do objeto.

Além disso, atributos podem ser

  • Tipos primitivos
  • Objetos de outras classes: isto é, relação com outros objetos complexos
  • Derivados:
    • Pode ser usado como um indicador para o implementador de que o atributo pode não ser estritamente necessário.
    • Símbolo que indica um atributo derivado: barra inclinada para frente (/)
TEXTO EM DESENVOLVIMENTO

Deixe uma resposta

Ademir Mazer Junior

Engenheiro de Software. desenvolvedor com aproximadamente 30 anos de experiência. Professor universitário. Especialista em Arquitetura de Software, PHP, Laravel, Processos de Desenvolvimento de Software.