Você está na página 1de 70

6

Diagrama de Classes
Aula 06
Prof. Kleinner Farias
Programa Interdisciplinar de Ps-Graduao
em Computao Aplicada PIPCA
Universidade do Vale do Rio dos Sinos

Objetivos
Compreender os principais conceitos sobre
diagrama de classes da UML
Entender como o diagrama de classes
complementa os outros diagramas da UML
Elaborar diagramas a partir de situaes
cotidianas

4/7/14

@KleinnerFarias

Agenda

Introduo
Motivao
Elementos do Diagrama de Classes
Exemplo Prtico
Referncias

4/7/14

@KleinnerFarias

Introduo
Representa uma viso esttica (ou estrutural)
do projeto de um software
Diagrama mais utilizado da UML
Modela os conceitos de
domnio da aplicao
descrevendo o prprio domnio do problema

projeto da aplicao
descrevendo como a implementao deve ser feita

4/7/14

@KleinnerFarias

Motivao

4/7/14

@KleinnerFarias

Motivao

4/7/14

@KleinnerFarias

Motivao

4/7/14

@KleinnerFarias

Metamodelo

4/7/14

@KleinnerFarias

Elementos do Diagrama de Classes


Classe
Atributos
Operaes

Interface
Relacionamento
Associao
Agregao
Composio

Dependncia
Generalizao
Realizao
4/7/14

@KleinnerFarias

Elementos do Diagrama de Classes


Classe
representa um conceito de OO utilizado para representar as
entidades do domnio do problema e do domnio da
soluo
possui trs compartimentos: nome, atributos e operaes
Exemplo:
nome
atributos

operaes

4/7/14

@KleinnerFarias

10

Elementos do Diagrama de Classes


Classe
Atributos: representam as caractersticas 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

4/7/14

@KleinnerFarias

11

Elementos do Diagrama de Classes


Classe
Operaes: representam os comportamentos que
os objetos de uma classe podem desempenhar
Visibilidade:
+ pblico: visvel em qualquer classe de qualquer pacote
# protegido: visvel para classes do mesmo pacote
- privado: visvel somente para classe

Exemplo:
+ getNome(): String

4/7/14

@KleinnerFarias

12

Elementos do Diagrama de Classes


Exemplo de um diagrama
Turma
est-matriculado-em

Aluno
nome: Texto
matrcula: Inteiro

cdigo: Texto
sala: Texto
horario: Horario

estaAberta()
definirProfessor(professor)
incluirAluno(aluno)

definirNome(nome)
obterNome()
definirMatricula(matricula)
obterMatricula

4/7/14

-ministrada-por

Professor
nome: Texto
titulao: Texto
definirNome(nome)
obterNome()
definirTitulacao(titulo)
obterTitulacao

@KleinnerFarias

13

Elementos do Diagrama de Classes


Classe
Atributos
Operaes

Interface
Relacionamento
Associao
Agregao
Composio

Dependncia
Generalizao
Realizao
4/7/14

@KleinnerFarias

14

Elementos do Diagrama de Classes


Interface
Elemento que especifica as comportamentos ou
servios que sero oferecidos por classes ou
componentes

4/7/14

@KleinnerFarias

15

Elementos do Diagrama de Classes


Classe
Atributos
Operaes

Interface
Relacionamento
Associao
Agregao
Composio

Dependncia
Generalizao
Realizao
4/7/14

@KleinnerFarias

16

Elementos do Diagrama de Classes


Relacionamento
representa uma conexo semntica entre elementos
do diagrama de classes

Tipos de relacionamento:
Associao
Agregao
Composio

Dependncia
Generalizao
Realizao
4/7/14

@KleinnerFarias

17

Elementos do Diagrama de Classes


Classe
Atributos
Operaes

Interface
Relacionamento
Associao
Agregao
Composio

Dependncia
Generalizao
Realizao
4/7/14

@KleinnerFarias

18

Elementos do Diagrama de Classes


Relacionamento: Associao
representa uma conexo semntica entre classes
representa conexes entre objetos de classes
relacionadas semanticamente
representa um relacionamento estrutural entre
classes
relaciona no s os classificadores, mas tambm
suas instncias

4/7/14

@KleinnerFarias

19

Elementos do Diagrama de Classes


Relacionamento: Associao
uma instncia de uma associao um link
um link uma tupla (uma lista ordenada) de
objetos
um link binrio representa o relacionamento entre
dois objetos
produz informao sobre quais objetos se
relacionam
quando o sistema estiver em execuo, links entre
os objetos sero estabelecidos e destrudos
4/7/14

