Diagrama de Classes - nasaulas.files.wordpress.com · Introdução •Existem dois tipos de...
Transcript of Diagrama de Classes - nasaulas.files.wordpress.com · Introdução •Existem dois tipos de...
IntroduçãoIntroduçãoIntroduçãoIntrodução
• A modelagem de objetos incorpora a estrutura
estática de um sistema mostrando:
–os objetos pertencentes ao sistema
–os relacionamentos entre esses objetos
–os atributos de cada objeto
–as operações que caracterizam cada objeto
IntroduçãoIntroduçãoIntroduçãoIntrodução
• Existem dois tipos de diagramas para a modelagem
de objetos:
–Diagrama de Classes: é um esquema, um padrão ou um
modelo que descreve muitas instâncias de objetos.
–Diagrama de Objetos: descreve como os objetos de um
determinado grupo se relacionam entre si.
• serve para documentar casos de teste e exemplos para discussão.
• Ambos os diagramas oferecem uma notação gráfica
formal para a modelagem de objetos e seus
relacionamentos.
• Classe: refere-se a descrição de um conjunto de
objetos que compartilham os mesmos atributos,
operações, relações e semântica.
–outros compartimentos podem ser acrescentados
(responsabilidades, exceções, eventos, etc.)
ClasseClasseClasseClasse
Nome da ClasseFuncionário
nome: stringdata_admissão: dataCPF : stringsalário_base: float = 0.0
calcula_saláriocalcula_IR Operações
Atributos
Nome de classeNome de classeNome de classeNome de classe
• O nome de uma classe distingue uma classe de outra
classe.
–nome simples: nome sozinho
–nome com caminho: o nome da classe é precedido pelo nome
do pacote em que a classe existe.
Sistema_vendas :: ClienteCliente
• Cada objeto de uma classe possui um estado,
representado pelos valores associados a cada um dos
atributos definidos para a classe
Sintaxe para atributos:
[visibilidade] nome [multiplicidade] [:tipo]
[= valor inicial] [{propriedades}]
* atributos de classe são sublinhados
Exemplos:
nome: string
endereço [0..2] : string
CPF : inteiro {frozen}
nro_correntistas: inteiro
AtributoAtributoAtributoAtributo
OperaçãoOperaçãoOperaçãoOperação
• Uma operação é a implementação de um serviço que
pode ser requisitado a qualquer objeto da classe,
afetando o seu comportamento.
–A execução de uma operação por um objeto pode resultar na
alteração do valor de seus atributos.
• Distinção entre operações de classes e objetos:
–Operação de objeto: atua sobre um objeto (instância)
–Operação de classe: atua sobre a classe (conjunto de objetos)
• Exemplos: criação de um novo objeto da classe, pesquisa sobre
os objetos da classe, etc.
OperaçãoOperaçãoOperaçãoOperação
• Sintaxe para Operações:
[visibilidade] nome [(lista-de-parâmetros)] [:tipo-
retorno] {[propriedades]}
* operações de classe são sublinhadas.
Exemplos:
ler_temperatura( ) : numérico
calcula_area(lado: inteiro, altura: inteiro) : inteiro
valor_padrao( ): inteiro
• Responsabilidade de uma classe diz respeito as suas
obrigações dentro do contexto do sistema.
–Ao refinar o modelo, as responsabilidades de uma classe são
traduzidas em um conjunto de atributos e operações que
melhor atendam as suas obrigações.
Sensor de Temperatura
reiniciar
iniciar_alarme
avaliar_temperatura
- Monitorar temperatura
- Disparar alarme quando a temperatura
atingir valores inadequados
Responsabilidade de classeResponsabilidade de classeResponsabilidade de classeResponsabilidade de classe
Relacionamentos entre classesRelacionamentos entre classesRelacionamentos entre classesRelacionamentos entre classes
• Os relacionamentos determinam conexões entre os
objetos.
• Fornecem um caminho para a comunicação entre os
objetos.
• Principais tipos de relacionamentos:
–Associação
–Generalização
–Dependência
• Uma associação é um relacionamento estrutural que
descreve um conjunto de ligações, onde uma ligação
é uma conexão entre objetos.
Funcionário Empresa
10..*
trabalha-para
0..* 1
AssociaçãoAssociaçãoAssociaçãoAssociação
• Multiplicidade
– (1-1): cliente tem sempre 1 (e somente 1) conta
– (0-1): cliente pode ter 1 (e no máximo 1) conta
– (1-N): cliente tem sempre 1 conta, podendo ter mais
– (0-N): cliente pode ter 1 conta, podendo ter mais
1CLIENTE CONTA
0..1CLIENTE
1..*CLIENTE CONTA
*CLIENTE CONTA
AssociaçãoAssociaçãoAssociaçãoAssociação
CONTA
• Papel (opcional)
AssociaçãoAssociaçãoAssociaçãoAssociação
Pessoa
nome
datNasc
Marido
Esposa Casamento
trabalha-para Empresa
nome
endereçoempregado empregador
Funcionário
nome
cartTrab
datNasc
1..* *
• Navegação
–por definição, a navegação entre classes associadas é
bidirecional
–por conveniência, a navegação pode ser restringida a uma
única direção
–não confundir com sentido para leitura de nome de associação!
Usuário Senha1 *
proprietário
AssociaçãoAssociaçãoAssociaçãoAssociação
AgregaçãoAgregaçãoAgregaçãoAgregação
• Tipo especial de associação.
–Representa relacionamentos todo-parte, onde objetos
compostos por outros objetos são modelados como estando
associados com suas partes.
• Agregação é transitiva
–Se A faz parte de B, e B faz parte de C, então A faz parte de C.
• Agregação é não-simétrica
–Se A faz parte de B, então B não faz parte de A.
AgregaçãoAgregaçãoAgregaçãoAgregação
Monitor Teclado
Microcomputador
Mouse
0..10..1
Processador DriveCD Memória Fonte
Gabinete
0..1 1..*
Drive Disquete
0..1 1..*
Exemplo:
• Agregação simples
–A existência de um objeto componente não depende da
existência do objeto agregado;
–Um objeto componente pode ser compartilhado com outro
objeto agregado.
AgregaçãoAgregaçãoAgregaçãoAgregação
EquipeProjeto
AnalistaSistemas
1..*
1..*1..*
1..*
Multiplicidade da
extremidade do composto
pode ser maior que 1
• Agregação de composição
–Quando o todo é criado, as suas partes com multiplicidade não
fixa podem ser criadas posteriormente;
–Quando uma parte é criada, a sua existência deve ser
coincidente com a existência do todo, a não ser que seja
explicitamente removida antes da eliminação do todo;
–Quando o todo é eliminado, as suas partes também devem ser
eliminadas.
–Exemplo:
AgregaçãoAgregaçãoAgregaçãoAgregação
Empresa
1..*
1
1..*
1 Multiplicidade da
extremidade do composto
deve ser igual a 1Departamento
GeneralizaçãoGeneralizaçãoGeneralizaçãoGeneralização
• Abstrai classes genéricas, a partir de classes com
propriedades (atributos e operações) semelhantes.
• Generalização e herança são abstrações que
permitem modelar aspectos semelhantes entre
classes, preservando suas diferenças.
• Numa hierarquia de generalização, as subclasses
herdam todas as propriedades de sua superclasse.
Generalização Generalização Generalização Generalização ---- EspecializaçãoEspecializaçãoEspecializaçãoEspecialização
Eleitor
num_titulo
Pessoa
nome
endereço
sexo
data_nascim
idade
Candidato
numCandidato
Generalização Generalização Generalização Generalização ---- EspecializaçãoEspecializaçãoEspecializaçãoEspecialização
• Processo de generalização:
– Identificar classes com propriedades semelhantes.
–Definir uma nova classe com as propriedades comuns.
–As classes originais tornam-se subclasses da nova classe e
herdam as propriedades desta.
–As associações em comum passam para a superclasse e as
outras continuam nas subclasses.
Especialização Especialização Especialização Especialização ---- GeneralizaçãoGeneralizaçãoGeneralizaçãoGeneralização
• Processo de especialização:
–Definir uma ou mais subclasses a partir de uma classe
existente.
–Adicionar propriedades e associações específicas de cada nova
subclasse.
–Associações comuns ficam ligadas à superclasse.
–Pode existir mais de um tipo de especialização com base em
diferentes características.
• cada hierarquia de generalização/especialização deve abranger
uma única característica.
Processo de GeneralizaçãoProcesso de GeneralizaçãoProcesso de GeneralizaçãoProcesso de Generalização
CarronumChassiplacacornumPasanoFabrictipoComb
CaminhãonumChassiplacanumEixostonelagemano
ProprietárionomeenderCgcCpf
FabricantenomepaísOrigem Carroceria
tipofabricante1..*
1..* 1..*
1..*
CarrocornumPastipoComb
CaminhãonumEixostonelagem
VeículonumChassiplacaanoFabric
Carroceriatipofabricante
ProprietárionomeenderCgcCpf
FabricantenomepaísOrigem
1..*1..*