Vous êtes sur la page 1sur 26

UML – Diagrama de Classe

Conceitos Básicos

Prof. Ricardo Terra


Diferenciação entre classe e objeto
  As classes formam o alicerce do diagrama de classes. Assim, para
trabalhar com diagrama de classes, você precisa ter uma noção
clara da diferença entre classes e objetos. Portanto:

  Classe é a definição para um recurso. Ela inclui informações que


descrevem os recursos de uma entidade e como ela pode ser utilizada

  Objetos, ao contrário, são instâncias de uma classe. Pode-se dizer que


um objeto é uma entidade identificável de forma exclusiva de acordo
com as regras definidas pela classe

Linguagem e Técnica de Programação III 2


Diagrama de Classes
  “Se alguém chegar perto de você em um beco escuro e disser:
“Psiu, quer ver um diagrama UML:”, esse provavelmente seria um
diagrama de classes. A maioria dos diagramas UML que vejo é
composta por diagrama de classes.” (FOWLER, 2005)

  “O diagrama de classes provavelmente é o diagrama mais utilizado


da UML. Na verdade, o diagrama de classes é a ferramenta de
modelagem principal para descrever a própria UML.” (PENDER,
2004)

Linguagem e Técnica de Programação III 3


Diagrama de Classes
  Um diagrama de classes descreve os tipos de objetos presentes no
sistema e os vários tipos de relacionamento estáticos existentes
entre eles

  Os diagramas de classe também mostram as propriedades e


operações de uma classe e as restrições que se aplicam à maneira
como os objetos estão conectados

Linguagem e Técnica de Programação III 4


Classe
  Uma classe é uma descrição de um conjunto de objetos que
partilham os mesmos atributos, operações, relações e semântica

  Por exemplo, na classe Cliente, "João da Silva" pode ser


considerado um dos objetos em um sistema que pretende
manipular informação referente aos clientes de uma empresa

Linguagem e Técnica de Programação III 5


Classe
  Uma classe é descrita por seus aspectos estruturais através de
seus atributos e através de seus aspectos comportamentais através
de suas operações

  Uma classe (seus atributos e operações) pode ser detalhada


através de sua visibilidade e sua multiplicidade. Uma classe é
representada como mostrado no desenho abaixo:

Linguagem e Técnica de Programação III 6


Operações e Atributos de uma Classe
  Uma classe é definida nos seus aspectos estruturais através de
seus atributos e nos seus aspectos comportamentais através de
suas operações

  Uma classe não tem necessariamente que corresponder a uma


entidade humana ou, mais genericamente, a uma entidade com
representação física (por exemplo, uma fatura)
  Pode-se representar entidades mais abstratas (por exemplo, venda)

Linguagem e Técnica de Programação III 7


Atributos de uma Classe
  Atributo da classe
  São propriedades semelhantes que os objetos de uma classe possuem.
O "João da Silva" além do nome, também é caracterizado por outros
atributos, como endereço, número do contribuinte, cpf, rg, etc

  Cada atributo permite definir um intervalo de valores que as instâncias


dessa propriedade podem apresentar

  Meu carro é branco, o seu é preto


  Essas propriedades de carro são descritas pelo atributo cor

Linguagem e Técnica de Programação III 8


Atributos de uma Classe
  Tanto nos atributos quanto nas operações de uma classe podem
ser especificados detalhes de sua visibilidade e de sua
multiplicidade

  A sintaxe básica de um atributo é:


[visibilidade] nome-do-atributo : [tipo] { =valor-inicial }

  Exemplos:
+ nome : String

- salario : double = 1000.00

# nota : int

Linguagem e Técnica de Programação III 9


Operações de uma Classe
  Operações da Classe
  O João da Silva possui uma identidade própria, isto é, para a empresa,
ele é distinto de todos os outros clientes

  Essa identidade não é só descrita pelos atributos. Todos os objetos de


uma classe podem fazer alguma coisa (um serviço) ou pode-se fazer
com ele alguma coisa

  As operações são responsáveis pela efetivação dos serviços prestados


pelas classes

  Sobre o cliente "João da Silva" pode-se efetuar várias operações como


emitir-lhe faturas, alterar seu endereço, apagá-lo da base de dados, etc

Linguagem e Técnica de Programação III 10


Operações de uma Classe
  A sintaxe básica de uma operação é:
[visibilidade] nome-da-operação ( [lista-de-parâmetros] ) : [tipo-retorno]

  Exemplos:
- mostrar() : void

+ calcularTaxa( valorDolar : double ) : double

# somar (a : int , b: int ) : int

Linguagem e Técnica de Programação III 11


Operações e Atributos Estáticos
  Uma operação ou um atributo que não pertence a uma instância da
classe, mas à classe como um todo é chamado de operação e
atributo estático, respectivamente

  Operações e atributos estáticos são compartilhados por todas as


instâncias da classe, mas não pertence a nenhuma instância

Linguagem e Técnica de Programação III 12


