Definição:

Um diagrama de classes é uma representação da estrutura e relações das classes que servem de modelo para objetos. O diagrama de classes é uma modelagem muito útil para o sistema, define todas as classes que o sistema necessita/possui e é a base para a construção dos diagramas de comunicação, seqüência e estados, que veremos mais para frente.

Conceitos Básicos:

  • Classe: Elemento abstrato que representa um conjunto de objetos. A classe contém a especificação do objeto; suas características: atributos e métodos.
  • Atributo: Define características da classe.
  • Métodos: São ações que os objetos de uma classe podem realizar.

O Diagrama:

Vamos desenvolver uma classe para que todos entendam como ela é criada.

Vamos supor que no meu programa eu vá vender cachorros, então terei que ter a classe Cachorro, para que eu possa comprar um cachorrinho chamado Totó.

Posso descrever o Totó em termos de seus atributos físicos: é pequeno , sua cor principal é preta , olhos pretos , orelhas pequenas e caídas, rabo pequeno , patas brancas.

Posso também descrever algumas ações que ele faz (métodos) : balança o rabo quando chego em casa , foge e se deita se o mando sair debaixo da mesa, late quando ouve um barulho ou vê um cão ou gato, atende e corre quando o chamo pelo seu nome.

Temos aqui a representação de um objeto , no caso o meu cachorro Totó, que possui as seguintes atributos e métodos:

Atributos – Cor, altura, tamanho, largura, etc…

Métodos: Latir, correr, sentar, comer, etc.

Você pode pensar em uma classe com um modelo para criar quantos objetos você desejar de um tipo particular. Aqui temos que Totó é um objeto da classe Cachorro. Em termos de POO acabamos de criar uma instância da classe Cachorro e a chamamos Totó.

Geralmente em um sistema de médio porte serão identificados diversas classes que compõem o sistema. Como já aprendemos sobre UML vamos estudar mais um dos seus casos: diagrama de classes.

Dividimos a classe em três partes:

  • Nome
  • Atributo
  • Método

No nosso exemplo ficaria:

classe cachorro

Em modo geral a classe é formada assim:

classe

Relacionamento

Os objetos têm relações entre eles: um professor ministra uma disciplina para alunos numa sala, um cliente faz uma reserva de alguns lugares para uma data, etc. Essas relações são representadas também no diagrama de classe.

A UML reconhece algumas relações: dependência, associação e generalização (ou herança), agregação, composição.

As representações usam a seguinte notação:

  • Associação: São relacionamentos estruturais entre instâncias e especificam que objetos de uma classe estão ligados a objetos de outras classes. Podemos ter associação uniária, binária, etc.A associação pode existir entre classes ou entre objetos. Uma associação entre a classe Professor e a classe disciplina  significa que uma instância de Professor vai ter uma associação com uma instância de Disciplina. Esta relação significa que as instâncias das classes são conectadas.
  • Dependência – São relacionamentos de utilização no qual uma mudança na especificação de um elemento pode alterar a especificação do elemento dependente. A dependência entre classes indica que os objetos de uma classe usam serviços dos objetos de outra classe.
  • Generalização/Herança (simples ou composta) – Relacionamento entre um elemento mais geral e um mais específico. Onde o elemento mais específico herda os atributos e métodos do elemento mais geral. A relação de generalização também é conhecida como herança no modelo a objetos.
  • Agregação Regular – onde o objeto parte é um atributo do todo; onde os objetos (partes) somente são criados se o todo ao qual estão agregados seja criado. Ex: Pedidos é composto por itens de pedidos.
  • Composição – Relacionamento entre um elemento (o todo) e outros elementos (as partes) onde as parte só podem pertencer ao todo e são criadas e destruídas com ele.

O diagrama de classes lista todos os conceitos do domínio que serão implementados no sistema e as relações entre os conceitos. Ele é muito importante, pois define a estrutura do sistema a desenvolver.

Aqui podemos ver um exemplo de Diagrama de Classes:

Diagrama de Classes

Podemos observar que o diagrama não é composto só de herança, ele também tem agregação e outros itens que estudamos nos posts anteriores.