You are on page 1of 39

UML: Diagrama de Classes

Projeto de Sistemas de Software

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

empregado

empregador

Empresa

Tipo: associao

papis

E a navegabilidade?

LES/PUC-Rio

Elementos Diagrama de Classes


Relacionamentos

navegabilidade

Cliente

reside

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 0..1 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 ..n 1

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

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

Disciplina
1

-definida-por 1..* 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

nome 1..* numCrditos


1 1..*

-definida-por 1

Coordenador

aluno

Turma
est-matriculado-em 4

Estudante

nome 3..10 matricula

cdigo sala horrio

-ministrada-por 0..3 1

Professor nome titulao

LES/PUC-Rio

Exemplo: Sistema de Matrcula


Diagrama de Classes: identificando os mtodos Somente depois de modelar os diagramas de seqncia

: SIM

: AnalisadorMatricula

AnalisadorMatricula
adicionar(aluno, disciplina)

1 submeterFormulario(f) :

1 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 1* ..

-processado-por

AnalisadorMatricula
1 adicion ar(alun o, di scipli na) 1 1

usa
1

SIM

-preenchido-por -aluno
1

gerencia

Estudante
matricula : Inteiro definirMatricula(matricula) obterMatricula()

1 ..*

Disciplina
nome : Texto numCreditos : Inteiro
11 .. 1

estaCompleta() adicionar(aluno : Estudante)


1

est-matriculado-em

Usuario
nome : Texto definirNome(nome) obterNome()

1 ..*

Turma
codigo : Texto sala : Texto 1 horario : Horario numAlunos : Inteiro completa : Booleano
1

Professor
titulacao : Texto definirTitulacao(titulacao) obterTitulacao()
11 ..

responsvel-por

estaCompleta() : Booleano

LES/PUC-Rio

You might also like