Professor: Leandro Chernicharo
 Arquitetura
dividida em três níveis:
Nível externo
Nível interno
Nível conceitual
 Nível
externo  o mais próximo do usuário
 Nível
interno  trata de como os dados serão
final: aplicações, resultado de consultas, etc.;
efetivamente armazenados: tipos, algoritmos,
discos, etc.;
 Nível
conceitual  é o modelo que reflete o
banco de dados, abstraindo sua implementação,
preocupando-se apenas com a informação em
si.
É
uma das etapas do Projeto de Banco de
Dados;
 Representa
a visão dos dados a serem
armazenadas abstraindo sua implementação
física;
 Apresenta
 Pode
uma visão estática do sistema;
ser baseado em entidades (MER) ou
em objetos (Diagrama de Classes)
 Etapas
do Projeto de BD:
Modelagem Conceitual
Projeto Lógico de Dados
Projeto Físico de Dados
BD
BD
BD
Conjunto de
Requisitos
“Um modelo de classes de domínio é uma
representação das classes conceituais do
mundo real, não dos componentes do
software. Ele não é um conjunto de
diagramas descrevendo as classes do
software ou objetos do software e suas
responsabilidades”
[LARMAN, Craig, Utilizando UML e Padrões, 2a ed.]
 Modelagem
conceitual de dados é o
processo de criação de um modelo
conceitual de dados a partir dos requisitos
extraídos para um determinado artefato
de software.
“Quem”
Um hospital possui um número de alas,
nas quais os pacientes são admitidos, suas
doenças tratadas, e das quais são
liberados após o tratamento. Cada ala
atende a uma especialidade e admite
pacientes do sexo feminino ou masculino
(não há alas mistas). “O que”
[…]
“como”
“Quem”
0..*
Ala
nome
sexo
0..*
Tratamento
Data_inicio
Data_fim
nome
1..*
Doenca
nome
1
realiza
1
Especialidade
engloba
Paciente
sexo
atende
1..*
1
1..*
0..*
“O que”
1..*
Pertence a
trata
“como”
 Resumindo:
• As informações para construção do modelo
podem vir do minimundo ou das descrições de
caso de uso (mais comum);
• O modelo conceitual abstrai completamente
qualquer tipo de implementação, concentrandose apenas na representação lógica do negócio;
• Serve como estrutura fundamental para todo o
desenvolvimento do sistema.
 Ferramenta: Diagrama
de Classes da UML
 Existe em três níveis de abstração
• Análise
A
• Projeto
• Implementação
 Estrutural
 Representa as classes e suas
relações
 Estático  Não apresenta informações de
interações entre os objetos
 No
nível de análise, representamos
apenas as classes que tenham relação
com o domínio de problema, abstraindo
recursos e decisões de projeto ou
implementação;
 Por
esse motivo, também é conhecido
como diagrama de classes de domínio
 São
representados
classes de análise:
no
diagrama
• Classes;
 Atributos (sem os respectivos tipos de dado);
• Associações;
 Simples / agregações / composições
 Multiplicidades
 Adornos
• Generalizações/especializações
de
 Classes
• São abstrações que representam objetos com as
mesmas características e papéis dentro do SW;
• Pode possuir atributos e operações:
 Atributos  são as características do objeto, as
informações que conhecemos a seu respeito
 Operações  São os comportamentos que o objeto é
capaz de executar
 Classes

– Notação
Representada por um retângulo com um a três
compartimentos:
• Nome da classe
• Atributos
• Operações

Os nomes de classe devem ser sempre iniciados
com letras maiúsculas e devem estar no singular.
Exemplos:
• Livro
• Pedido
• ItemPedido
Classes
– Notação
 Os
atributos e operações devem iniciar
com letras minúsculas e, para cada nova
palavra no nome, a letra maiúscula deve
ser usada. Exemplos:
• numero
• dataRealizacao
• obterValorTotal()
Classes
– Notação
 As
operações sempre devem terminar
com parênteses, mesmo que nao haja
parâmetros. Exemplos:
• calcularValor()
• somar(a : int, b : int) : int
• adicionarFuncionario(func : Funcionario)
Classes
Nome da Classe
– Notação (exemplos)
Nome da Classe
Lista de atributos
Nome da Classe
Lista de operações
Nome da Classe
Lista de atributos
Lista de operações
Pedido
Pedido
numero
dataRealizacao
Pedido
obterValorTotal()
Pedido
numero
dataRealizacao
obterValorTotal()
 Associações
 Representam
a relação entre objetos de duas
ou mais classes;
 Essa
ligação só se concretizará (ou não)
durante a execução do sistema;
 Representada
no diagrama de classes por
uma linha ligando os elementos envolvidos.
 Associações
 Uma
Classe pode se associar com ela
própria. A esse fato damos o nome de
associação reflexiva;
 As
associações possuem atributos que
podemos utilizar para lhes dar maior
significado, legibilidade e clareza;
 Esses
