InterfaceUm abstração
Descreve:
Propriedades (atributos)
Comportamento (operações)
Relacionamentos
Semântica
Nome da classe
Atributos
Operações
Professor
name
ProfessorId : UniqueId
create()
save()
delete()
change()
UML
Representação de Classe
Boundary
Entity
Control
<<boundary>>
<<control>>
<<entity>>
=
=
=
Revisão
Uso do Diagrama de Classe
Modelar uma visão estática do sistema, pode
ser obtido com técnicas de analise com base
no:
Entidades do sistema.
Arquitetura desejada.
Modelo da base de dados.
Estudante
+ get tuition()
+ add schedule()
+ get schedule()
+ delete schedule()
+ has pre-requisites()
Professor
- name
- employeeID : UniqueId
- hireDate
- status
- discipline
- maxLoad
+ submitFinalGrade()
+ acceptCourseOffering()
+ setMaxLoad()
+ takeSabbatical()
Mecanismo de organização para
agrupamento de outros elementos.
Pacote
Camada de
Negócio
Relacionamento fraco entre dois elementos
Usado quando não existe uma relação de
associação permanente entre os dois
elementos.
Em termos técnicos se trata tipicamente
passagem de parâmetros ou variáveis locais
de métodos.
Aluno NotaParc
Dependências
Associações
Relacionamentos estruturais permanentes
Dependência
Relacionamento ‘fraco’ temporário.
Ambas são identificadas pelo diagrama de seqüência
gerado na atividade de análise.
Association
Estudante
NotaFinal
NotaParcial
Dependency
Dependências vs. Associações
Processo de Análise
Identificar
Associação vs Dependência
Refinamento de Associação
Composição
Agregação
Atributo Primitivo x Associação
Navegabilidade
Multiplicidade
Agregação
Tempo de vida da classe ‘parte’ independente do tempo da
classe ‘todo’
Composição
Tempo de vida restrito.
Todo Parte1..*0..*
Multiplicidade > 1
Multiplicidade = 1
1Todo Parte0..*
Composição
Associação:
Agregação vs Composição
Atributo Primitivo vs
Associação
Associação quando:
Elemento não restrito a um tipo primitivo
Tipicamente um atributo correlacionado a outros
da mesma classe.
Alem da propriedade o elemento possuir um
comportamento.
Ex Cliente vs Endereço.
Navegabilidade
Indica o sentido da navegação
Para cada destino de navegação é preciso um
atributo na classe de origem
Nome do atributo determina pelo nome da
extremidade destino da associação
Estudante
Curso
curso
Associação nomeada:
‘Role’ (papel)
Multiplicidade
2..4
0..1
1..*
0..*
1
*
Não especificado
Apenas 1
Zero ou mais
Um ou mais
Zero ou um
‘Range’ específico
Vários ‘Range’
2, 4..6
Multiplicidade = 1, ou Multiplicidade = 0..1
Atributo simples
Multiplicidade > 1
É preciso utilizar alguma estrutura de dados
Implementação da
Multiplicidade
0..*0..1
instructor
MateriaProfessor
0..*0..1
instructor
Needs a
container
Professor Materia
Estrutura de Dados
Explícito
Por nota
instructorProfessor Materia
0..*0..1
Materia
<<entity>>
Professor
<<entity>>
CadastroaMaterias
+ new()
+ add()
1
0..*
0..10..1
+instructor
Materia
0..*0..1
instructor
ListaLigada
Professor
Item
ListClasse
Parametrizada
Tipo
Classe Parametrizada (Template)
Generics
Classe que necessita de um tipo adicional
para sua instanciação
Tipicamente Coleções
ex Lista, Dicionário, Fila e Pilha
Generalização (Herança)
Define
Relacionamento de ‘é-um’
Herança de atributos e métodos
Conta
balance
name
number
Withdraw()
CreateStatement()
CCorrente Poupança
GetInterest()
Superclass
Subclasses
Relacionamento
Generalização
Leao
talk ()
Tigre
talk ()
Animal
{abstract}
talk () {abstract}
Classes Concretas e Abstratas
Abstrata
Basta um método sem comportamento, abstrato
Não pode ser instanciado
Concreto
Caso precise redefinir o método,
indicar como ‘virtual’ (C#)
Pode ser instanciado
Window
WindowWithScrollbar
Scrollbar
Esta correto?
Generalização vs Agregação
Generalização = relação ‘é-um’
Agregação = relação ‘tem-um’
1: cadastrarCliente()
Objeto Cliente Objeto Fornecedor
Mensagem
:Boundary :Control
Escopo de atividade
Chamada local
Linha de vida
1.1:
validarCredito()
Numeração de
seqüência de
mensagens
UML: Diagrama de Seqüência