aula 06 - diagrama de classes
DESCRIPTION
Diagrama de classesTRANSCRIPT
![Page 1: Aula 06 - Diagrama de Classes](https://reader033.vdocuments.site/reader033/viewer/2022051215/55cf8ffb550346703ba1f5c0/html5/thumbnails/1.jpg)
Diagrama de Classes Aula 06
Prof. Kleinner Farias Programa Interdisciplinar de Pós-Graduação
em Computação Aplicada – PIPCA Universidade do Vale do Rio dos Sinos
6
![Page 2: Aula 06 - Diagrama de Classes](https://reader033.vdocuments.site/reader033/viewer/2022051215/55cf8ffb550346703ba1f5c0/html5/thumbnails/2.jpg)
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 situações
cotidianas
2 4/7/14 @KleinnerFarias
![Page 3: Aula 06 - Diagrama de Classes](https://reader033.vdocuments.site/reader033/viewer/2022051215/55cf8ffb550346703ba1f5c0/html5/thumbnails/3.jpg)
Agenda • Introdução • Motivação • Elementos do Diagrama de Classes • Exemplo Prático • Referências
3 4/7/14 @KleinnerFarias
![Page 4: Aula 06 - Diagrama de Classes](https://reader033.vdocuments.site/reader033/viewer/2022051215/55cf8ffb550346703ba1f5c0/html5/thumbnails/4.jpg)
Introdução • Representa uma visão estática (ou estrutural)
do projeto de um software • Diagrama mais utilizado da UML • Modela os conceitos de – domínio da aplicação
• descrevendo o próprio domínio do problema
– projeto da aplicação • descrevendo como a implementação deve ser feita
4 4/7/14 @KleinnerFarias
![Page 5: Aula 06 - Diagrama de Classes](https://reader033.vdocuments.site/reader033/viewer/2022051215/55cf8ffb550346703ba1f5c0/html5/thumbnails/5.jpg)
Motivação
5 4/7/14 @KleinnerFarias
![Page 6: Aula 06 - Diagrama de Classes](https://reader033.vdocuments.site/reader033/viewer/2022051215/55cf8ffb550346703ba1f5c0/html5/thumbnails/6.jpg)
Motivação
6 4/7/14 @KleinnerFarias
![Page 7: Aula 06 - Diagrama de Classes](https://reader033.vdocuments.site/reader033/viewer/2022051215/55cf8ffb550346703ba1f5c0/html5/thumbnails/7.jpg)
Motivação
7 4/7/14 @KleinnerFarias
![Page 8: Aula 06 - Diagrama de Classes](https://reader033.vdocuments.site/reader033/viewer/2022051215/55cf8ffb550346703ba1f5c0/html5/thumbnails/8.jpg)
Metamodelo
4/7/14 @KleinnerFarias 8
![Page 9: Aula 06 - Diagrama de Classes](https://reader033.vdocuments.site/reader033/viewer/2022051215/55cf8ffb550346703ba1f5c0/html5/thumbnails/9.jpg)
Elementos do Diagrama de Classes • Classe – Atributos – Operações
• Interface • Relacionamento – Associação
• Agregação • Composição
– Dependência – Generalização – Realização
9 4/7/14 @KleinnerFarias
![Page 10: Aula 06 - Diagrama de Classes](https://reader033.vdocuments.site/reader033/viewer/2022051215/55cf8ffb550346703ba1f5c0/html5/thumbnails/10.jpg)
Elementos do Diagrama de Classes • Classe – representa um conceito de OO utilizado para representar as
entidades do domínio do problema e do domínio da solução
– possui três compartimentos: nome, atributos e operações
– Exemplo:
10 4/7/14 @KleinnerFarias
nome
atributos
operações
![Page 11: Aula 06 - Diagrama de Classes](https://reader033.vdocuments.site/reader033/viewer/2022051215/55cf8ffb550346703ba1f5c0/html5/thumbnails/11.jpg)
• Classe – Atributos: representam as características dos
objetos daquela classe – Visibilidade:
+ público: visível em qualquer classe de qualquer pacote # protegido: visível para classes do mesmo pacote - privado: visível somente para classe
– Exemplo: + nome: String
11 4/7/14 @KleinnerFarias
Elementos do Diagrama de Classes
![Page 12: Aula 06 - Diagrama de Classes](https://reader033.vdocuments.site/reader033/viewer/2022051215/55cf8ffb550346703ba1f5c0/html5/thumbnails/12.jpg)
Elementos do Diagrama de Classes • Classe – Operações: representam os comportamentos que
os objetos de uma classe podem desempenhar – Visibilidade:
+ público: visível em qualquer classe de qualquer pacote # protegido: visível para classes do mesmo pacote - privado: visível somente para classe
– Exemplo: + getNome(): String
12 4/7/14 @KleinnerFarias
![Page 13: Aula 06 - Diagrama de Classes](https://reader033.vdocuments.site/reader033/viewer/2022051215/55cf8ffb550346703ba1f5c0/html5/thumbnails/13.jpg)
4/7/14 @KleinnerFarias 13
Aluno
nome: Texto matrícula: Inteiro
definirNome(nome) obterNome() definirMatricula(matricula) obterMatricula
Turma
código: Texto sala: Texto horario: Horario
estaAberta() definirProfessor(professor) incluirAluno(aluno)
está-matriculado-em
Professor
nome: Texto titulação: Texto
definirNome(nome) obterNome() definirTitulacao(titulo) obterTitulacao
é-ministrada-por
Elementos do Diagrama de Classes • Exemplo de um diagrama
![Page 14: Aula 06 - Diagrama de Classes](https://reader033.vdocuments.site/reader033/viewer/2022051215/55cf8ffb550346703ba1f5c0/html5/thumbnails/14.jpg)
Elementos do Diagrama de Classes • Classe – Atributos – Operações
• Interface • Relacionamento – Associação
• Agregação • Composição
– Dependência – Generalização – Realização
14 4/7/14 @KleinnerFarias
![Page 15: Aula 06 - Diagrama de Classes](https://reader033.vdocuments.site/reader033/viewer/2022051215/55cf8ffb550346703ba1f5c0/html5/thumbnails/15.jpg)
Elementos do Diagrama de Classes • Interface – Elemento que especifica as comportamentos ou
serviços que serão oferecidos por classes ou componentes
15 4/7/14 @KleinnerFarias
![Page 16: Aula 06 - Diagrama de Classes](https://reader033.vdocuments.site/reader033/viewer/2022051215/55cf8ffb550346703ba1f5c0/html5/thumbnails/16.jpg)
Elementos do Diagrama de Classes • Classe – Atributos – Operações
• Interface • Relacionamento – Associação
• Agregação • Composição
– Dependência – Generalização – Realização
16 4/7/14 @KleinnerFarias
![Page 17: Aula 06 - Diagrama de Classes](https://reader033.vdocuments.site/reader033/viewer/2022051215/55cf8ffb550346703ba1f5c0/html5/thumbnails/17.jpg)
Elementos do Diagrama de Classes • Relacionamento – representa uma conexão semântica entre elementos
do diagrama de classes
• Tipos de relacionamento: – Associação
• Agregação • Composição
– Dependência – Generalização – Realização
17 4/7/14 @KleinnerFarias
![Page 18: Aula 06 - Diagrama de Classes](https://reader033.vdocuments.site/reader033/viewer/2022051215/55cf8ffb550346703ba1f5c0/html5/thumbnails/18.jpg)
Elementos do Diagrama de Classes • Classe – Atributos – Operações
• Interface • Relacionamento – Associação
• Agregação • Composição
– Dependência – Generalização – Realização
18 4/7/14 @KleinnerFarias
![Page 19: Aula 06 - Diagrama de Classes](https://reader033.vdocuments.site/reader033/viewer/2022051215/55cf8ffb550346703ba1f5c0/html5/thumbnails/19.jpg)
Elementos do Diagrama de Classes • Relacionamento: Associação – representa uma conexão semântica entre classes – representa conexões entre objetos de classes
relacionadas semanticamente – representa um relacionamento estrutural entre
classes – relaciona não só os classificadores, mas também
suas instâncias
19 4/7/14 @KleinnerFarias
![Page 20: Aula 06 - Diagrama de Classes](https://reader033.vdocuments.site/reader033/viewer/2022051215/55cf8ffb550346703ba1f5c0/html5/thumbnails/20.jpg)
Elementos do Diagrama de Classes • Relacionamento: Associação – uma instância de uma associação é um link – um link é uma tupla (uma lista ordenada) de
objetos – um link binário representa o relacionamento entre
dois objetos – produz informação sobre quais objetos se
relacionam – quando o sistema estiver em execução, links entre
os objetos serão estabelecidos e destruídos
20 4/7/14 @KleinnerFarias
![Page 21: Aula 06 - Diagrama de Classes](https://reader033.vdocuments.site/reader033/viewer/2022051215/55cf8ffb550346703ba1f5c0/html5/thumbnails/21.jpg)
Elementos do Diagrama de Classes • Relacionamento: Associação
Associations are the “glue” that ties a system together. Without associations, there are nothing
but isolated classes that don’t work together. [Rumbaugh99]
21 4/7/14 @KleinnerFarias
![Page 22: Aula 06 - Diagrama de Classes](https://reader033.vdocuments.site/reader033/viewer/2022051215/55cf8ffb550346703ba1f5c0/html5/thumbnails/22.jpg)
Elementos do Diagrama de Classes • Relacionamento: Associação – Notação:
• representada por uma linha só lida conectando duas classes
22 4/7/14 @KleinnerFarias
![Page 23: Aula 06 - Diagrama de Classes](https://reader033.vdocuments.site/reader033/viewer/2022051215/55cf8ffb550346703ba1f5c0/html5/thumbnails/23.jpg)
Elementos do Diagrama de Classes • Relacionamento: Associação – Qualified Association
• Se um atributo (ou mais) assume um valor único em uma associação (relacionamento entre objetos), então ele é um qualificador (qualifier)
23 4/7/14 @KleinnerFarias
![Page 24: Aula 06 - Diagrama de Classes](https://reader033.vdocuments.site/reader033/viewer/2022051215/55cf8ffb550346703ba1f5c0/html5/thumbnails/24.jpg)
Elementos do Diagrama de Classes • Relacionamento: Associação – Association Class
• uma associação pode ter atributos próprio
24 4/7/14 @KleinnerFarias
![Page 25: Aula 06 - Diagrama de Classes](https://reader033.vdocuments.site/reader033/viewer/2022051215/55cf8ffb550346703ba1f5c0/html5/thumbnails/25.jpg)
Elementos do Diagrama de Classes • Relacionamento: Associação – Association Class
25 4/7/14 @KleinnerFarias
![Page 26: Aula 06 - Diagrama de Classes](https://reader033.vdocuments.site/reader033/viewer/2022051215/55cf8ffb550346703ba1f5c0/html5/thumbnails/26.jpg)
Elementos do Diagrama de Classes • Relacionamento: Associação – mostra uma associação representando emprego – o relacionamento entre Company e Person é do tipo
many-to-many – um pessoa (Person) pode ter mais que um emprego,
porém um emprego (Job) por Empresa (Company) – salário não é um atributo nem da empresa nem da
pessoa (mas do relacionamento) porque a associação é do tipo many-to-many
– salário surge a partir do ou com o relacionamento
26 4/7/14 @KleinnerFarias
![Page 27: Aula 06 - Diagrama de Classes](https://reader033.vdocuments.site/reader033/viewer/2022051215/55cf8ffb550346703ba1f5c0/html5/thumbnails/27.jpg)
Elementos do Diagrama de Classes • Relacionamento: Associação – o relacionamento boss-worker não é 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
27 4/7/14 @KleinnerFarias
![Page 28: Aula 06 - Diagrama de Classes](https://reader033.vdocuments.site/reader033/viewer/2022051215/55cf8ffb550346703ba1f5c0/html5/thumbnails/28.jpg)
Elementos do Diagrama de Classes • Relacionamento: Associação
28 4/7/14 @KleinnerFarias
Association Class vs Reified Association
![Page 29: Aula 06 - Diagrama de Classes](https://reader033.vdocuments.site/reader033/viewer/2022051215/55cf8ffb550346703ba1f5c0/html5/thumbnails/29.jpg)
Elementos do Diagrama de Classes • Relacionamento: Associação – 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
29 4/7/14 @KleinnerFarias
![Page 30: Aula 06 - Diagrama de Classes](https://reader033.vdocuments.site/reader033/viewer/2022051215/55cf8ffb550346703ba1f5c0/html5/thumbnails/30.jpg)
Elementos do Diagrama de Classes • Relacionamento: Associação – Por que foi utilizado uma reified association?
• Pode existir múltiplas compras com um mesma Pessoa-Empresa. • Cada compra distinta, sendo caracterizada pela sua data
e custo • Purchase tem seus próprios identificadores
30 4/7/14 @KleinnerFarias
![Page 31: Aula 06 - Diagrama de Classes](https://reader033.vdocuments.site/reader033/viewer/2022051215/55cf8ffb550346703ba1f5c0/html5/thumbnails/31.jpg)
• Os relacionamentos possuem: – Nome: descrição 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: associação, agregação, composição, generalização e
dependência – Papéis: desempenhados por classes em um relacionamento
31 4/7/14 @KleinnerFarias
Elementos do Diagrama de Classes
![Page 32: Aula 06 - Diagrama de Classes](https://reader033.vdocuments.site/reader033/viewer/2022051215/55cf8ffb550346703ba1f5c0/html5/thumbnails/32.jpg)
Elementos do Diagrama de Classes • Relacionamento: Associação
32 4/7/14 @KleinnerFarias
Pessoa Empresa 1..*
Tipo: associação
multiplicidade
* trabalha para
empregado
papéis
empregador
sentido de leitura
E a navegabilidade?
nome
![Page 33: Aula 06 - Diagrama de Classes](https://reader033.vdocuments.site/reader033/viewer/2022051215/55cf8ffb550346703ba1f5c0/html5/thumbnails/33.jpg)
Elementos do Diagrama de Classes • Relacionamento: Associação – Navegabilidade:
• uma associação navegável representa informação de estado disponível para uma classe • pode se implementada de diferentes formas
33 4/7/14 @KleinnerFarias
Endereço Cliente reside
1 *
navegabilidade
![Page 34: Aula 06 - Diagrama de Classes](https://reader033.vdocuments.site/reader033/viewer/2022051215/55cf8ffb550346703ba1f5c0/html5/thumbnails/34.jpg)
Elementos do Diagrama de Classes • Relacionamento: Associação – Navegabilidade:
• uma associação navegável representa informação de estado disponível para uma classe
34 4/7/14 @KleinnerFarias
![Page 35: Aula 06 - Diagrama de Classes](https://reader033.vdocuments.site/reader033/viewer/2022051215/55cf8ffb550346703ba1f5c0/html5/thumbnails/35.jpg)
Elementos do Diagrama de Classes • Relacionamento: Associação • 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)
35 4/7/14 @KleinnerFarias
Pessoa Empresa 1..*
associação
multiplicidade
* trabalha para
![Page 36: Aula 06 - Diagrama de Classes](https://reader033.vdocuments.site/reader033/viewer/2022051215/55cf8ffb550346703ba1f5c0/html5/thumbnails/36.jpg)
Elementos do Diagrama de Classes • Relacionamento: Associação
• Exemplo: – Um Estudante pode ser
um aluno de uma Disciplina e um jogador da Equipe de Futebol
– Cada Disciplina deve ser cursada por no mínimo 1 aluno
– Um aluno pode cursar de 0 até 8 disciplinas
36 4/7/14 @KleinnerFarias
![Page 37: Aula 06 - Diagrama de Classes](https://reader033.vdocuments.site/reader033/viewer/2022051215/55cf8ffb550346703ba1f5c0/html5/thumbnails/37.jpg)
Elementos do Diagrama de Classes • Classe – Atributos – Operações
• Interface • Relacionamento – Associação
• Agregação • Composição
– Dependência – Generalização – Realização
37 4/7/14 @KleinnerFarias
![Page 38: Aula 06 - Diagrama de Classes](https://reader033.vdocuments.site/reader033/viewer/2022051215/55cf8ffb550346703ba1f5c0/html5/thumbnails/38.jpg)
Elementos do Diagrama de Classes • Relacionamento: Agregação
– É um tipo especial de associação – Utilizada para indicar um relacionamento do tipo “parte-todo”,
porém não tem a responsabilidade de gerenciar as suas partes • Pedido não é responsável por gerenciar Item
38 4/7/14 @KleinnerFarias
Item Pedido 1 1..*
agregação
todo parte
![Page 39: Aula 06 - Diagrama de Classes](https://reader033.vdocuments.site/reader033/viewer/2022051215/55cf8ffb550346703ba1f5c0/html5/thumbnails/39.jpg)
Elementos do Diagrama de Classes • Classe – Atributos – Operações
• Interface • Relacionamento – Associação
• Agregação • Composição
– Dependência – Generalização – Realização
39 4/7/14 @KleinnerFarias
![Page 40: Aula 06 - Diagrama de Classes](https://reader033.vdocuments.site/reader033/viewer/2022051215/55cf8ffb550346703ba1f5c0/html5/thumbnails/40.jpg)
Elementos do Diagrama de Classes • Relacionamento: Composição
– É uma variante semanticamente mais “forte” da agregação – Representa um relacionamento do tipo parte-todo – O todo é responsável por gerenciar as suas partes – Os objetos "parte” só podem pertencer a um único objeto “todo”
e têm o seu tempo de vida coincidente com o dele – Quando o “todo” morre todas as suas “partes” também morrem
40 4/7/14 @KleinnerFarias
Teclado Notebook
Frame Window
1 1
1 0..*
1..* 0..* errado
![Page 41: Aula 06 - Diagrama de Classes](https://reader033.vdocuments.site/reader033/viewer/2022051215/55cf8ffb550346703ba1f5c0/html5/thumbnails/41.jpg)
Elementos do Diagrama de Classes • Relacionamento: Composição
– Exemplo: • Quando o “todo” morre todas as suas “partes” também morrem
41 4/7/14 @KleinnerFarias
Janela
Scroll Título Corpo
1
0..1 2 1
Empresa
Departamento Escritório
1 1..* 1..*
0..1
*
![Page 42: Aula 06 - Diagrama de Classes](https://reader033.vdocuments.site/reader033/viewer/2022051215/55cf8ffb550346703ba1f5c0/html5/thumbnails/42.jpg)
Elementos do Diagrama de Classes • Relacionamento: Agregação e Composição
– Exemplo:
42 4/7/14 @KleinnerFarias
![Page 43: Aula 06 - Diagrama de Classes](https://reader033.vdocuments.site/reader033/viewer/2022051215/55cf8ffb550346703ba1f5c0/html5/thumbnails/43.jpg)
Elementos do Diagrama de Classes • Relacionamento: Composição vs Agregação
43 4/7/14 @KleinnerFarias
Andar Edifício1..n
MesaSala
1..n11
1..n
1..n
![Page 44: Aula 06 - Diagrama de Classes](https://reader033.vdocuments.site/reader033/viewer/2022051215/55cf8ffb550346703ba1f5c0/html5/thumbnails/44.jpg)
Elementos do Diagrama de Classes • Classe – Atributos – Operações
• Interface • Relacionamento – Associação
• Agregação • Composição
– Dependência – Generalização – Realização
44 4/7/14 @KleinnerFarias
![Page 45: Aula 06 - Diagrama de Classes](https://reader033.vdocuments.site/reader033/viewer/2022051215/55cf8ffb550346703ba1f5c0/html5/thumbnails/45.jpg)
Elementos do Diagrama de Classes • Relacionamento: Dependência – representa que a alteração de um objeto (o objeto
independente) pode afetar outro objeto (o objeto dependente)
– relacionamento semanticamente mais fraco – Exemplo:
• A classe cliente depende de algum serviço da classe fornecedor • A mudança de estado do fornecedor afeta o objeto cliente • A classe cliente não declara nos seus atributos um objeto do tipo
fornecedor • Fornecedor é recebido por parâmetro de método
45 4/7/14 @KleinnerFarias
cliente fornecedor
![Page 46: Aula 06 - Diagrama de Classes](https://reader033.vdocuments.site/reader033/viewer/2022051215/55cf8ffb550346703ba1f5c0/html5/thumbnails/46.jpg)
Elementos do Diagrama de Classes • Classe – Atributos – Operações
• Interface • Relacionamento – Associação
• Agregação • Composição
– Dependência – Generalização – Realização
46 4/7/14 @KleinnerFarias
![Page 47: Aula 06 - Diagrama de Classes](https://reader033.vdocuments.site/reader033/viewer/2022051215/55cf8ffb550346703ba1f5c0/html5/thumbnails/47.jpg)
Elementos do Diagrama de Classes • Relacionamento: Generalização
– É um relacionamento entre elementos mais genéricos/estáveis (superclasses) e itens mais específicos/concretos (subclasses)
47 4/7/14 @KleinnerFarias
“é um” “é um tipo de”
superclasse
subclasse
Veículo
Terrestre Aéreo
![Page 48: Aula 06 - Diagrama de Classes](https://reader033.vdocuments.site/reader033/viewer/2022051215/55cf8ffb550346703ba1f5c0/html5/thumbnails/48.jpg)
Elementos do Diagrama de Classes • Relacionamento: Generalização
– É um relacionamento entre elementos mais genéricos/estáveis (superclasses) e itens mais específicos/concretos (subclasses)
48 4/7/14 @KleinnerFarias
![Page 49: Aula 06 - Diagrama de Classes](https://reader033.vdocuments.site/reader033/viewer/2022051215/55cf8ffb550346703ba1f5c0/html5/thumbnails/49.jpg)
Elementos do Diagrama de Classes • Classe – Atributos – Operações
• Interface • Relacionamento – Associação
• Agregação • Composição
– Dependência – Generalização – Realização
49 4/7/14 @KleinnerFarias
![Page 50: Aula 06 - Diagrama de Classes](https://reader033.vdocuments.site/reader033/viewer/2022051215/55cf8ffb550346703ba1f5c0/html5/thumbnails/50.jpg)
Elementos do Diagrama de Classes • Relacionamento: Realização – conecta uma classe a um interface – um interface especifica quais comportamentos um
classe deve ter/implementar – nenhum comportamento ou estrutura é oferecido
50 4/7/14 @KleinnerFarias
![Page 51: Aula 06 - Diagrama de Classes](https://reader033.vdocuments.site/reader033/viewer/2022051215/55cf8ffb550346703ba1f5c0/html5/thumbnails/51.jpg)
Elementos do Diagrama de Classes • Relacionamento: Realização – Exemplo:
51 4/7/14 @KleinnerFarias
![Page 52: Aula 06 - Diagrama de Classes](https://reader033.vdocuments.site/reader033/viewer/2022051215/55cf8ffb550346703ba1f5c0/html5/thumbnails/52.jpg)
Elementos do Diagrama de Classes • Relacionamento: Generalização e Realização – generalização e realização relacionam algo mais
genérico com algo mais específico – generalização relaciona dois elementos em um
mesmo nível semântico • Exemplo: mesmo nível de abstração
– generalização relaciona elementos que são usualmente mantidos em um mesmo modelo/módulo
52 4/7/14 @KleinnerFarias
![Page 53: Aula 06 - Diagrama de Classes](https://reader033.vdocuments.site/reader033/viewer/2022051215/55cf8ffb550346703ba1f5c0/html5/thumbnails/53.jpg)
Elementos do Diagrama de Classes • Relacionamento: Generalização e Realização – Realização relaciona elementos em diferentes níveis
semânticos, • um classe de análise e uma classe de projeto • Exemplo: uma interface e uma classe que a implementa
53 4/7/14 @KleinnerFarias
![Page 54: Aula 06 - Diagrama de Classes](https://reader033.vdocuments.site/reader033/viewer/2022051215/55cf8ffb550346703ba1f5c0/html5/thumbnails/54.jpg)
Elementos do Diagrama de Classes
54
Relacionamento Breve descrição Notação
associação Uma conexão entre instâncias de classes
agregação Relacionamento do tipo parte-todo
composição Relacionamento do tipo parte-todo mais forte a agregação
dependência Depencência entre dois elementos do modelo
generaliação
Relacionamento de herança de OO Relacionamento entre algo mais genérico (estável) e algo mais específico (menos estável)
realização
Relacionamento entre uma especificação e sua implementação. Ex.: entre uma interface e uma classe que a implementa
![Page 55: Aula 06 - Diagrama de Classes](https://reader033.vdocuments.site/reader033/viewer/2022051215/55cf8ffb550346703ba1f5c0/html5/thumbnails/55.jpg)
Exemplo de Diagrama
55 4/7/14
![Page 56: Aula 06 - Diagrama de Classes](https://reader033.vdocuments.site/reader033/viewer/2022051215/55cf8ffb550346703ba1f5c0/html5/thumbnails/56.jpg)
Exemplo Prático A Universidade XYZ deseja informatizar seu sistema de matrículas: • A universidade oferece vários cursos. • O Coordenador de um curso define as disciplinas que serão oferecidas
pelo seu curso num dado semestre. • Várias disciplinas são oferecidas em um curso.
• Várias turmas podem ser abertas para uma mesma disciplina, porém o número 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 Acadêmico (SRA) é notificado.
• Após a matrícula, 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 usuários do sistema devem ser validados.
4/7/14 @KleinnerFarias 56
![Page 57: Aula 06 - Diagrama de Classes](https://reader033.vdocuments.site/reader033/viewer/2022051215/55cf8ffb550346703ba1f5c0/html5/thumbnails/57.jpg)
Exemplo Prático Descrição do Caso de Uso
4/7/14 @KleinnerFarias 57
![Page 58: Aula 06 - Diagrama de Classes](https://reader033.vdocuments.site/reader033/viewer/2022051215/55cf8ffb550346703ba1f5c0/html5/thumbnails/58.jpg)
Exemplo Prático Descrição do Caso de Uso “Matricular em Disciplina”
• Esse caso de uso se inicia quando o Estudante de Curso inicia uma sessão no sistema e apresenta suas credenciais.
• O sistema verifica se a credencial é válida.
• O sistema solicita que o estudante realize sua matrícula, selecionando 4 disciplinas.
• O estudante preenche um formulário eletrônico de matrícula e o submete para uma análise de consistência.
• O sistema analisa as informações contidas no formulário.
– Se as informações são consistentes, o estudante é incluído em turmas abertas de 4 disciplinas, iniciando pelas preferenciais.
– Se as informações não são consistentes, o sistema informa o motivo da inconsistência e solicita que o formulário seja alterado.
4/7/14 @KleinnerFarias 58
![Page 59: Aula 06 - Diagrama de Classes](https://reader033.vdocuments.site/reader033/viewer/2022051215/55cf8ffb550346703ba1f5c0/html5/thumbnails/59.jpg)
Exemplo Prático • Exemplos de candidatos a relacionamentos:
– A é parte física ou lógica de B. – A está contido fisicamente ou logicamente em B. – A é uma descrição 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 transação B. – A é possuído por B. – A é um tipo de B.
4/7/14 @KleinnerFarias 59
![Page 60: Aula 06 - Diagrama de Classes](https://reader033.vdocuments.site/reader033/viewer/2022051215/55cf8ffb550346703ba1f5c0/html5/thumbnails/60.jpg)
Exemplo Prático • Identificando as classes
4/7/14 @KleinnerFarias 60
Professor Coordenador Estudante
Turma Universidade Disciplina
FormularioMatricula
Curso
AnalisadorMatricula
SistemaRegistroAcademico ListaAlunos
![Page 61: Aula 06 - Diagrama de Classes](https://reader033.vdocuments.site/reader033/viewer/2022051215/55cf8ffb550346703ba1f5c0/html5/thumbnails/61.jpg)
Exemplo Prático
4/7/14 @KleinnerFarias 61
O formulário de matrícula é processado por um analisador de matrícula
O analisador de matrícula gerencia a disciplina
FormularioMatricula AnalisadorMatricula é-processado-por
1 0..*
Disciplina
FormularioMatricula AnalisadorMatricula é-processado-por
1 0..* 1
0..*
• Identificando os relacionamentos
![Page 62: Aula 06 - Diagrama de Classes](https://reader033.vdocuments.site/reader033/viewer/2022051215/55cf8ffb550346703ba1f5c0/html5/thumbnails/62.jpg)
Exemplo Prático
4/7/14 @KleinnerFarias 62
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
![Page 63: Aula 06 - Diagrama de Classes](https://reader033.vdocuments.site/reader033/viewer/2022051215/55cf8ffb550346703ba1f5c0/html5/thumbnails/63.jpg)
Exemplo Prático • Identificando os atributos: – Examine as descrições dos casos de uso e entenda bem
os conceitos do domínio do problema – Cada turma oferecida possui:
• um código • uma sala • um horário
4/7/14 @KleinnerFarias 63
Turma
código sala horário
![Page 64: Aula 06 - Diagrama de Classes](https://reader033.vdocuments.site/reader033/viewer/2022051215/55cf8ffb550346703ba1f5c0/html5/thumbnails/64.jpg)
Exemplo Prático
4/7/14 @KleinnerFarias 64
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
código sala horário
Professor
nome titulação
Estudante
nome matricula
Disciplina
nome numCréditos
![Page 65: Aula 06 - Diagrama de Classes](https://reader033.vdocuments.site/reader033/viewer/2022051215/55cf8ffb550346703ba1f5c0/html5/thumbnails/65.jpg)
Exemplo Prático • Identificando os métodos – Dica: criar os diagramas de sequência
4/7/14 @KleinnerFarias 65
SIM
submeterFormulario(formulario)
AnalisadorMatricula
adicionar(aluno, disciplina)
: SIM : AnalisadorMatricula
2: adicionar(a,d )
1: submeterFormulario(f)
![Page 66: Aula 06 - Diagrama de Classes](https://reader033.vdocuments.site/reader033/viewer/2022051215/55cf8ffb550346703ba1f5c0/html5/thumbnails/66.jpg)
Exemplo Prático
4/7/14 @KleinnerFarias 66
• E a navegabilidade?
public class Turma {
private String codigo; private String sala; private Estudante alunos[]; ...
}
public class Estudante {
private String nome; private String matricula;
... }
OBS: Turma não aparece como atributo de Estudante!
Turma Estudante 3..10
está-‐matriculado-‐em
3..10 4
![Page 67: Aula 06 - Diagrama de Classes](https://reader033.vdocuments.site/reader033/viewer/2022051215/55cf8ffb550346703ba1f5c0/html5/thumbnails/67.jpg)
Exemplo Prático • Acrescentando generalizações: – Atributos, operações e/ou relacionamentos
comuns podem ser movidos para uma classe mais geral.
4/7/14 @KleinnerFarias 67
Estudantematricula : Inteiro
definirMatricula(matricula)obterMatricula()
Usuarionome : Texto
definirNome(nome)obterNome()
Professortitulacao : Texto
definirTitulacao(titulacao)obterTitulacao()
![Page 68: Aula 06 - Diagrama de Classes](https://reader033.vdocuments.site/reader033/viewer/2022051215/55cf8ffb550346703ba1f5c0/html5/thumbnails/68.jpg)
Exemplo Prático
4/7/14 @KleinnerFarias 68
SIM
Usuarionome : Texto
definirNome(nome)obterNome()
FormularioMatricula
obterEstudante() : EstudanteobterNomeDIsciplina(i : Inteiro) : Texto
Estudantematricula : Inteiro
definirMatricula(matricula)obterMatricula()
1
1
é-preenchido-por
1
1-aluno
Professortitulacao : Texto
definirTitulacao(titulacao)obterTitulacao()
AnalisadorMatricula
adicionar(aluno, disciplina) 1 11 1
usa
10.. * 10.. *
é-processado-por
Disciplinanome : TextonumCreditos : Inteiro
estaCompleta()adicionar(aluno : Estudante)
0..*
1
0..*
1
gerencia
Turmacodigo : Textosala : Textohorario : HorarionumAlunos : Inteirocompleta : Booleano
estaCompleta() : Booleano
3..10
4
3..10
4
está-matriculado-em
0..3 10..3 1
responsável-por
1..*
11
1..*
![Page 69: Aula 06 - Diagrama de Classes](https://reader033.vdocuments.site/reader033/viewer/2022051215/55cf8ffb550346703ba1f5c0/html5/thumbnails/69.jpg)
Próxima Aula • Estimativa de esforço (use case ponits) • Processo de desenvolvimento de software
69 4/7/14 @KleinnerFarias
![Page 70: Aula 06 - Diagrama de Classes](https://reader033.vdocuments.site/reader033/viewer/2022051215/55cf8ffb550346703ba1f5c0/html5/thumbnails/70.jpg)
References [Rumbaugh99] J. Rumbaugh, I. Jacobson, G. Booch, The Unified Modeling Language Reference Manual, Addison-Wesley, 2a edition, 1999.
[LES.14] Material das Apresentações LES/PUC-Rio, http://www.les.inf.puc-rio.br/wiki/index.php/PSS [Larman07] Larman, C.: Utilizando UML e Padrões: uma Introdução à Análise e ao Projeto Orientados a Objetos. Porto Alegre: Bookamn, 2007. 492p.
70 4/7/14 @KleinnerFarias