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 est-matriculado-em cdigo: Texto sala: Texto horario: Horario -ministrada-por

Aluno nome: Texto matrcula: Inteiro definirNome(nome) obterNome() definirMatricula(matricula) obterMatricula

estaAberta() definirProfessor(professor) incluirAluno(aluno)

Professor nome: Texto titulao: Texto definirNome(nome) obterNome() definirTitulacao(titulo) 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

Pessoa

1..*

trabalha para

Empresa

empregado

empregador

Tipo: associao

papis

E a navegabilidade?

LES/PUC-Rio

Elementos Diagrama de Classes


Relacionamentos

navegabilidade

reside

Cliente

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
associao

Empresa

LES/PUC-Rio

Elementos Diagrama de Classes


Relacionamentos: Associao
Indicadores de multiplicidade:
1 1..* 0..* * 0..1 m..n Exatamente um Um ou mais Zero ou mais (muitos) Zero ou mais (muitos) Zero ou um Faixa de valores (por exemplo: 4..7)

multiplicidade

Pessoa

1..*

trabalha para

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

Pedido
agregao

1..*

Item

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

Notebook Window
1..*

1 1

1 0..* 0..*

Teclado Frame
errado

Quando o todo morre todas as suas partes tambm morrem

LES/PUC-Rio

Elementos Diagrama de Classes


Relacionamento: Composio
Ex: Empresa 1 1..* 0..1 Departamento * Janela 1 2 Scroll 0..1 Ttulo 1 Corpo 1..* Escritrio

LES/PUC-Rio

Elementos Diagrama de Classes


Agregao X Composio

Sala
1 1..n

Mesa

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 um um tipo de 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:

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
paint(Graphics g)

Graphics

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 C

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

LES/PUC-Rio

Elementos Diagrama de Classes Classe de associao


Empresa
No existe uma pessoa com dois empregos na mesma empresa
0..* trabalha 1..*

Pessoa

Emprego descrio salrio

atributos do relacionamento
Uma pessoa pode fazer mais de um pedido na mesma empresa

Empresa

0..*

pertence

Pedido
itemPedido
LES/PUC-Rio

0..*

faz

Pessoa

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>> Remover Comentario <<include>>

Remover Conteudo

Remover Nota

Dono do blog

Criar Nota

LES/PUC-Rio

Blog: Diagrama de Classes


0..* Blog -dtCriacao:Date -titulo:String -dono:UsuarioBlog -conteudos:Vector 1 dono 0..* usuario usa 1 +criarNota:void +exibirConteudo:void +comentar:void +lerComentarios:Vector +removerConteudo:void +lerNotas:Vector +Blog

UsuarioBlog -email:String +notificarExclusao:void 1 autor

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

Nota -comentarios:Vector -attribute1:int +comentar:void +lerComentarios:Vector +finalize:void 0..*

Comentario

+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


FormularioMatricula
-processado-por 0..* 1

AnalisadorMatricula

O analisador de matrcula gerencia a disciplina


FormularioMatricula
-processado-por 0..* 1

AnalisadorMatricula
1

0..*

Disciplina

LES/PUC-Rio

Exemplo: Sistema de Matrcula


Diagrama de Classes

FormularioMatricula
1

-processado-por 0..* 1

AnalisadorMatricula
1 gerencia

0..* -preenchido-por

-definida-por 1..* 1

Disciplina
1

Coordenador

aluno

1 est-matriculado-em 3..10 4

1..*

Estudante

Turma

-ministrada-por 0..3 1

Professor

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.

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

Turma cdigo sala horrio

LES/PUC-Rio

Exemplo: Sistema de Matrcula


Diagrama de Classes

FormularioMatricula
1

-processado-por 0..* 1

AnalisadorMatricula
1 gerencia 0..*

Disciplina
-preenchido-por

-definida-por 1..* 1

nome numCrditos
1 1..*

Coordenador

aluno

1 est-matriculado-em 3..10 4

Turma cdigo sala horrio


-ministrada-por 0..3 1

Estudante nome matricula

Professor nome titulao

LES/PUC-Rio

Exemplo: Sistema de Matrcula


Diagrama de Classes: identificando os mtodos

: SIM

: AnalisadorMatricula

AnalisadorMatricula
adicionar(aluno, disciplina)

1: submeterFormulario(f)

2: adicionar(a,d )

SIM
submeterFormulario(formulario)

LES/PUC-Rio

Exemplo: Sistema de Matrcula


Diagrama de Classes:

E a navegabilidade?

Estudante

est-matriculado-em
3..10 4

Turma

public class Estudante { private String nome; private String matricula; ... }

public class Turma { private String codigo; 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
matricula : Inteiro definirMatricula(matricula) obterMatricula()

Professor
titulacao : Texto definirTitulacao(titul acao) obterTitulacao()

LES/PUC-Rio

Exemplo: Sistema de Matrcula


FormularioMatricula
obterEstudante() : Estudante obterNomeDIsciplina(i : Inteiro) : Texto
1 0.. *

-pr ocessado-por

AnalisadorMatricula
1 adic ion ar(alun o, di s cipli na) 1 1

usa
1

SIM

-preenchido-por -aluno
1

gerencia

Estudante
matricula : Inteiro definirMatricula(matricula) obterMatricula()

0..*

Disciplina
nome : Texto numCreditos : Inteiro
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 num Alunos : Inteiro com pleta : Booleano
1

Professor
titulacao : Texto
0..3

responsvel-por

definirTitulacao(titulacao) obterTitulacao()

estaCompleta() : Booleano

LES/PUC-Rio