Análise e Projeto Orientado a Objetos - Parte 1
Autor: Luiz Fernando da Silva | Publicado: 2010-11-17T07:17:00-02:00

Conceitos
Objeto: Uma instância de uma classe
Classe: Um conjunto de características e funcionalidades que definem objetos
Atributos: Características de uma classe, os dados do objeto
Métodos: Uma ação executada, algo que o objeto faz
Mensagem: Uma chamada de método
Diagrama de classes

Notação: Um retângulo dividido em 3 partes, na primeira fica o nome, na segunda os atributos, na terceira os métodos e caso seja necessário é possível criar mais dicisões.


Visibilidade: Para os atributos e métodos da classe pode ser usada as seguintes notações de visibilidade:
+ (público): O atributo/método pode ser acessado por qualquer outra classe
- (privado): O atributo/método apenas poderá ser acessado pela própria classe
# (protegido): O atributo/método poderá ser acessado apenas pela própria classe e suas descendentes na herança
~ (pacote/default): O atributo/método pode ser acessado pelas classes que estão no mesmo pacote
Abstrata, Concreta e Interface: Uma classe abstrata não pode ser instanciada, declara os atributos e métodos mas não implementa. Uma classe concreta não possui métodos abstratos e implementam todos os seus métodos (uma classe simples). Uma inteface é um “contrato” que informa o que a classe deve fazer mas não tem nenhuma implementação.

Relacionamento entre classes

Associação:&nbsp; Representa uma relação “tem um” ou “existe um”. É quando uma classe faz referência a outra classe num determinado período de tempo. Um objeto pode existir sem que o outro exista. É representado por uma linha entre as duas classes. É subdividido em:

&nbsp;&nbsp;&nbsp; Agregação: Uma relação forte “tem um” que define uma propriedade, quando a classe que se relaciona deixa de existir, a classe relacionada continua existindo mas perde parte do sentido de existência. É representado por uma linha, no lado da classe que se relaciona coloca-se um diamante sem preenchimento e no lado da classe relacionada coloca-se uma seta.


&nbsp;&nbsp;&nbsp; Composição:&nbsp; Uma relação muito forte “todo-parte” que diz que uma classe “é parte de” outra classe. Quando a classe que se relaciona é destruída, a relacionada também será. É representado por uma linha, no lado da classe que se relaciona coloca-se um diamante&nbsp; preenchido e no lado da classe relacionada coloca-se uma seta.


Generalização: Representa uma “herança”. De uma classe mais geral para uma classe mais específica. É representada por um linha, na ponta da classe generalizada coloca-se um triângulo.


Dependência: É a relação mais fraca, acontece quando uma classe usa outra classe através da chamada de um método estático ou quando é usado como parâmetro de um método. É representado por uma linha tracejada apontando para a classe que é usada.


Reconhecimento de classe

Para reconhecer as classes você pode interpretar um caso de uso destacando as seguintes características:Substantivos:  se transformam nas classes. Ex.: Pessoa, Carro, Escola.
Adjetivos:  se transformam nos atributos de uma classe. Ex.: cor, peso, altura,  endereço.
Verbos: se  transformam nos métodos de uma classe. Ex.: estudar, andar,  acelerar.
É preciso saber interpretar o texto do caso de uso para saber relacionar os atributos e verbos a classe certa.

Segue abaixo uma imagem que exemplifica as principais notações do diagrama de classes:


Exemplo de diagrama de classes