atributos são colocados sobre ou sob a
linha que representa a associação
Associações
 São
atributos possíveis de uma
associação:
• Nome
• Direção de leitura
• Papel
• Multiplicidades
 Associações
 Nome
 dá legibilidade e significado à
associação;
 Direção
de leitura  indica para que lado se
lê o significado dado pelo nome da
associação;
 Papel
 indica o papel que determinado
objeto executa naquela associação. Pode ser
usado em substituição do nome.
Associações
 Multiplicidades
 representam as
quantidades mínima e máxima de objetos
com os quais o outro pode estar ligado.
Nome
Simbologia
Apenas um
1..1 ou 1
Zero ou muitos
0..* ou *
Um ou muitos
1..*
Zero ou um
0..1
Valores definidos
2..4 | 1..6
Associações
A
partir das multiplicidades extraímos dois
novos conceitos: conectividade e participação.
 Conectividade
 define a maneira como se dá a
associação entre as classes.
• Descoberta a partir do limite superior de cada um dos pares de
multiplicidade de uma determinada associação
Conectividade
Limites superiores da associação
Um para Um
1e1
Um para Muitos
1 e * (ou um número superior a 1)
Muitos para Muitos
* e * (ou dois números superiores a 1)
 Associações
 Participação
 indica a obrigatoriedade ou
não da existência da ligação entre os objetos
durante a execução do sistema.
• Descoberta a partir do limite inferior de cada um dos
pares de multiplicidade de uma determinada associação
A
participação de uma classe em uma
associação é descoberta no extremo oposto a
onde ela está
Associações
– Notação (exemplos)
nome da associção
Departamento
1
direção de leitura
aloca
0..*
Funcionario
multiplicidades
associação
Conectividade: um para muitos
Participação de Departamento: opcional
Participação de Funcionario: mandatória
Associações
Organização
– Notação (exemplos)
1..*
contrata
1..*
Indivíduo
É o mesmo que
Organização
- contratante
1..*
Indivíduo
- contratado
1..*
Conectividade: muitos para muitos
Participação de Organizacao: mandatória
Participação de Individuo: mandatória
papel
Associações
Corrida
1.. *
– Notação (exercício)
participa de
Conectividade? muitos para muitos
Participação de Corrida? opcional
Participação de Corredor? mandatória
0 .. *
Corredor
Associações
 Além
da associação simples (que vimos
até agora), existem dois tipos especiais de
associação:
• Agregação;
• Composição
Associações
 Agregação
e composição:
• São usadas para indicar uma semântica de todo-parte na
relação entre duas classes;
• Podem, em qualquer caso, ser substituídas por uma
associação simples;
• Seu uso é indicado quando for necessário enfatizar a
semântica da associação;
• Todos os adornos de uma associação simples podem ser
aplicados a elas.
Associações
 Agregação
x Composição:
• Agregação
 Neste tipo de associação, as partes podem ser criadas sem que
haja o todo;
 Uma mesma parte pode fazer parte de diversos todos;
 A destruição de um não implica na destruição do outro.
 Ex.: Um clube esportivo e seus sócios
Associações
 Agregação
x Composição:
• Composição
 Neste tipo de associação, há uma dependência entre as classes, de
tal forma que a parte não existe sem o todo;
 Os objetos parte são pertencentes a um único todo;
 Os objetos parte são criados e destruídos pelo objeto todo.
 Ex.: Uma venda e seus itens
Associações
 Agregação
x Composição:
• Notação
 Agregação e composição são representados no diagrama de
classes por um losango na extremidade todo;
 Na agregação o losango é aberto;
 Na composição o losango é fechado;
Associações
 Agregação
x Composição:
• Exemplo
Clube
0..*
Venda
Agregação
1..* - sócio proprietário
Socio
1
Composição
1..*
ItemVenda
Sempre é 1, por isso alguns autores omitem esta multiplicidade
Associações
 Agregação
x Composição:
• IMPORTANTE
 Pode-se construir hierarquias de associações desse tipo,
formando hierarquias todo-parte;
 Esse tipo de associação é transitivo.
Capitulo
1..*
Secao
1..*
Paragrafo

Associações n-árias

São associações que envolvem mais de duas classes
simultaneamente (n > 2);

O tipo mais comum – ou menos incomum – desse
tipo de associação é a associação ternária (n = 3);


São representadas por um losango que conecta as
linhas de associação de todas as classes que dela
participam;
Para determinar as multiplicidades de cada uma
das classes, devemos analisá-la no contexto da
associação com as demais classes participantes,
simultaneamente.

Associações n-árias
 Exemplo:
Profissional
1..*
*
Projeto
1..*
Empresa
Uma empresa contrata um profissional para trabalhar em um projeto específico.
• Se não houver projeto, não há a contratação;
• Se não houver profissionais disponíveis, não é possível realizar o projeto;
• Os profissionais só podem trabalhar no projeto se forem contratados por uma empresa.
 Classe

