Académique Documents
Professionnel Documents
Culture Documents
Diagrama de Classes
Funes
Dados
Sistema
Diagrama de Classes
!
Diagrama de Classe
!
Representao dos dados manipulados e armazenados pelos programas de acordo com os conceitos de Orientao a Objetos Notao fortemente baseada no Diagramas Entidade-Relacionamento de Peter Chen Deve-se observar que o Diagrama de Classes privilegia a descrio segundo o paradigma OO
Notao
Nome da classe Atributo atributo: tipo de dado atributo: tipo de dado = valor inicial Operao Operao(lista de argumentos): tipo do resultado
Diagrama de Classe
!
Diagrama de Classes
!
Atributos
Pessoa Nome: Str Endereo: {
Logradouro: Str, Bairro: Str, Cidade: Str. }
Associaes
Multiplicidade da associao
Livro
Pessoa
Rtulo da associao
Diagrama de Classes
!
Diagrama de Classes
!
Associaes
Multiplicidade da associao Pessoa Livro escrito por Ttulo: Str ISBN: Int Editora: Str 0..* Nome: Str Endereo: {
Atributos e Mtodos
Conta Bancria
Obs: recomenda-se sempre incluir o nome da associao ou um papel. O papel til p/ o cdigo-fonte gerado por ferramentas CASE Pessoa Nome: Str Endereo: {
Logradouro: Str, Bairro: Str, Cidade: Str. }
1 titular
Rtulo da associao
Diagrama de Classes
!
Diagrama de Classes
!
Navegabilidade
0..* trabalha 1 Departamento
Associao Binria
Funcionrio
Joo
Funcionrio
supervisionado por
Funcionrio
Departamento
Diagrama de Classes
!
Diagrama de Classes
!
Navegabilidade
Funcionrio 0..* trabalha Departamento
Joo
Financeiro
devem ser navegadas. Unidirecional, s possvel navegar em uma direo. Por exemplo, a partir de um Funcionrio pode-se determinar o Departamento para o qual ele trabalha, mas o inverso no possvel. Bidirecional, navega-se em ambas as direes. A partir Funcionrio determina-se o Departamento e vice-versa.
Funcionrio
Departamento
Diagrama de Classes
!
Diagrama de Classes
!
Multiplicidade
Multiplicidade 0..1 1 0..* * 1..* 1..15 (m..n) Significado Zero ou um Somente 1 (opcional) Maior ou igual a zero Maior ou igual a zero Maior ou igual a 1 De 1 a 15 (m a n), inclusive
Decises de cardinalidade expem muitas suposies, antes ocultas sobre o problema que est sendo modelado. Exemplos: qual o correto?
Professor
ministra
Curso
Diagrama de Classes
!
Diagrama de Classes
!
Exemplos
trabalha
* 1
Departamento Funcionrio
Departamento 0..1
Funcionrio
0..* trabalha
Departamento gerente
1..*
Funcionrio
0..* trabalha
Departamento
(adaptado de BEZ02)
Exemplos
Financeira
cdigo nome
financia 0..1 *
Diagrama de Classe
!
Classes associativas
!
Venda
data hora
realizada por *
Vendedor
nmero nenha nvelAutorizao
Data Regime
0..1 marido
Sexo
Diagrama de Classe
!
Diagrama de Classe
!
!
Classes associativas
!
Classes associativas
Usar quando existem atributos que no pertencem s classes comuns ou quando estas classes podem participar de associaes com outras classes
Conceito no uma caracterstica de Aluno e nem uma caracterstica de Disciplina, e sim uma propriedade do relacionamento existente entre ambos.
Aluno *
matriculado
Disciplina
Financeira
cdigo nome
financia 0..1 *
Venda
data hora
realizada por *
Vendedor
nmero nenha nvelAutorizao
conceito semestre
Diagrama de Classe
!
Diagrama de Classe
!
Classes associativas
!
Classes associativas
!
Observao importante: o conceito de Classe Associativa no permitido em todas as linguagens de programao e sistemas de banco de dados OO Assim, em muitos casos as classes associativas encontradas em Anlise so substitudas por classes regulares em Projeto
Departamento
gratificao dataIncio
Funcionrio
Funo Comissionada
Gratificao dataIncio
Departamento
Diagrama de Classe
Classes associativas - Exerccio
1. 2.
Diagrama de Classe
!
Agregao
! ! !
Associa de todo/parte Ao realizada sobre todo atinge as partes Tipo especial de associao
0..*
composto-por
chefe gerencia
Empresa
Documento
Pargrafo
0..*
composto-por
Sentena
grau de desempenho
Documento
0..*
Pargrafo
0..*
Sentena
Diagrama de Classe
!
Agregao vs Composio
!
Agregao
!
Exemplo
0..*
! afiliada
Associao Esportiva
Equipe
0..*
Jogador
Endereo
logradouro bairro cidade
CPF
nmero
validaCPF: bool
Composio
!
Composio
!
A remoo do todo implica na remoo das partes O acesso s partes restrito ao todo Objeto
Endereo
logradouro bairro cidade
Exemplo
(adaptado de [HEU00])
Pessoa
nome sexo
externo
Produto
cdigo descrio
ItemVenda
quantidade
Venda
data hora
pessoa
endereo cpf
CPF
nmero
validaCPF: bool
Uso inadequado de composio: Partes de uma composio no podem ser referenciadas por objetos externos
Composio
!
Generalizao/Especializao
Exemplo
Produto
cdigo descrio
*
ItemVenda
quantidade
Venda
data hora
Generalizao/Especializao
! !
Generalizao/Especializao
!
Super-classe
realiza
Compra
PessoaFsica
CPF RG Sexo DataNascimento
PessoaJurdica
CGC RazoSocial
Sub-classes (herdeiras)
PessoaFsica
CPF RG Sexo DataNascimento
PessoaJurdica
CGC RazoSocial
Generalizao/Especializao
!
Generalizao/Especializao
Empregado {abstrata}
recebido durante o ano calcular pagamento
Se atributos de uma classe que foram identificados s podem ser aplicados em tipos especficos da classe, esta uma boa indicao de que a herana deve ser utilizada [Coad, 1992]. Exemplo: classe Imvel, atributo nmero de quartos, num. de sutes, etc.
Empregado Horista
taxa horria taxa por hora extra calcular pagamento
Empregado Assalariado
taxa semanal calcular pagamento
Empregado Autnomo
taxa mensal calcular pagamento
Generalizao/Especializao
!
Deve-se analisar as especializaes para verificar quais delas esto no domnio do problema. As que no esto presentes no devem ser representadas. Por exemplo, a modelagem de Homen e Mulher no precisa ser feita, o pagamento do salrio de um funcionrio no influenciado pelo sexo do mesmo.
Generalizao/Especializao
!
Desta forma, no deve-se criar as subclasses. Pode-se substituir a generalizao / especialzao por uma atributo na classe Empregado que descreve o sexo do empregado e associar uma restrio: {Sexo=M ou Sexo=F}.
Erros comuns
!
Generalizao/Especializao
!
Herana Mltipla
Veculo
Conceito pouco usado na prtica: No suportado por todas as linguagens de programao Adiciona maior complexidade ao modelo
Usar classes ou associaes para representar consultas ou operaes do sistema que no devem ser registradas
!
Exemplo 1
Usurio consulta Acervo
Veculo terrestre
Veculo aqutico
Veculo anfbio
Erros Comuns
!
Erros Comuns
!
Usar classes ou associaes para representar consultas ou operaes do sistema que no devem ser registradas; As associaes devem refletir caractersticas permanentes entre classes, e no situaes temporrias. ! Exemplo 2
Usurio faz * Consulta
Erros Comuns
!
Erros Comuns
!
Erros Comuns
!
Dicas
!
As associaes so suficientes
Chave primria? Usar OID!
trabalha *
No comece a projetar diretamente o diagrama de classes. Primeiro entenda o problema; Tente manter sempre simples o modelo de objetos. Evite complicaes desnecessrias; Escolha os nomes cuidadosamente. Uma heurstica simples que se voc no consegue escolher um bom nome, isto indica uma classe mal projetada;
Dicas
!
Dicas
!
No necessrio utilizar todos os conceitos da UML. Evite rvores de herana muito profundas, pois elas aumentam a probabilidade de cometer erros e tornam as classes profundas mais complexas.
Tente evitar associaes ternrias. A maioria delas pode ser decomposta em associaes binrias usando-se atributos de ligao.
Projeto Pessoa Linguagem
Vo
data nmero
Passageiro
nome
Poltrona
nmero
Exerccio
!
Exerccios:
!
Modelar a biblioteca do CCEN que permite alunos, professores e funcionrios da UFPA emprestarem e fazerem reserva de livros. Na primeira iterao, considere somente as classes; Na segunda iterao, considere tambm os atributos das classes;
Preparar um diagrama de classes mostrando relacionamentos entre as seguintes classes de objetos. Incluir associaes, agregaes e generalizaes. Acrescentar tambm atributos.
!
Hotel, hspede, funcionrio, lavanderia, sauna, boate, restaurante, bar, piscina, reserva. Escola, playground, diretor, conselho escolar, sala de aula, livro, aluno, professor, sala de repouso, computador, carteira, cadeira, porta, biblioteca.
Exerccio ! Usar classes e associaes para definir o glossrio do sistema Jogo de Futebol descrito de seguida: O jogo de futebol realizado por duas equipes de jogadores. Cada equipe composta por 11 jogadores, com diferentes funes: o goleiro, zagueiros, mdios, atacantes, e pontas de lana. O ponta de lana um atacante especial por ter especiais caractersticas de goleador... O jogo realizado num campo com medidas regulamentares (em comprimento e largura), tem duas balizas, cada qual em extremos opostos do campo. Ganha o jogo a equipe que marcar mais gols (i.e., colocar a bola) na baliza do adversrio. No jogo apenas existe uma nica bola, que apresenta caractersticas (peso, dimetro, ) regulamentares... O jogo de futebol mediado por uma equipe de 3 rbitros, em que um o rbitro principal, e os outros dois so rbitros auxiliares.
Generalizao/Especializao
ContaBancria Cliente * *
nmero dataAbertura saldo debitar(quantia) creditar(quantia)
* HistricoTransaes
Todo evento que precisa ser registrado e lembrado pelo sistema pode ser considerado um potencial candidato a classe. Idia: Existe algum instante ou evento histrico que precisa ser observado e armazenado pelo sistema?
!
ContaCorrente
limiteSaque
ContaPoupana
dataAniversrio rendimento
! !
Em um sistema de registros de carros tem que lembrar quando algum comprou o carro; Lembrar quando algum reservou/alugou uma fita; Matrcula de um aluno; e Pagamento de documentos, etc.
Restries
!
Restrio
!
Restrio {ou} implica na seleo exclusiva entre duas ou mais associaes existentes em uma classe
cliente
Conta corrente 0..* {ou} 0..* 0..1 Indivduo
Observao: possvel mapeamento para uso de restrio {ou} com multiplicidade mxima 1.
cliente
Conta corrente 0..* 0..1 Cliente
cliente
Organizao 0..1 Indivduo Organizao
Restries
1..* {ou} 0..* 1..* Empresa Indivduo
Restries
0..1
chefe
Companhia de Seguros
0..*
Empresa
empregador empregado
Pessoa
{ Pessoa.empregador = Pessoa.chefe.empregador }
0..*
0..* 0..*
Pessoa
Comit
Restries
Janela comprimento largura 1..* Empregado salrio {0,8<=comprimento/largura<=1,5} 1 chefe Cargo prioridade {prioridade nunca cresce}
Restries
0..1 casamento Data Regime
{pessoa.sexo=Feminino} esposa
Janela
Visvel em
Tela
Sexo
{ordenado}
Restries
!
Restries
Conta Bancria Pessoa Nome: Str Endereo: {
Logradouro: Str, Bairro: Str, Cidade: Str. }
Exemplos
mora * Pessoa
{subconjunto}
Condomnio
*
{subconjunto}
titular 1..*
sndico
correntista
Atributo derivado
Discusso
!
Acrescentar o monitor (aluno): o aluno pode exercer o papel de monitor durante um perodo Permitir que uma pessoa exera simultaneamente o papel de Professor e Aluno da Universidade
Professor
Aluno
Monitor
Discusso
!
Discusso
!
Problemas
Acomodao inbil de objetos que mudam de classes Pessoa ! Transmutao ou Metamorfose
!
Soluo
!
Professor
Aluno
0. criao
Professor
matrcula
Aluno
matrcula
Monitor
Monitor
Transmutao
!
Perguntas?
Exerccio
!
Construa um modelo de classes que preserve o histrico de um professor durante a sua vida profissional
!
Em particular, importante manter o registro do incio e trmino do desempenho em uma das etapas