@KleinnerFarias

20

Elementos do Diagrama de Classes


Relacionamento: Associao
Associations are the glue that ties a system
together. Without associations, there are nothing
but isolated classes that dont work together.
[Rumbaugh99]

4/7/14

@KleinnerFarias

21

Elementos do Diagrama de Classes


Relacionamento: Associao
Notao:
representada por uma linha s lida conectando duas classes

4/7/14

@KleinnerFarias

22

Elementos do Diagrama de Classes


Relacionamento: Associao
Qualified Association
Se um atributo (ou mais) assume um valor nico em uma
associao (relacionamento entre objetos), ento ele
um qualificador (qualifier)

4/7/14

@KleinnerFarias

23

Elementos do Diagrama de Classes


Relacionamento: Associao
Association Class
uma associao pode ter atributos prprio

4/7/14

@KleinnerFarias

24

Elementos do Diagrama de Classes


Relacionamento: Associao
Association Class

4/7/14

@KleinnerFarias

25

Elementos do Diagrama de Classes


Relacionamento: Associao
mostra uma associao representando emprego
o relacionamento entre Company e Person do tipo
many-to-many
um pessoa (Person) pode ter mais que um emprego,
porm um emprego (Job) por Empresa (Company)
salrio no um atributo nem da empresa nem da
pessoa (mas do relacionamento) porque a
associao do tipo many-to-many
salrio surge a partir do ou com o relacionamento
4/7/14

@KleinnerFarias

26

Elementos do Diagrama de Classes


Relacionamento: Associao
o relacionamento boss-worker no apenas o
relacionamento entre duas pessoas
boss-worker um relacionamento entre uma
pessoa e um emprego e uma outra pessoa e um
emprego
boss-worker representa o relacionamento
(Manages) entre uma association class e ela mesmo

4/7/14

@KleinnerFarias

27

Elementos do Diagrama de Classes


Relacionamento: Associao
Association Class vs Reified Association

4/7/14

@KleinnerFarias

28

Elementos do Diagrama de Classes


Relacionamento: Associao
Estoque (Stock) modelado como uma association
class entre Person e Company.
Quantity representa a quantidade em estoque
Por que foi utilizado uma association class?
Porque deve existe apenas um registro para cada par de
Company-Person

4/7/14

@KleinnerFarias

29

Elementos do Diagrama de Classes


Relacionamento: Associao
Por que foi utilizado uma reified association?
Pode existir mltiplas compras com um mesma PessoaEmpresa.
Cada compra distinta, sendo caracterizada pela sua data
e custo
Purchase tem seus prprios identificadores

4/7/14

@KleinnerFarias

30

Elementos do Diagrama de Classes


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

4/7/14

@KleinnerFarias

31

Elementos do Diagrama de Classes


Relacionamento: Associao
nome
multiplicidade

Pessoa

1..*

sentido de leitura

trabalha para

empregado

empregador

Empresa

Tipo: associao

papis

E a navegabilidade?

4/7/14

@KleinnerFarias

32

Elementos do Diagrama de Classes


Relacionamento: Associao
Navegabilidade:
uma associao navegvel representa informao de
estado disponvel para uma classe
pode se implementada de diferentes formas
navegabilidade

Cliente

4/7/14

reside

@KleinnerFarias

Endereo

33

Elementos do Diagrama de Classes


Relacionamento: Associao
Navegabilidade:
uma associao navegvel representa informao de
estado disponvel para uma classe

4/7/14

@KleinnerFarias

34

Elementos do Diagrama de Classes


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

Pessoa

1..*

trabalha para

Empresa

associao
4/7/14

@KleinnerFarias

35

Elementos do Diagrama de Classes


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

4/7/14

@KleinnerFarias

36

Elementos do Diagrama de Classes


Classe
Atributos
Operaes

Interface
Relacionamento
Associao
Agregao
Composio

Dependncia
Generalizao
Realizao
4/7/14

@KleinnerFarias

37

Elementos do Diagrama de Classes


Relacionamento: Agregao
um tipo especial de associao
Utilizada para indicar um relacionamento do tipo parte-todo,
porm no tem a responsabilidade de gerenciar as suas partes
Pedido no responsvel por gerenciar Item

todo

parte

Pedido

1..*

Item

agregao

4/7/14

@KleinnerFarias

38

Elementos do Diagrama de Classes


Classe
Atributos
Operaes

Interface
Relacionamento
Associao
Agregao
Composio

