Você está na página 1de 46

UML: Diagrama de Classes

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.

Turma

cdigo: Texto
est-matriculado-em -ministrada-por
sala: Texto
horario: Horario

Aluno Professor
estaAberta()
definirProfessor(professor)
nome: Texto nome: Texto
incluirAluno(aluno)
matrcula: Inteiro titulao: Texto

definirNome(nome) definirNome(nome)
obterNome() obterNome()
definirMatricula(matricula) definirTitulacao(titulo)
obterMatricula obterTitulacao

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.

Nome_da_classe

atributo1
atributo2
...

metodo1
metodo2
metodo3
...

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

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

Relacionamentos

nome

multiplicidade sentido de leitura

1..* trabalha para *


Pessoa Empresa
empregado empregador

Tipo: associao

papis

E a navegabilidade?

LES/PUC-Rio
Elementos Diagrama de Classes

Relacionamentos

navegabilidade

reside
Cliente 1 *
Endereo

O cliente sabe quais so seus endereos, mas o endereo no sabe


a quais clientes pertence

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)

multiplicidade

1..* trabalha para *


Pessoa Empresa

associao

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

todo parte

1 1..*
Pedido Item

agregao

um objeto parte pode fazer parte de vrios objetos todo

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

1 1
Notebook Teclado
1 0..*
Window Frame

1..* 0..*
errado

Quando o todo morre todas as suas partes tambm morrem

LES/PUC-Rio
Elementos Diagrama de Classes

Relacionamento: Composio
Ex:

Empresa
1
1..* 1..*
0..1
Departamento Escritrio
*

Janela
1

2 0..1 1
Scroll Ttulo Corpo

LES/PUC-Rio
Elementos Diagrama de Classes

Agregao X Composio

Sala Mesa
1
1..n

Andar 1..n Edifcio

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)

superclasse Veculo
um
um tipo de

subclasse 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:

cliente fornecedor

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

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);
}
Applet

HelloWorld Graphics

paint(Graphics g)

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 A 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.

A D B
d(a,b,x) e d(a,b,x) existem

LES/PUC-Rio
Elementos Diagrama de Classes

Classe de associao
0..* trabalha 1..*
Empresa Pessoa

No existe uma
pessoa com
dois empregos Emprego
na mesma descrio atributos do
empresa relacionamento
salrio

Uma pessoa pode


fazer mais de um
pedido na mesma
empresa

1 0..* 0..* 1
Empresa Pedido Pessoa
pertence faz
itemPedido

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 Blog

<<include>>
Criar Comentario

Ler Conteudo Ler Nota

Usuario
Ler Comentario

<<include>> <<include>>

Remover Comentario

Remover Conteudo Remover Nota

Dono do blog Criar Nota

LES/PUC-Rio
Blog: Diagrama de Classes

Blog
0..*
-dtCriacao:Date
-titulo:String
-dono:UsuarioBlog
-conteudos:Vector

+criarNota:void
1 dono
+exibirConteudo:void
UsuarioBlog 0..* usa 1 +comentar:void
usuario +lerComentarios:Vector
-email:String +removerConteudo:void
+lerNotas:Vector
+notificarExclusao:void +Blog
1 autor

0..*
Conteudo
0..*
-dtCriacao:Date
-texto:String
-autor:UsuarioBlog

+Conteudo
+exibirConteudo:void

Nota
Comentario
-comentarios:Vector 0..*
-attribute1:int
+finalize:void
+comentar:void
+lerComentarios:Vector
+finalize:void
LES/PUC-Rio
Exemplo: Sistema de Matrcula

Descrio

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.

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

Diagrama de Classes: identificando as classes

Professor Coordenador Estudante

Universidade Disciplina Turma Curso

FormularioMatricula AnalisadorMatricula

SistemaRegistroAcademico ListaAlunos

LES/PUC-Rio
Exemplo: Sistema de Matrcula

