Diagrama de classes

Computação II - Ciência da Computação


Prof.: Danilo S. Carvalho

Nessa aula, vamos examinar com mais detalhes o diagrama de classes da UML.


Ao final da aula, entenderemos como construir um diagrama de classe UML representando a estrutura dos conceitos de um programa.

Um diagrama de classes UML pode ser composto pelos seguintes elementos:

Classe

Representa uma classe (conceito) do sistema.

É desenhada como um retângulo segmentado em 3 partes:

Primeiro o nome da classe.

Na segunda parte os atributos são listados, junto com os seus tipos, separados por ":".

Na terceira parte são listados os métodos, junto com os seus argumentos e tipos.

Atributos e métodos públicos são precedidos do símbolo (+) e privados, do símbolo (-).

Interface

Representa uma interface do sistema.

É desenhada de forma similar às classes, mas apenas com os métodos e atributos da interface.

Acima do nome da interface incluimos o estereótipo <<interface>>, para indicar uma interface.

Relacionamentos

Indicam uma relação entre duas classes.

São desenhados como linhas conectando duas classes ou uma classe e uma interface.

Dependendo do tipo de relação, a linha possui pontas ou traço diferente.

Herança

Indica uma relação de herança entre duas classes.

É desenhada como uma linha apontando da classe filha para a classe mãe.

A ponta conectada à classe mãe tem uma seta na forma de um triângulo vazio.

Implementação

Indica uma relação de implementação entre uma classe e uma interface.

É desenhada de forma similar à relação de herança, mas com a linha tracejada.

Associação

Indica uma relação de associação entre duas classes.

É desenhada como uma linha conectando duas classes, anotada com o significado da associação.

Próximo às classes associadas são colocadas as cardinalidades da associação, indicando a quantidade de instâncias possíveis para cada lado.

No exemplo abaixo, uma pessoa mora em apenas um endereço, mas um endereço pode abrigar uma ou mais pessoas.

Dependência

Indica uma relação de dependência entre duas classes.

É desenhada como uma linha tracejada, apontando da classe dependente para a classe dependida.

A ponta conectada à classe dependida possui uma seta aberta.

No exemplo abaixo, a classe FabricaDeCarros depende da existência da classe Carro.

Composição

Indica uma associação "parte - todo" entre as classes.

É desenhada como um losango preenchido na ponta "todo" da associação.

No exemplo abaixo, uma turma é composta por alunos.

Agregação

Indica uma associação "tem um" entre as classes.

É desenhada como um losango vazio na ponta da classe que "tem" da associação.

No exemplo abaixo, um professor "tem" uma ou mais turmas para ensinar.

Classe de associação

Indica uma associação entre a classes que contem atributos próprios.

É desenhada como uma classe conectada a uma associação por uma linha pontilhada.

No exemplo abaixo, uma avaliação é uma associação entre aluno e turma, que possui atributos próprios: a data em que a avaliação foi feita e a nota obtida pelo aluno.

Um diagrama completo

Agora já podemos desenhar nossos próprios diagramas de classe UML.


Além disso, podemos também compreender a estrutura de um sistema baseado em seu diagrama de classes e implementar o código java correspondente.

Perguntas:

  1. Como seria representada a relação entre as classes JDK e LinguagemJava? E entre Universidade e Campus?
  2. Como diferenciamos uma classe abstrata de uma classe concreta em um diagrama de classes UML?

Exercício:

  1. Desenhe um diagrama de classes UML para o sistema de administração da biblioteca.

Até a próxima aula!