Dependncia
Generalizao
Realizao
4/7/14

@KleinnerFarias

39

Elementos do Diagrama de Classes


Relacionamento: Composio

uma variante semanticamente mais forte da agregao


Representa um relacionamento do tipo parte-todo
O todo responsvel por gerenciar as suas partes
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
Notebook
Window
1..*
4/7/14

0..*
0..*
@KleinnerFarias

Teclado
Frame
errado
40

Elementos do Diagrama de Classes


Relacionamento: Composio
Exemplo:
Quando o todo morre todas as suas partes tambm morrem

Janela
1

Empresa
1
0..1

1..*
Departamento

1..*
Escritrio

2
Scroll

0..1
Ttulo

1
Corpo

4/7/14

@KleinnerFarias

41

Elementos do Diagrama de Classes


Relacionamento: Agregao e Composio
Exemplo:

4/7/14

@KleinnerFarias

42

Elementos do Diagrama de Classes


Relacionamento: Composio vs Agregao
Sala

Mesa
1

1..n

Andar

4/7/14

1..n

@KleinnerFarias

Edifcio

43

Elementos do Diagrama de Classes


Classe
Atributos
Operaes

Interface
Relacionamento
Associao
Agregao
Composio

Dependncia
Generalizao
Realizao
4/7/14

@KleinnerFarias

44

Elementos do Diagrama de Classes


Relacionamento: Dependncia
representa que a alterao de um objeto (o objeto
independente) pode afetar outro objeto (o objeto
dependente)
relacionamento semanticamente mais fraco
Exemplo:
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
4/7/14

fornecedor
@KleinnerFarias

45

Elementos do Diagrama de Classes


Classe
Atributos
Operaes

Interface
Relacionamento
Associao
Agregao
Composio

Dependncia
Generalizao
Realizao
4/7/14

@KleinnerFarias

46

Elementos do Diagrama de Classes


Relacionamento: Generalizao
um relacionamento entre elementos mais genricos/estveis
(superclasses) e itens mais especficos/concretos (subclasses)

Veculo

superclasse
um
um tipo de

Terrestre

subclasse

4/7/14

@KleinnerFarias

Areo

47

Elementos do Diagrama de Classes


Relacionamento: Generalizao
um relacionamento entre elementos mais genricos/estveis
(superclasses) e itens mais especficos/concretos (subclasses)

4/7/14

@KleinnerFarias

48

Elementos do Diagrama de Classes


Classe
Atributos
Operaes

Interface
Relacionamento
Associao
Agregao
Composio

Dependncia
Generalizao
Realizao
4/7/14

@KleinnerFarias

49

Elementos do Diagrama de Classes


Relacionamento: Realizao
conecta uma classe a um interface
um interface especifica quais comportamentos um
classe deve ter/implementar
nenhum comportamento ou estrutura oferecido

4/7/14

@KleinnerFarias

50

Elementos do Diagrama de Classes


Relacionamento: Realizao
Exemplo:

4/7/14

@KleinnerFarias

51

Elementos do Diagrama de Classes


Relacionamento: Generalizao e Realizao
generalizao e realizao relacionam algo mais
genrico com algo mais especfico
generalizao relaciona dois elementos em um
mesmo nvel semntico
Exemplo: mesmo nvel de abstrao

generalizao relaciona elementos que so


usualmente mantidos em um mesmo modelo/
mdulo

4/7/14

@KleinnerFarias

52

Elementos do Diagrama de Classes


Relacionamento: Generalizao e Realizao
Realizao relaciona elementos em diferentes nveis
semnticos,
um classe de anlise e uma classe de projeto
Exemplo: uma interface e uma classe que a implementa

4/7/14

@KleinnerFarias

53

Elementos do Diagrama de Classes


Relacionamento

Breve descrio

associao

Uma conexo entre instncias de


classes

agregao

Relacionamento do tipo parte-todo

composio

Relacionamento do tipo parte-todo


mais forte a agregao

dependncia

Depencncia entre dois elementos do


modelo

generaliao

Relacionamento de herana de OO
Relacionamento entre algo mais
genrico (estvel) e algo mais
especfico (menos estvel)

realizao

Relacionamento entre uma


especificao e sua implementao.
Ex.: entre uma interface e uma classe
que a implementa

Notao

54

Exemplo de Diagrama

4/7/14

55

Exemplo Prtico
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.
4/7/14

@KleinnerFarias

56

Exemplo Prtico
Descrio do Caso de Uso

4/7/14

@KleinnerFarias

57

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