Diagrama de Classes: identificando os relacionamentos

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.

LES/PUC-Rio
Exemplo: Sistema de Matrcula

Diagrama de Classes: identificando os relacionamentos

O formulrio de matrcula processado por um analisador


de matrcula
-processado-por
FormularioMatricula AnalisadorMatricula
0..* 1

O analisador de matrcula gerencia a disciplina

-processado-por
FormularioMatricula AnalisadorMatricula
0..* 1
1

0..*
Disciplina

LES/PUC-Rio
Exemplo: Sistema de Matrcula

Diagrama de Classes

-processado-por
FormularioMatricula AnalisadorMatricula
0..* 1
1 1

gerencia

0..*
-preenchido-por -definida-por
Disciplina Coordenador
1..* 1
1

aluno 1 1..*
est-matriculado-em -ministrada-por
Estudante Turma Professor
3..10 4 0..3 1

LES/PUC-Rio
Exemplo: Sistema de Matrcula

Diagrama de Classes: identificando os atributos

Os atributos podem ser encontrados examinando-se as


descries dos casos de uso e tambm pelo conhecimento do
domnio do problema.

Turma
Cada turma oferecida possui
cdigo
um cdigo, uma sala e um sala
horrio. horrio

LES/PUC-Rio
Exemplo: Sistema de Matrcula

Diagrama de Classes

-processado-por
FormularioMatricula AnalisadorMatricula
0..* 1
1 1

gerencia

0..*
Disciplina
-definida-por
-preenchido-por nome Coordenador
1..* 1
numCrditos
1

1..*
aluno 1
Turma
Estudante cdigo -ministrada-por
Professor
est-matriculado-em
nome sala nome
3..10 4 0..3 1
matricula horrio titulao

LES/PUC-Rio
Exemplo: Sistema de Matrcula

Diagrama de Classes: identificando os mtodos

: SIM : AnalisadorMatricula
AnalisadorMatricula

1: submeterFormulario(f) adicionar(aluno, disciplina)

2: adicionar(a,d )

SIM

submeterFormulario(formulario)

LES/PUC-Rio
Exemplo: Sistema de Matrcula

Diagrama de Classes:
E a navegabilidade?

Estudante est-matriculado-em Turma


3..10 4

public class Estudante { public class Turma {


private String nome; private String codigo;
private String matricula; private String sala;
... private Estudante alunos[];
} ...
}

OBS: Turma no aparece como atributo de Estudante!


LES/PUC-Rio
Exemplo: Sistema de Matrcula

Diagrama de Classes:

Acrescentando generalizaes:
Atributos, operaes e/ou relacionamentos comuns podem ser
movidos para uma classe mais geral.

Us uario
nome : Texto

definirNome(nome)
obterNome()

Estudante Professor
matricula : Inteiro titulacao : Texto

definirMatricula(matricula) definirTitulacao(titul acao)


obterMatricula() obterTitulacao()

LES/PUC-Rio
Exemplo: Sistema de Matrcula

FormularioMatricula
-pr ocessado-por AnalisadorMatricula
usa SIM
obterEstudante() : Estudante 0.. * 1 adic ion ar(alun o, di s cipli na) 1 1
obterNomeDIsciplina(i : Inteiro) : Texto
1
1

-preenchido-por gerencia

-aluno 1
0..*
Estudante
matricula : Inteiro Disciplina
nome : Texto
definirMatricula(matricula) numCreditos : Inteiro
obterMatricula()
3.. 10
estaCompleta()
adicionar(aluno : Estudante)

1
est-m atriculado-em

Usuario
nome : Texto

definirNome(nom e)
obterNom e() 1..*

Turma
codigo : Texto
sala : Texto
4 horario : Horario
Professor num Alunos : Inteiro
responsvel-por
titulacao : Texto com pleta : Booleano
0..3 1
definirTitulacao(titulacao) estaCompleta() : Booleano
obterTitulacao()

LES/PUC-Rio