Diagrama de Classes
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:

Em modo geral a classe é formada assim:

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:

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.