4/7/14

@KleinnerFarias

58

Exemplo Prtico
Exemplos de candidatos a relacionamentos:

4/7/14

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.

@KleinnerFarias

59

Exemplo Prtico
Identificando as classes
Professor

Universidade

Coordenador

Disciplina

FormularioMatricula

Turma

Curso

AnalisadorMatricula

SistemaRegistroAcademico

4/7/14

Estudante

@KleinnerFarias

ListaAlunos

60

Exemplo Prtico
Identificando os relacionamentos
O formulrio de matrcula processado por um analisador de matrcula
FormularioMatricula

-processado-por
0..*

AnalisadorMatricula

O analisador de matrcula gerencia a disciplina


FormularioMatricula

-processado-por
0..*

AnalisadorMatricula
1

0..*

Disciplina
4/7/14

@KleinnerFarias

61

Exemplo Prtico
FormularioMatricula
1

-processado-por
0..*

AnalisadorMatricula
1
gerencia
0..*

-preenchido-por

Disciplina
1

aluno

4/7/14

1..*

Coordenador

1..*

Estudante

-definida-por

est-matriculado-em
3..10

Turma

@KleinnerFarias

-ministrada-por
0..3

Professor

62

Exemplo Prtico
Identificando os atributos:
Examine as descries dos casos de uso e entenda bem
os conceitos do domnio do problema
Cada turma oferecida possui:
Turma

um cdigo
uma sala
um horrio

4/7/14

cdigo
sala
horrio

@KleinnerFarias

63

Exemplo Prtico
-processado-por

FormularioMatricula

0..*

AnalisadorMatricula

1
gerencia
0..*

Disciplina
-preenchido-por

nome
numCrditos

-definida-por
1..*

Coordenador

1
1..*
aluno

Estudante
nome
matricula

4/7/14

Turma
est-matriculado-em
3..10

cdigo
sala
horrio

@KleinnerFarias

-ministrada-por
0..3

Professor
nome
titulao

64

Exemplo Prtico
Identificando os mtodos
Dica: criar os diagramas de sequncia

: SIM

: AnalisadorMatricula

AnalisadorMatricula
adicionar(aluno, disciplina)

1: submeterFormulario(f)

2: adicionar(a,d )

SIM
submeterFormulario(formulario)

4/7/14

@KleinnerFarias

65

Exemplo Prtico
E a navegabilidade?
Estudante

est-matriculado-em
3..10

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!


4/7/14

@KleinnerFarias

66

Exemplo Prtico
Acrescentando generalizaes:
Atributos, operaes e/ou relacionamentos
comuns podem ser movidos para uma classe
mais geral.
Us uario
nome : Texto
definirNome(nome)
obterNome()

Estudante

4/7/14

Professor

matricula : Inteiro

titulacao : Texto

definirMatricula(matricula)
obterMatricula()

definirTitulacao(titul acao)
obterTitulacao()

@KleinnerFarias

67

Exemplo Prtico
FormularioMatricula

-processado-por

obterEstudante() : Estudante
obterNomeDIsciplina(i : Inteiro) : Texto

0.. *

AnalisadorMatricula
1

-preenchido-por
-aluno

adicion ar(alun o, di scipli na) 1

SIM

usa

gerencia

1
0..*

Estudante

Disciplina

matricula : Inteiro
definirMatricula(matricula)
obterMatricula()

nome : Texto
numCreditos : Inteiro
3.. 10

estaCompleta()
adicionar(aluno : Estudante)
1

est-matriculado-em

Usuario
nome : Texto
definirNome(nome)
obterNome()

1..*

Turma

Professor

responsvel-por

titulacao : Texto
definirTitulacao(titulacao)
obterTitulacao()

4/7/14

0..3

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

@KleinnerFarias

estaCompleta() : Booleano

68

Prxima Aula
Estimativa de esforo (use case ponits)
Processo de desenvolvimento de software

4/7/14

@KleinnerFarias

69

References
[Rumbaugh99] J. Rumbaugh, I. Jacobson, G. Booch, The
Unified Modeling Language Reference Manual, AddisonWesley, 2a edition, 1999.

[LES.14] Material das Apresentaes LES/PUC-Rio,


http://www.les.inf.puc-rio.br/wiki/index.php/PSS
[Larman07] Larman, C.: Utilizando UML e Padres: uma
Introduo Anlise e ao Projeto Orientados a Objetos.
Porto Alegre: Bookamn, 2007. 492p.

4/7/14

@KleinnerFarias

70

Você também pode gostar