6NA-ModelagemClasseAnalise
121 pág.

6NA-ModelagemClasseAnalise


DisciplinaAnálise e Projeto de Sistemas376 materiais6.538 seguidores
Pré-visualização6 páginas
classe. A diferença é que esta classe é ligada a 
uma associação
Marcos Antonio de Oliveira (MAS - 2012.1) 29
nome
telefone
endereço
Pessoa
razãoSocial
endereço
Empresa
salário
dataContratação
Emprego
*
empregado
*
empregador
Associações N-árias
\u2022 São utilizadas para representar a associação 
existente entre objetos de n classes
\u2022 Uma associação ternária é o caso mais comum \u2022 Uma associação ternária é o caso mais comum 
(menos raro) de associação n-ária (n = 3) 
\u2022 Na notação da UML, as linhas de associação se 
interceptam em um losango
Marcos Antonio de Oliveira (MAS - 2012.1) 30
Exemplo (Associação Ternária)
Marcos Antonio de Oliveira (MAS - 2012.1) 31
Associações Reflexivas
\u2022 Associa objetos da mesma classe
\u2022 Cada objeto tem um papel distinto na associação
\u2022 A utilização de papéis é bastante importante para 
evitar ambigüidades na leitura da associação
\u2022 A utilização de papéis é bastante importante para 
evitar ambigüidades na leitura da associação
\u2022 Uma associação reflexiva não indica que um 
objeto se associa com ele próprio
\u2013 Ao contrário, indica que objetos de uma mesma classe 
se associam
Marcos Antonio de Oliveira (MAS - 2012.1) 32
Exemplo (Associação Reflexiva)
Supervisão
Marcos Antonio de Oliveira (MAS - 2012.1) 33
Empregado
supervisor 1
supervisionado
*
Agregações e Composições
\u2022 É um caso especial da associação...
...conseqüentemente, multiplicidades, 
participações, papéis, etc. podem ser usados 
igualmenteigualmente
\u2022 Utilizada para representar conexões que 
guardam uma relação todo-parte entre si
Marcos Antonio de Oliveira (MAS - 2012.1) 34
Onde se puder utilizar uma agregação, uma associação
também poderá ser utilizada!
Agregações e Composições
\u2022 Características particulares das 
agregações/composições
\u2013 São assimétricas: se um objeto A é parte de um 
objeto B, B não pode ser parte de Aobjeto B, B não pode ser parte de A
\u2013 Propagam comportamento: um comportamento 
que se aplica a um todo automaticamente se 
aplica as suas partes
\u2013 As partes são normalmente criadas e destruídas a 
pelo todo
Marcos Antonio de Oliveira (MAS - 2012.1) 35
Agregações e Composições
\u2022 Sejam duas classes associadas, X e Y. Se uma 
das perguntas a seguir for respondida com um 
sim, provavelmente há uma agregação onde X 
é todo e Y é parteé todo e Y é parte
\u2013 X tem um ou mais Y?
\u2013 Y é parte de X?
Marcos Antonio de Oliveira (MAS - 2012.1) 36
Notação para Agregação
\u2022 Uma agregação é representada como uma 
linha que conecta as classes relacionadas, com 
um diamante (losango) branco perto da classe 
que representa o todoque representa o todo
Marcos Antonio de Oliveira (MAS - 2012.1) 37
Notação para Composição
\u2022 Uma composição é representada como uma 
linha que conecta as classes relacionadas, com 
um diamante (losango) negro perto da classe 
que representa o todoque representa o todo
Marcos Antonio de Oliveira (MAS - 2012.1) 38
Agregações vs Composições
\u2022 As diferenças entre agregações e composições 
não são bem claras, mas essas são as mais 
visíveis
\u2013 Na agregação, a destruição de um objeto todo não \u2013 Na agregação, a destruição de um objeto todo não 
implica necessariamente a destruição do objeto 
parte
\u2013 Na composição, os objetos parte pertencem a 
único objeto todo, por isso quando um objeto 
todo é destruído os objetos parte também são
Marcos Antonio de Oliveira (MAS - 2012.1) 39
Generalizações e Especializações
\u2022 O modelador também pode representar 
relacionamentos entre classes
\u2013 Esses denotam relações de generalidade ou 
especificidade entre as classes envolvidas
\u2013 Exemplo\u2013 Exemplo
\u2022 O conceito mamífero é mais genérico que o conceito ser 
humano
\u2022 O conceito carro é mais específico que o conceito veículo
\u2022 Esse é o chamado relacionamento de herança
\u2013 Relacionamento de generalização/especialização
\u2013 Relacionamento de gen/espec
Marcos Antonio de Oliveira (MAS - 2012.1) 40
Generalizações e Especializações
\u2022 Sejam A e B classes que se relacionam através 
da herança
\u2013 Se A é uma generalização de B, então, B é uma 
especialização de Aespecialização de A
\u2022 Os termos subclasse e superclasse são 
utilizados para denotar relações de herança
\u2013 Subclasse é a classe que herda
\u2013 Superclasse é a classe herdada
Marcos Antonio de Oliveira (MAS - 2012.1) 41
Generalizações e Especializações
\u2022 No diagrama de classes, a herança é 
representada na UML por uma flecha partindo 
da subclasse em direção a superclasse
Marcos Antonio de Oliveira (MAS - 2012.1) 42
Herança vs Associação
\u2022 A diferença semântica entre a herança e a 
associação
\u2013 A primeira trata de um relacionamento entre classes, 
enquanto que a segunda representa relacionamentos 
entre instâncias de classes (objetos)entre instâncias de classes (objetos)
\u2013 Na associação, objetos específicos de uma classe se 
associam entre si ou com objetos específicos de 
outras classes
\u2013 Exemplo
\u2022 Herança: "Gerentes são tipos especiais de funcionários"
\u2022 Associação: "Gerentes chefiam departamentos"
Marcos Antonio de Oliveira (MAS - 2012.1) 43
Exemplo (Herança)
Marcos Antonio de Oliveira (MAS - 2012.1) 44
IMPORTANTE: Além das propriedades e operações, as 
subclasses herdam os relacionamentos!
Herança
\u2022 As principais propriedades do relacionamento 
de herança são
\u2013 Transitividade
\u2022 Uma classe herda tanto os atributos, operações e \u2022 Uma classe herda tanto os atributos, operações e 
relacionamentos da super classe imediata quanto das 
superclasses não imediatas
\u2013 Assimetria
\u2022 Dadas duas classes A e B, se B é subclasse de A, então A 
não pode ser subclasse de B
Marcos Antonio de Oliveira (MAS - 2012.1) 45
Exemplo (Herança)
Marcos Antonio de Oliveira (MAS - 2012.1) 46
Classes Abstratas
\u2022 Usualmente, a existência de uma classe se 
justifica pelo fato de haver a possibilidade de 
gerar instâncias da mesma
\u2013 Essas são as classes concretas\u2013 Essas são as classes concretas
\u2022 No entanto, podem existir classes que não 
geram instâncias diretas
\u2013 Essas são as classes abstratas
Marcos Antonio de Oliveira (MAS - 2012.1) 47
Classes Abstratas
\u2022 Classes abstratas são utilizadas para organizar 
e simplificar uma hierarquia de generalização
\u2013 Propriedades comuns a diversas classes podem 
ser organizadas e definidas em uma classe ser organizadas e definidas em uma classe 
abstrata a partir da qual as primeiras herdam
\u2022 Subclasses de uma classe abstrata também 
podem ser abstratas, mas a hierarquia deve 
terminar em uma ou mais classes concretas
Marcos Antonio de Oliveira (MAS - 2012.1) 48
Notação para Classe Abstrata
\u2022 Na UML, uma classe abstrata é representada 
com o seu nome em itálico
Marcos Antonio de Oliveira (MAS - 2012.1) 49
DIAGRAMA DE OBJETOS
Marcos Antonio de Oliveira (MAS - 2012.1) 50
Diagrama de Objetos
\u2022 Além do diagrama de classes, a UML define um 
segundo tipo de diagrama estrutural, o diagrama 
de objetos
\u2013 Pode ser visto com uma instância de diagramas de 
classesclasses
\u2013 Representa uma "fotografia" do sistema em um certo 
momento
\u2022 Exibe as ligações formadas entre objetos 
conforme estes interagem e os valores dos seus 
atributos
Marcos Antonio de Oliveira (MAS - 2012.1) 51
Diagrama de Objetos
Formato Exemplo
nomeClasse Pedido
Marcos Antonio de Oliveira (MAS - 2012.1) 52
nomeClasse Pedido
nomeObjeto: NomeClasse umPedido: Pedido
Exemplo (Diagrama de Objetos)
Marcos Antonio de Oliveira (MAS - 2012.1) 53
Exemplo (Diagrama de Objetos)
Marcos Antonio de Oliveira (MAS - 2012.1) 54
TÉCNICAS PARA IDENTIFICAÇÃO DE 
CLASSES
Marcos Antonio de Oliveira (MAS - 2012.1) 55
Identificando Classes
Apesar de todas as vantagens que a OO pode
trazer ao desenvolvimento de software, um
problema fundamental ainda persiste:
Marcos Antonio de Oliveira (MAS - 2012.1) 56
problema fundamental ainda persiste:
identificar corretamente e completamente
objetos (classes), atributos e operações.
Identificando Classes
\u2022 Um sistema de software orientado a objetos é 
composto de objetos em colaboração para 
realizar as tarefas