You are on page 1of 46

UML: Diagrama de Classes

LES/PUC-Rio
UML Diagrama de Classes
Introduo Diagrama de classes
Elementos do diagrama de classes
Exemplo: Sistema de matrcula
LES/PUC-Rio
Introduo - Diagrama de Classes
Mostra um conjunto de classes e seus relacionamentos.
o diagrama central da modelagem orientada a objetos.
Aluno
nome: Texto
matrcula: Inteiro
definirNome(nome)
obterNome()
definirMatricula(matricula)
obterMatricula
Turma
cdigo: Texto
sala: Texto
horario: Horario
estaAberta()
definirProfessor(professor)
incluirAluno(aluno)
est-matriculado-em
Professor
nome: Texto
titulao: Texto
definirNome(nome)
obterNome()
definirTitulacao(titulo)
obterTitulacao
-ministrada-por
LES/PUC-Rio
Elementos Diagrama de Classes
Elementos de um diagrama de classes
Classes
Relacionamentos
Associao
Agregao
Composio
Generalizao
Dependncia
LES/PUC-Rio
Elementos Diagrama de Classes
Elementos de um diagrama de classes
Classes
Relacionamentos
Associao
Agregao
Composio
Generalizao
Dependncia
LES/PUC-Rio
Elementos Diagrama de Classes
Classes
Graficamente, as classes so representadas por retngulos
incluindo nome, atributos e mtodos.
Devem receber nomes de acordo com o vocabulrio do
domnio do problema.
comum adotar um padro para nome-las
Ex: todos os nomes de classes sero substantivos singulares
com a primeira letra maiscula
Nome_da_classe
atributo1
atributo2
...
metodo1
metodo2
metodo3
...
LES/PUC-Rio
Elementos Diagrama de Classes
Classes
Atributos
Representam o conjunto de caractersticas (estado)
dos objetos daquela classe
Visibilidade:
+ pblico: visvel em qualquer classe de qualquer pacote
# protegido: visvel para classes do mesmo pacote
- privado: visvel somente para classe
Exemplo:
+ nome : String
LES/PUC-Rio
Elementos Diagrama de Classes
Classes
Mtodos
Representam o conjunto de operaes (comportamento)
que a classe fornece
Visibilidade:
+ pblico: visvel em qualquer classe de qualquer pacote
# protegido: visvel para classes do mesmo pacote
- privado: visvel somente para classe
Exemplo:
- getNome() : String
LES/PUC-Rio
Elementos Diagrama de Classes
Elementos de um diagrama de classes
Classes
Relacionamentos
Associao
Agregao
Composio
Generalizao
Dependncia
LES/PUC-Rio
Elementos Diagrama de Classes
Relacionamentos
Os relacionamentos possuem:
Nome: descrio dada ao relacionamento (faz, tem, possui,...)
Sentido de leitura
Navegabilidade: indicada por uma seta no fim do relacionamento
Multiplicidade: 0..1, 0..*, 1, 1..*, 2, 3..7
Tipo: associao (agregao, composio), generalizao e
dependncia
Papis: desempenhados por classes em um relacionamento
LES/PUC-Rio
Elementos Diagrama de Classes
Pessoa Empresa
1..*
Tipo: associao
multiplicidade
*
trabalha para
empregado
papis
empregador
sentido de leitura
Relacionamentos
E a navegabilidade?
nome
LES/PUC-Rio
Elementos Diagrama de Classes
Relacionamentos
O cliente sabe quais so seus endereos, mas o endereo no sabe
a quais clientes pertence
Endereo Cliente
reside
1
*
navegabilidade
LES/PUC-Rio
Elementos Diagrama de Classes
Elementos de um diagrama de classes
Classes
Relacionamentos
Associao
Agregao
Composio
Generalizao
Dependncia
LES/PUC-Rio
Elementos Diagrama de Classes
Relacionamentos: Associao
Uma associao um relacionamento estrutural que indica
que os objetos de uma classe esto vinculados a objetos de
outra classe.
Uma associao representada por uma linha slida
conectando duas classes.
Pessoa Empresa
associao
LES/PUC-Rio
Elementos Diagrama de Classes
Relacionamentos: Associao
Indicadores de multiplicidade:
1 Exatamente um
1..* Um ou mais
0..* Zero ou mais (muitos)
* Zero ou mais (muitos)
0..1 Zero ou um
m..n Faixa de valores (por exemplo: 4..7)
Pessoa Empresa
1..*
associao
multiplicidade
*
trabalha para
LES/PUC-Rio
Relacionamentos: Associao
Relacionamentos: Associao
Exemplo:
Um Estudante pode ser
um aluno de uma Disciplina e
um jogador da Equipe de Futebol
Cada Disciplina deve ser cursada por no mnimo 1 aluno
Um aluno pode cursar de 0 at 8 disciplinas
LES/PUC-Rio
Elementos Diagrama de Classes
Elementos de um diagrama de classes
Classes
Relacionamentos
Associao
Agregao
Composio
Generalizao
Dependncia
LES/PUC-Rio
Elementos Diagrama de Classes
Relacionamento: Agregao
um tipo especial de associao
Utilizada para indicar todo-parte
um objeto parte pode fazer parte de vrios objetos todo
Item Pedido
1
1..*
agregao
todo
parte
LES/PUC-Rio
Elementos Diagrama de Classes
Elementos de um diagrama de classes
Classes
Relacionamentos
Associao
Agregao
Composio
Generalizao
Dependncia
LES/PUC-Rio
Elementos Diagrama de Classes
Relacionamento: Composio
uma variante semanticamente mais forte da agregao
Os objetos parte s podem pertencer a um nico objeto todo e tm
o seu tempo de vida coincidente com o dele
Quando o todo morre todas as suas partes tambm morrem
Teclado Notebook
Frame Window
1
1
1
0..*
1..* 0..*
errado
LES/PUC-Rio
Elementos Diagrama de Classes
Relacionamento: Composio
Ex:
Janela
Scroll Ttulo Corpo
1
0..1 2 1
Empresa
Departamento Escritrio
1
1..*
1..*
0..1
*
LES/PUC-Rio
Elementos Diagrama de Classes
Agregao X Composio
Andar Edifcio
1..n
Mesa Sala
1..n
11
1..n
1..n
LES/PUC-Rio
Elementos Diagrama de Classes
Elementos de um diagrama de classes
Classes
Relacionamentos
Associao
Agregao
Composio
Generalizao
Dependncia
LES/PUC-Rio
Elementos Diagrama de Classes
Relacionamento: Generalizao
um relacionamento entre itens gerais (superclasses)
e itens mais especficos (subclasses)
um
um tipo de
superclasse
subclasse
Veculo
Terrestre Areo
LES/PUC-Rio
Elementos Diagrama de Classes
Elementos de um diagrama de classes
Classes
Relacionamentos
Associao
Agregao
Composio
Generalizao
Dependncia
LES/PUC-Rio
Elementos Diagrama de Classes
Relacionamento: Dependncia
Representa que a alterao de um objeto (o objeto
indepedendente) pode afetar outro objeto (o objeto dependente)
Ex:
Obs:
A classe cliente depende de algum servio da classe fornecedor
A mudana de estado do fornecedor afeta o objeto cliente
A classe cliente no declara nos seus atributos um objeto do tipo
fornecedor
Fornecedor recebido por parmetro de mtodo
cliente fornecedor
LES/PUC-Rio
Elementos Diagrama de Classes
Import java.awt.Graphics;
class HelloWorld extends java.applet.Applet
{
public void paint (Graphics g)
g.drawString(Hello, world!, 10, 10);
}
HelloWorld Graphics
paint(Graphics g)
Applet
LES/PUC-Rio
Elementos Diagrama de Classes
Classe de associao
Usada quando uma associao entre duas classes
contiver atributos da associao
Atributos faro parte da classe de associao
C existe para todo relacionamento de A com B
C possui referncia para A e para B
No existem dois objetos C e Cque referenciam a mesma tupla
A,B, isto , no existe c(a,b,x) e c(a,b,x) onde a e b so objetos
de A e B, respectivamente, e x e x so valores de um atributo de
C.
d(a,b,x) e d(a,b,x) existem
A B
C
A D B
LES/PUC-Rio
Elementos Diagrama de Classes
Pessoa Empresa
Emprego
descrio
salrio
atributos do
relacionamento
1..*
0..*
trabalha
Pessoa Empresa Pedido
1 0..* 1 0..*
faz pertence
itemPedido
No existe uma
pessoa com
dois empregos
na mesma
empresa
Uma pessoa pode
fazer mais de um
pedido na mesma
empresa
Classe de associao
LES/PUC-Rio
Exemplo: O Blog
Um blog tem um ttulo e uma data de criao e alm disso
um conjunto de contedos.
Estes contedos (mensagens) podem ser notas ou
comentrios sobre as notas. Tanto notas quanto
comentrios tm caractersticas comuns como o texto e a
data de sua criao.
Todo usurio possui:
E-mail (deve ser nico, ou seja, no h mais de um usurio
com o mesmo e-mail)
LES/PUC-Rio
Blog: o sistema deve...
Permitir a criao de blogs
Permitir a utilizao de blogs
Qualquer usurio pode ler contedos
Somente o dono do blog pode criar notas
Qualquer usurio pode criar comentrios. Para criar um
comentrio o usurios precisa ler as notas.
Somente o dono do blog pode remover contedos. Para
remover um contedo ele precisar ler o contedo. Caso ele
remova um comentrio, o autor do comentrio deve ser
notificado por e-mail.
LES/PUC-Rio
Blog: Casos de uso
blogSystem
Criar Comentario
Ler Conteudo
Remover Conteudo Remover Nota
Remover Comentario
Criar Blog
Ler Comentario
Ler Nota
Criar Nota
Usuario
Dono do blog
<<include>> <<include>>
<<include>>
LES/PUC-Rio
Blog: Diagrama de Classes
0..*
1 autor
0..*
0..*
1 dono
0..* 1
usuario
0..*
usa UsuarioBlog
-email:String
+notificarExclusao:void
Conteudo
-dtCriacao:Date
-texto:String
-autor:UsuarioBlog
+Conteudo
+exibirConteudo:void
Blog
-dtCriacao:Date
-titulo:String
-dono:UsuarioBlog
-conteudos:Vector
+criarNota:void
+exibirConteudo:void
+comentar:void
+lerComentarios:Vector
+removerConteudo:void
+lerNotas:Vector
+Blog
Nota
-comentarios:Vector
-attribute1:int
+comentar:void
+lerComentarios:Vector
+finalize:void
Comentario
+finalize:void
LES/PUC-Rio
Exemplo: Sistema de Matrcula
A Universidade XYZ deseja informatizar seu sistema de matrculas:
A universidade oferece vrios cursos.
O Coordenador de um curso define as disciplinas que sero oferecidas pelo seu curso
num dado semestre.
Vrias disciplinas so oferecidas em um curso.
Vrias turmas podem ser abertas para uma mesma disciplina, porm o nmero de
estudantes inscritos deve ser entre 3 e 10.
Estudantes selecionam 4 disciplinas.
Quando um estudante matricula-se para um semestre, o Sistema de Registro
Acadmico (SRA) notificado.
Aps a matrcula, os estudantes podem, por um certo prazo, utilizar o sistema para
adicionar ou remover disciplinas.
Professores usam o sistema para obter a lista de alunos matriculados em suas
disciplinas. O Coordenador tambm.
Todos os usurios do sistema devem ser validados.
Descrio
LES/PUC-Rio
Exemplo: Sistema de Matrcula
Diagrama de Casos de Uso
LES/PUC-Rio
Exemplo: Sistema de Matrcula
Descrio do Caso de Uso Matricular em Disciplina
Esse caso de uso se inicia quando o Estudante de Curso inicia uma sesso no
sistema e apresenta suas credenciais.
O sistema verifica se a credencial vlida.
O sistema solicita que o estudante realize sua matrcula, selecionando 4
disciplinas.
O estudante preenche um formulrio eletrnico de matrcula e o submete
para uma anlise de consistncia.
O sistema analisa as informaes contidas no formulrio.
Se as informaes so consistentes, o estudante includo em turmas
abertas de 4 disciplinas, iniciando pelas preferenciais.
Se as informaes no so consistentes, o sistema informa o motivo da
inconsistncia e solicita que o formulrio seja alterado.
LES/PUC-Rio
Exemplo: Sistema de Matrcula
Professor Coordenador Estudante
Turma Universidade Disciplina
FormularioMatricula
Curso
AnalisadorMatricula
SistemaRegistroAcademico ListaAlunos
Diagrama de Classes: identificando as classes
LES/PUC-Rio
Exemplo: Sistema de Matrcula
Exemplos de candidatos a relacionamentos:
A parte fsica ou lgica de B.
A est contido fisicamente ou logicamente em B.
A uma descrio de B.
A membro de B.
A subunidade organizacional de B.
A usa ou gerencia B.
A se comunica/interage com B.
A est relacionado com uma transao B.
A possudo por B.
A um tipo de B.
Diagrama de Classes: identificando os relacionamentos
LES/PUC-Rio
Exemplo: Sistema de Matrcula
O formulrio de matrcula processado por um analisador
de matrcula
O analisador de matrcula gerencia a disciplina
FormularioMatricula AnalisadorMatricula
-processado-por
1
0..*
Disciplina
FormularioMatricula AnalisadorMatricula
-processado-por
1 0..*
1
0..*
Diagrama de Classes: identificando os relacionamentos
LES/PUC-Rio
Exemplo: Sistema de Matrcula
Professor
Coordenador
Estudante Turma
Disciplina
FormularioMatricula AnalisadorMatricula
-preenchido-por
est-matriculado-em
-processado-por
-ministrada-por
-definida-por
aluno
gerencia
1
1
1
0..*
1
0..*
1 1..*
1
1..*
1 0..3 3..10 4
Diagrama de Classes
LES/PUC-Rio
Exemplo: Sistema de Matrcula
Os atributos podem ser encontrados examinando-se as
descries dos casos de uso e tambm pelo conhecimento do
domnio do problema.
Cada turma oferecida possui
um cdigo, uma sala e um
horrio.
Turma
cdigo
sala
horrio
Diagrama de Classes: identificando os atributos
LES/PUC-Rio
Exemplo: Sistema de Matrcula
Coordenador
FormularioMatricula AnalisadorMatricula
-preenchido-por
est-matriculado-em
-processado-por
-ministrada-por
-definida-por
aluno
gerencia
1
1
1 0..*
1
0..*
1 1..*
1
1..*
1 0..3 3..10 4
Turma
cdigo
sala
horrio
Professor
nome
titulao
Estudante
nome
matricula
Disciplina
nome
numCrditos
Diagrama de Classes
LES/PUC-Rio
Exemplo: Sistema de Matrcula
SIM
submeterFormulario(formulario)
AnalisadorMatricula
adicionar(aluno, disciplina)
: SIM : AnalisadorMatricula
2: adicionar(a,d )
1: submeterFormulario(f)
Diagrama de Classes: identificando os mtodos
LES/PUC-Rio
Exemplo: Sistema de Matrcula
E a navegabilidade?
public class Turma {
private String codigo;
private String sala;
private Estudante alunos[];
...
}
Diagrama de Classes:
public class Estudante {
private String nome;
private String matricula;
...
}
OBS: Turma no aparece como atributo de Estudante!
Turma Estudante
3..10
est-matriculado-em
3..10 4
LES/PUC-Rio
Exemplo: Sistema de Matrcula
Acrescentando generalizaes:
Atributos, operaes e/ou relacionamentos comuns podem ser
movidos para uma classe mais geral.
Estudante
matricula : Inteiro
definirMatricula(matricula)
obterMatricula()
Usuari o
nome : Texto
definirNome(nome)
obterNome()
Professor
titulacao : Texto
definirTitulacao(titul acao)
obterTitulacao()
Diagrama de Classes:
LES/PUC-Rio
Exemplo: Sistema de Matrcula
SIM
Usuario
nome : Texto
definirNome(nome)
obterNome()
FormularioMatricula
obterEstudante() : Estudante
obterNomeDIsciplina(i : Inteiro) : Texto
Estudante
matricula : Inteiro
definirMatricula(matricula)
obterMatricula()
1
1
-preenchido-por
1
1 -aluno
Professor
titulacao : Texto
definirTitulacao(titulacao)
obterTitulacao()
AnalisadorMatricula
adicionar(aluno, di scipli na) 1 1 1 1
usa
1
0.. *
1
0.. *
-pr ocessado-por
Di sciplina
nome : Texto
numCreditos : Inteiro
estaCompleta()
adicionar(aluno : Estudante)
0..*
1
0..*
1
gerencia
Turma
codigo : Texto
sala : Texto
horario : Horario
numAlunos : Inteiro
completa : Booleano
estaCompleta() : Booleano
3.. 10
4
3.. 10
4
est-matriculado-em
0..3 1 0..3 1
responsvel-por
1..*
11
1..*

You might also like