de Associação
Usada para armazenarmos características e
operações referentes a uma associação entre duas
classes;
• Ou seja, a informação não pertence a uma ou a outra classe da
associação, mas sim à união de ambas, ao par.
Também conhecida como classe associativa;
 Pode ser usada em associações com qualquer
conectividade;
 Pode ser usada em uma associação ternária.

Classe
de Associação
 Representada
no diagrama de classes por uma
linha tracejada ligando a classe à associação à
qual ela se refere;
Só fazem sentido se houver o
par, se houver a realização
da associação
Emprego
dtContratacao
salario
Pessoa
nome
telefone
Empresa
*
- empregado
* razaoSocial
- empregador CNPJ
Generalização/Especialização
 Relacionamento
entre classes do domínio que
representa generalidade ou especificidade
entre os envolvidos;
 Pode-se
dizer que uma classe é uma
especialização de outra quando ela adiciona
atributos, associações ou comportamentos a
esta;
 Diz-se
mais comumente que a classe específica
é uma extensão da classe mais genérica.
 Generalização/Especialização

Em suma, diz-se que A estende B quando A pode
ser visto como um subtipo de B e lhe adiciona novas
características (atributos, associações e/ou
operações);
• ContaPoupanca e ContaCorrente são subtipos de ContaBancaria


O nome mais comum que se dá a essa relação entre
classes é herança;
Na herança, atributos e operações que não sejam
privados na classe mais genérica são
automaticamente herdados nas classes mais
específicas.
Generalização/Especialização
 Benefício
do uso de herança  Reuso;
 Malefício
do uso de herança  Acoplamento;
É
necessário discernimento e bom senso no uso
de herança no processo de modelagem;
 Excesso
leva a acoplamentos exagerados.
 Generalização/Especialização
Representamos no diagrama de classes com uma
seta fechada e vazada que vai do mais específico
para o mais genérico;
 Não há limites para o número de classes envolvidas
em um relacionamento de herança;
 Pode-se criar hierarquias de classes em níveis, a
priori, infinitos;
 O relacionamento de herança é:

• Transitivo  As mais específicas herdam as características de
todos os seus ascendentes diretos na hierarquia;
• Assimétrico  Se A herda de B, B não pode herdar de A.
Generalização/Especialização
 Notação:
Superclasse
Superclasse
Subclasse1
Subclasse2
...
SubclasseN
Subclasse1
Subclasse2
...
SubclasseN
Generalização/Especialização
 Exemplo:
Generalização/Especialização
 Termos
comuns:
Genérico
Específico
Superclasse
Subclasse
Supertipo
Subtipo
Classe base
Classe herdeira
Ancestral
Descendente
Classe pai
Classe filha
Classe de generalização
Classe de especialização
Generalização/Especialização
É
possível adicionar restrições aos diversos
relacionamentos de herança:
• Sobreposta / Disjunta
• Completa / Incompleta
Generalização/Especialização
 Exemplo das restrições:
As subclasses
Há ainda
outras
subclasses
Não há mais
outras
subclasses
são mutuamente
exclusivas
Um nadador
pode ser
também um
corredor
Generalização/Especialização
É
importante não confundir papel de uma
classe em uma associação com herança!!;
Papel executado
pela classe...
ERRADO!!
CORRETO!!
Generalização/Especialização
 Uma
classe pode ter mais de um ancestral direto
ao mesmo tempo;
A
este fato damos o nome de herança múltipla;
A
maioria das linguagens OO não dão suporte à
herança múltipla;
 Deve-se
evitar seu uso, pois é um conceito
complicado de entender e implementar.
Generalização/Especialização
 Herança
múltipla (Exemplo):
VeiculoAereo
VeiculoAquatico
VeiculoAeroAquatico
Implementa comportamentos e guarda
características de ambos os tipos de veículo
Hidroavião é um exemplo disso
 Classes




Abstratas
São classes que aparecem no modelo apenas para
definir uma interface comum a uma determinada
hierarquia de classes;
Não podem ser instanciadas!!
Classes abstratas podem herdar de outras classe
abstrata, mas a hierarquia deve terminar em uma
classe concreta;
Classes concretas são aquelas que, ao contrário das
abstratas, são instanciáveis;
• Todas as que vimos até agora
Classes
Abstratas
 Usamos
classes abstratas para organizar uma
hierarquia de classes, concentrando nela os
atributos e comportamentos comuns às demais;
 Em
alguns casos as classes são qualificadas
como abstratas simplesmente por não fazer
sentido criar uma instância sua diretamente;
• Polígono, por exemplo
Classes
Abstratas (Exemplo)
Classe abstrata
(Representada com
o nome em itálico)
Pagamento
Dinheiro
Cartao
Classes concretas
Cheque
Download

Associações - Leandro Chernicharo