Visibilidade
  Os atributos e operações de uma classe podem ser especificados
para mostrar como a mesma pode ser vista e utilizada pelos outros
elementos do sistema

  Os níveis de visibilidade para o atributo ou a operação:


  (+) PÚBLICO:
  Todas as classes visualizam
  (-) PRIVADO:
  Somente a própria classe visualiza
  (#) PROTEGIDO:
  Todas as classes do mesmo pacote e sub-classes visualizam
  (~) PACOTE:
  Todas as classes do mesmo pacote visualizam

Linguagem e Técnica de Programação III 13


Visibilidade
  Exemplo:

  Somente a própria classe tem acesso direto aos atributos do veículo


  Qualquer classe pode ligar ou desligar o veículo
  Somente classes do mesmo pacote ou sub-classes podem acelerar ou
frear o veículo
  Somente a própria classe pode ativar o ABS
  Somente classes do mesmo pacote podem ver o consumo do veículo

Linguagem e Técnica de Programação III 14


Associação
  Outra maneira de se criar um atributo é através de uma
associação

  Associação é uma linha cheia entre duas classes, direcionadas


da classe de origem para a classe de destino. A direção pode
ser nos dois sentidos, o que gera uma Associação Bidirecional
  Exemplo:

  Este exemplo indica que um objeto NotaFiscal possui pelo menos


um objeto ItemNotaFiscal.

Linguagem e Técnica de Programação III 15


Associação
  Ainda no exemplo:

  Como pode ser visto não deve-se colocar uma associação como
atributo, pois a própria associação já nos diz isto

  O código Java ficaria assim:


public class NotaFiscal {
private List<ItemNotaFiscal> itensNotaFiscal;
...
}

public class ItemNotaFiscal{


private NotaFiscal notaFiscal;
...
}

Linguagem e Técnica de Programação III 16


Classes Associativas
  Algumas associações de muitos para muitos exige a necessidade
da criação de uma classe associativa entre as duas classes
associadas
  No exemplo abaixo existe a classe Paciente com seus atributos e a
classe Exame com seus atributos. Do relacionamento entre
Paciente e Exame, tem-se a data da realização e o diagnóstico
Observe:

Linguagem e Técnica de Programação III 17


Multiplicidade
  A multiplicidade de uma classe é o número de instâncias possíveis
que uma classe pode ter considerando uma única instância da outra
classe a qual ela é associada. Ou seja, é o número de objetos de
uma classe que pode relacionar com um único objeto de uma outra
classe

  Multiplicidades são números simples ou intervalos de números. A


tabela abaixo exemplifica os tipos comuns de multiplicidades

0..1 Uma instância opcional.


1 Exatamente uma instância.
0..* Zero ou mais instâncias.
1..* Pelo menos uma instância.

Linguagem e Técnica de Programação III 18


Multiplicidade
  No exemplo abaixo, um pedido pode estar vinculado a um único
cliente, porém um cliente poderá possuir qualquer quantidade de
pedidos

  E esses?

Linguagem e Técnica de Programação III 19


Generalização
  Trata-se da ação de uma classe herdar toda a estrutura de uma
outra classe
  Uma sub-classe sempre herda de sua super-classe:
  Atributos
  Operações
  Relacionamentos

  Uma sub-classe pode:


  Adicionar atributos e operações
  Adicionar relacionamentos
  Sobrepôr (override) operações herdadas
  Sobrecarregar (overload) operações herdadas

  Uma sub-classe sempre herda tudo de sua super-classe, isto é, não


tem como herdar somente alguns atributos ou operações.

Linguagem e Técnica de Programação III 20


Generalização
  Exemplo:

  ContaCorrente é um tipo de Conta


  ContaPoupanca é um tipo de Conta

Linguagem e Técnica de Programação III 21


Pacotes
  Um pacote é um mecanismo de agrupamento

  Pode ser utilizado para agrupar qualquer elemento UML (como


casos de uso, atores, classes, componentes e outros pacotes)

  Geralmente utizada para especificar uma distribuição lógica

Linguagem e Técnica de Programação III 22


Pacotes
  Os pacotes em um diagrama de classes são altamente utilizados,
pois, na implementação do sistema, a organização das classes são
sempre feitas utilizando pacotes

Linguagem e Técnica de Programação III 23


Notas e Comentários
  Assim como todo diagrama UML pode ser inseridos notas ou
comentários

Linguagem e Técnica de Programação III 24


Cuidado
  Diagrama de Classes não é um modelo ER

  O maior perigo com os diagramas de classes é que você pode


focalizar exclusivamente na estrutura e ignorar o comportamento

Linguagem e Técnica de Programação III 25


Referência Bibliográfica
  FOWLER, Martin. UML Essencial. 3 ed. Porto Alegre: Bookman,
2005.

  PENDER, Tom. UML, a Bíblia. 2 reimp. Rio de Janeiro:


Campus, 2004.

Linguagem e Técnica de Programação III 26

Vous aimerez peut-être aussi