Diagrama de Classe

83
Ementário O Modelo de Objetos Histórico da evolução das linguagens de programação, PE versus POO, fundamentos do modelo de objetos, a importância da modelagem, métodos OO Tecnologias para apoio a orientação a objetos UML- Unified Modeling Language A Linguagem Java introdução, a sintaxe e estruturas de controle Vocabulário da Orientação a Objetos (Abordagem com Java)

description

- PowerPoint PPT Presentation

Transcript of Diagrama de Classe

Page 1: Diagrama de Classe

Ementário

• O Modelo de Objetos– Histórico da evolução das linguagens de programação,

PE versus POO, fundamentos do modelo de objetos, a importância da modelagem, métodos OO

• Tecnologias para apoio a orientação a objetos• UML- Unified Modeling Language • A Linguagem Java

– introdução, a sintaxe e estruturas de controle

• Vocabulário da Orientação a Objetos (Abordagem com Java)

Page 2: Diagrama de Classe

Diagrama de Classe

• é a essência da UML (OMT e Booch)

• coleção de elementos declarativos de modelo, como classes, tipos e seus respectivos conteúdos e relações

• estruturar atributos e operações em classes é fundamental para o trabalho de modelagem através do enfoque da orientação a objetos

Page 3: Diagrama de Classe

Chocolate

Produto

Pedido, item

quantidade

incluirItemPedido()calcularTotalPedido()

Pedido

incluirPedido()atenderPedido()

1

*

1

*

Indivíduo

Organização

Cliente

códigoDoClientelimiteDeCredito

{ disjunção, incompleto }

{ ou }

Organização cliente

Leite Biscoito

-----------------------------------------------

Agregação

Multiplicidade

Subclasses

Superclasse

Restrição

Classe associativa

Associação

Operações

Classe

Atributos

Generalização (herança)

Visibilidade

Page 4: Diagrama de Classe

Relacionamentos (1/4)

• ligam as classes/objetos entre si criando relações lógicas entre estas entidades

• tipos de relacionamentos:– generalização/ especificação (herança)– associação– agregação– dependência

Page 5: Diagrama de Classe

Relacionamentos (2/4)

• Generalização/ especificação– indica relacionamento entre um elemento mais

geral e um elemento mais específico (respectivamente, superclasse e subclasse)

– também conhecido como herança ou classificação (por exemplo, um enfermeira “é um tipo de” pessoa)

Page 6: Diagrama de Classe

Relacionamentos (3/4)

• Agregação– usada para denotar relacionamentos todo/parte – por exemplo, um Item de compra é parte de um Pedido

• Associação– é um relacionamento que descreve um conjunto de

vínculos, onde cada vínculo é definido como uma conexão semântica entre tuplas de objetos

– por exemplo, um Cliente possui Conta Corrente

Page 7: Diagrama de Classe

Relacionamentos (4/4)

• Dependência– é um relacionamento entre elementos, um

independente e outro dependente– uma modificação no elemento independente

afetará diretamente os elementos dependentes do anterior

– é um relacionamento de utilização

Page 8: Diagrama de Classe

Elementos Chaves

1. Objeto

2. Classe

3. Atributo

4. Operação

5. Associação

6. Restrição

7. Classe de associação

8. Dependência

9. Interface

10. Normalização do modelo de classes

Page 9: Diagrama de Classe

1. Objeto

• é uma unidade real ou abstrata, individualizada e identificável

• características básicas:– estado: características herdadas ou distintas– identidade (id.): propriedade que o distingue de

todos os demais– comportamento: modo como age e reage a

estímulos externos (passagem de mensagens)

Page 10: Diagrama de Classe

2. Classe

• “um conjunto de objetos que compartilham estrutura e comportamento comuns” (Booch)

• se a classe possuir como instâncias classes em vez de objetos, ela será denominada de metaclasse

• abstração = seleção de alguns aspectos de domínio do problema para modelagem

Page 11: Diagrama de Classe

Ao definir classes, é importante:

• Buscar equilíbrio entre funcionalidade e reutilização, resistindo-se ao desejo de criar classes grandes que abrangem tudo:– Classes grandes são mais difíceis de entender e

reutilizar, assim a criação de classes de objetos que possuam propósitos bem definidos contribui significativamente na reutilização por outras aplicações.

– Classes menos complicadas são mais fáceis de entender e manter, e se uma classe não puder ser explicada de forma simples ela é forte candidata a subdivisão em classes menores.

Page 12: Diagrama de Classe

As classes são os blocos de construção mais importantes de qualquer sistema orientado a objetos.

Page 13: Diagrama de Classe

Notação gráfica para declarar e usar Classes

Nome da Classeatributo

atributo: tipo do dado

atributo: tipo do dado = valor inicial

...

operação ()

operação (lista de parâmetros)

operação (lista de parâmetros): tipo de resultado

...

Page 14: Diagrama de Classe

Classes

Nome da Classeatributos da classe

(opcional)

operações da classe

(opcional)

Indivíduo

Indivíduo

Indivíduo

+incluirIndivíduo(códigoDoIndivíduo)

+destruirIndivíduo(códigoDoIndivíduo)

Indivíduo+códigoDoIndivíduo:long

+sexo: M ou F

+dataDoNascimento: data

+incluirIndivíduo(códigoDoIndivíduo)

+destruirIndivíduo(códigoDoIndivíduo)

+códigoDoIndivíduo:long

+sexo: M ou F

+dataDoNascimento: data

1)

2)

3)

4)Variações

Page 15: Diagrama de Classe

Nome da Classe (1/2)

• cada classe deve ter um nome que a diferencie de outras classes

• o nome é uma seqüência de caracteres• o nome de uma classe deve ser único no pacote

que a contém• somente o nome da classe é conhecido como nome

simples• nome de caminho é o nome da classe, tendo como

prefixo o nome do pacote a que essa classe pertence

Page 16: Diagrama de Classe

Nome da Classe (2/2)

Nomes Simples Nomes de caminho

HelloWorld

Cliente

TButton

Regras de Negócio::ValidaPedido

Tabelas::Cliente

Quick Report::TQuickRep

Page 17: Diagrama de Classe

3. Atributo

• menor unidade que em si possui significância própria e interrelacionada com o conceito lógico da classe à qual pertence (equivale aos campos de um registro)

• uma propriedade nomeada de um tipo• em síntese, armazena valores em células

sintaxe padrão:

Visibilidade nomeDoAtributo: TipoDeExpressão = ValorInicial {Propriedade}

Page 18: Diagrama de Classe

Sintaxe padrão p/ atributos (1/2)

• nomeDoAtributo– é uma seqüência de caracteres de identificação

começando tipicamente com letra minúscula– primeira letra de cada palavra em maiúscula– ex: nomeDoIndivíduo, limiteDeCréditoDoCliente

• TipoDeExpressão– depende da linguagem de programação e do tipo

de implementação de um atributo

Page 19: Diagrama de Classe

Sintaxe padrão p/ atributos (1/2)

• ValorInicial– é uma expressão que também depende da

linguagem de programação

• Propriedade– descrição do atributo– tipo de dado– tipo de atributo– domínios de valores (valores mínimo e máximo)

Page 20: Diagrama de Classe

+ visibilidade pública (valor default)todos têm acesso

# visibilidade protegidaé acessível dentro da mesma classe e por classes aolongo do pacote no qual a classe é definida

- visibilidade privadaé acessível apenas por operações declaradas dentro damesma classe

Visibilidade de atributo (1/2)

Page 21: Diagrama de Classe

Visibilidade de atributo (2/2)

Cliente+códigoDoCliente

#situação

-limiteDeCrédito

Nome do atributo

Nome da classe

Visibilidade pública

Visibilidade protegida

Visibilidade privada

Page 22: Diagrama de Classe

4. Operação

• um serviço que é requisitado a um objeto como parte de seu comportamento em resposta a estímulos (procedimento algorítmico)– operação é algo invocado por um objeto (procedimento

de chamada)

– método é um corpo de procedimento

sintaxe padrão:

Visibilidade nomeDaOperação(Parâmetro): ExpressãoDeTipoDeRetorno {Propriedade}

Page 23: Diagrama de Classe

Sintaxe padrão p/ operações (1/3)

• nomeDaOperação– é uma seqüência de caracteres de identificação

começando tipicamente com letra minúscula– primeira letra de cada palavra em maiúscula– exemplos:

• obterNomeDoIndivíduo

• obterLimiteDeCréditoDoCliente

Page 24: Diagrama de Classe

Sintaxe padrão p/ operações (2/3)

• Parâmetro– é uma lista de valores separados por vírgula– nome tipo: tipo-expressão = valor-padrão

• nome é o nome de um parâmetro formal

• tipo é in, out, ou inout, com padrão in

• tipo-expressão é a especificação de um tipo de implementação dependente da linguagem

• valor-padrão é uma expressão de valor opcional para o parâmetro

Page 25: Diagrama de Classe

Sintaxe padrão p/ operações (3/3)

• ExpressãoDeTipoDeRetorno– é uma especificação dependente de linguagem de

programação sobre o tipo de implementação do valor retornado pela operação

• Propriedade– indica valores de propriedade que se aplicam ao

elemento• classificação, pré-condição, pós-condição, tipo de

execução, concorrência, transformação e estereótipo

Page 26: Diagrama de Classe

Visibilidade para operações (1/2)

• definida da mesma forma que se define para os atributos.

+ visibilidade pública (valor default)

# visibilidade protegida

- visibilidade privada

Page 27: Diagrama de Classe

Visibilidade de operação (2/2)

Cliente

+obterLimiteDeCrédito

#bloquearCliente

-cancelarCliente

Nome da operação

Nome da classe

Visibilidade pública

Visibilidade protegida

Visibilidade privada

Page 28: Diagrama de Classe

Organização de atributos e operações (1/2)

• Ao representar uma classe, não é preciso exibir todos os atributos e operações ao mesmo tempo. Na verdade, na maioria dos casos, isso não é possível (haverá um número muito grande de itens) nem é adequado (somente um subconjunto desses atributos e operações será relevante para uma determinada visão).

• Um compartimento vazio não significará necessariamente que não existam atributos ou operações, mas apenas foi decidido não mostrá-los.

Page 29: Diagrama de Classe

• Para especificar explicitamente a existência de mais atributos ou métodos do que os apresentados, terminar cada lista com reticências (...).

• Para melhor organização de listas extensas de atributos e operações cada grupo pode receber um prefixo com uma categoria descritiva, utilizando-se estereótipos. Por exemplo, organizando métodos construtores:<<constructor>>

Create()

Create(y, m, d: word)

Organização de atributos e operações (2/2)

Page 30: Diagrama de Classe

5. Associação

• é uma relação que descreve um conjunto de vínculos entre elementos de modelo

• uma associação representa que duas classes possuem uma ligação (link) entre elas:– conhecem uma a outra– estão conectadas com– para cada X existe um Y

Page 31: Diagrama de Classe

Nomenclatura de associações

• quando duas classes, ou mesmo uma classe consigo própria, apresenta interdependência onde determinada instância de uma delas origina ou se associa a uma ou mais instâncias da outra

• a nomenclatura da associação depende do número de classes envolvidas:– unária (recursiva), binária (normal), n-ária

Page 32: Diagrama de Classe

Associação unária

• associação reflexiva ou recursiva

• quando há um relacionamento de uma classe consigo própria conectando-se ambos os fins da associação a ela mesma (mas os dois fins são distintos)

• semanticamente representa a conexão entre dois objetos da mesma classe

Marido

Esposa

é casado com

Pessoa

Page 33: Diagrama de Classe

Associação binária (normal)

• quando há duas classes envolvidas na associação de forma direta de uma para a outra

Cliente Pedido1 0..*

Page 34: Diagrama de Classe

Associação n-ária

• é uma associação entre três ou mais classes

Funcionário Quesito Projeto

Avaliação

* * *

Page 35: Diagrama de Classe

Semântica da associação

Classe A Classe Bnome da associação

papel-1 papel-2

onde:nome da associação: usado para definir, ou qualificar, a natureza da relação entre as classes associadas

papel-1, papel-2: mostram como uma classe é vista pela outra, ou, o papel desempenhado pela classe no relacionamento

Page 36: Diagrama de Classe

Papéis em associação (1/3)

• Multiplicidade• Ordenação• Qualificador• Agregação/

composição• Navegabilidade

• Especificador de interface

• Mutabilidade• Visibilidade• Generalização

Page 37: Diagrama de Classe

Papéis em associação (2/3)

Classe A Classe B

Classe C Classe D

Possui

1 0..*

{ordenado}

Generalização

NavegabilidadeComposição

Qualificador

Agregação

Nome do papel

Restrição ou propriedade

Multiplicidade

Page 38: Diagrama de Classe

Papéis em associação (3/3)

• Nome da associação– a associação possui um nome que a representa,

freqüentemente atribuído a um verbo

– podem existir dois nomes, um para cada direção do relacionamento

– “um cliente possui conta corrente”

Cliente Conta correntePossui

é Possuída por

Page 39: Diagrama de Classe

Multiplicidade, ou cardinalidade (1/2)

• especifica a quantidade de correspondência de um objeto na classe [A] em objetos equivalentes na classe [B]– 1 exatamente um

– * muitos (zero ou mais)

– 0..1 opcional (zero ou um)

– m..n seqüência especificada (5..11)

Page 40: Diagrama de Classe

Multiplicidade, ou cardinalidade (2/2)

Pessoas Empresafuncionário empregador1..* *

Multiplicidade

Uma “Pessoa” é funcionário de nenhuma ou mais (*) “Empresas”.

Cada “Empresa” possui um ou vários (1..*) “Funcionários”.

Page 41: Diagrama de Classe

Papéis em associação

• Ordenação {ordenado}– se a multiplicidade é maior que um, o conjunto

de elementos relacionados é ordenado ou não ordenado (padrão)

• Qualificador– é um atributo de associação ou uma estrutura de

atributos cujos valores particionam um conjunto de objetos relacionados a um objeto por uma associação (reduz a multiplicidade)

Page 42: Diagrama de Classe

Associação qualificada

PedidoPedido, item0..1

Produto

O qualificador ‘Produto’ diz que em conexão com um pedido pode haver um item de pedido para cada ocorrência de produto. Conceitualmente, esse exemplo indica que não é possível haver dois itens de pedido para um mesmo produto. Para acessar um item de pedido em particular, é necessário identificar o produto como argumento.

Page 43: Diagrama de Classe

AgregaçãoUma agregação é uma forma especial de associação utilizadapara mostrar que um tipo de objeto é composto, pelo menos em parte, de outro em uma relação de todo/ parte.

PedidoPedido, item

1..*1

Tem

Todo ParteAgregação regular, relacionamento por-referência

Page 44: Diagrama de Classe

Agregação de composição

Indivíduo,endereço

0..11

Tem

Todo Parte

Indivíduo,complemento de endereço

Agregação de composição, relacionamento por-valor

É uma forma de agregação com uma forte propriedade e vidacoincidente da parte com o todo. Na composição, ou relacionamentopor-valor, o objeto todo declara uma instância real do objetoparte dentro do seu próprio corpo tornando o objeto parte fisicamente nele contido.

Page 45: Diagrama de Classe

NavegabilidadeUma instância de uma classe pode navegar a instâncias deoutra classe e vice-versa.

Pedido1*

Cliente

{ordenado}

Fonte Alvo

sentido da navegação

Page 46: Diagrama de Classe

Navegabilidade na agregação

Todo

Parte 1 Parte 2

1 1

0..* 0..*

Navegabilidadeunidirecional em agregação regular

Navegabilidadebidirecional em agregação decomposição

Page 47: Diagrama de Classe

Papéis em associação (1/2)

• Especificador de Interface– define o comportamento exigido para habilitar a

associação– nome de um classificador com a sintaxe:

“:”nome-do-classificador

• Mutabilidade– se os vínculos são mutáveis podem ser somados,

apagados e movidos– outras propriedades: congelado, somarSomente

Page 48: Diagrama de Classe

Papéis em associação (2/2)

• Visibilidade– especificado por um indicador de visibilidade

– (“+”, “#”, “-” ou palavra-chave explícita tal como {público})

• Generalização– um relacionamento de taxinomia entre um elemento

mais geral e um elemento mais específico que é completamente consistente com o primeiro elemento somando-o informação adicional especializada

Page 49: Diagrama de Classe

Generalização

• Indica que uma classe mais geral, a superclasse, tem atributos, operações e associações comuns que são compartilhados por classes mais especializadas, as subclasses.

• Por sua vez, as subclasses herdam atributos, operações e associações da superclasse e agregam atributos e operações particulares ao elemento de especialização a que se referem.

Page 50: Diagrama de Classe

Restrições para generalização/ especificação

A

B C N...

{Restrição}

Generalização

{completo}: N é conhecido

{incompleto}: N não é conhecido

{disjunção}: B, C, ..., N sãomutuamente exclusivos

{sobreposição}: B, C, ... Npodem ocorrer simultaneamente

Subclasses (classes filha ou classes derivada)

Superclasse (classe pai ou classe base)

Page 51: Diagrama de Classe

Exemplo de generalização/ especificação com restrição

Animal

Mamífero Ave Peixe

{disjunção, incompleto}

Page 52: Diagrama de Classe

Herança

• É o mecanismo de reutilização de atributos e operações definidos em classes gerais por classes mais específicas.

• Permite organizar tipos similares de classes de objetos em categorias hierárquicas, onde é permitida à classe de menor nível, que é uma especialização ou extensão de outra classe, compartilhar atributos e operações de classes superiores na hierarquia.

Page 53: Diagrama de Classe

Redefinição de atributos e operações na herança

Veículo terrestre

partida()parada()

Automóvel

partida()parada()

Caminhão

partida()parada()

Operaçõesredefinidas pelasubclasse

Superclasse

Subclasses

{disjunção}

Page 54: Diagrama de Classe

Herança múltipla

Veículo

Veículoterrestre

Veículoaquático

Veículoanfíbio

{sobreposição, incompleto}

Page 55: Diagrama de Classe

Agregação versus Generalização

Pedido

Pedido, item

Agregação:Pedido, item é parte-de (ouatributo-de)Pedido

Árvore

Pinus

Generalização:Pinus é um tipo-de Árvore

Page 56: Diagrama de Classe

6. RestriçãoUma restrição é um relacionamento semântico entre elementosde modelo que especifica condições e proposições que devemser mantidas como verdadeiras, caso contrário o sistema descritopelo método é nulo.

Grupo de cidadãosidosos

Pessoa0..1 0..*

{pessoa.idade > 60}

Restrição

Page 57: Diagrama de Classe

Restrições predefinidas na UML

• Associação• Auto• Completo• Disjunção• Global• Implícito• Incompleto

• Local• Ou• Parâmetro• Radiodifusão• Sobreposição• Voto

Page 58: Diagrama de Classe

Restrição {Ou}Qualquer instância da classe só pode participar uma vez no máximo de uma das associações.

ContaCorrente

Indivíduo

Organização

0..*

0..*

0..1

0..1

{Ou}

Pertence

Pertence

Page 59: Diagrama de Classe

Restrição em linguagem natural

Cliente Pedido0..*1

Faz

{Se nível de crédito for insuficiente então condição de pagamento deve ser à vista}

Page 60: Diagrama de Classe

Linguagem de restrição de objeto

• A UML inclui uma especificação da linguagem OCL- Object Constraint Language para ser utilizada em definição de restrições dentro do metamodelo.

• Na UML, cada restrição é escrita em uma linguagem específica, embora também possa ser escrita em linguagem natural, tal como um comentário.

Page 61: Diagrama de Classe

Sintaxe básica da OCL (1/2)

• item “.” seletor– O seletor é o nome de um atributo no item ou o

nome de um papel de fim designado de um vínculo anexado ao item.

• item “.” seletor “[“ valor-de-qualificador “]”– O seletor designa uma associação qualificada

que qualifica o item. O valor-de-qualificador é um valor para atributo de qualificador.

Page 62: Diagrama de Classe

Sintaxe básica da OCL (2/2)

• set “->” “select” “(“ expressão-booleana “)”– A expressão-booleana é escrita em termos de

objetos dentro do conjunto. O resultado é o subconjunto de objetos no conjunto para o qual a expressão booleana é verdadeira.

• Exemplos:flight.pilot.training_hours > flight.plane.minimum_hours

company.employees -> select (title = “Manager” and self.reports -> size > 10)

Page 63: Diagrama de Classe

7. Classe de AssociaçãoUma classe de associação é um elemento de modelagem quetem associação e propriedades de classe, podendo ser vista tanto como uma associação que tem propriedades de classecomo uma classe que tem propriedades de associação.

Classe A Classe B

Nome da classe de associação

atributos da classe de associação

operações da classe de associação

Page 64: Diagrama de Classe

8. Dependência

• Dependência indica a ocorrência de um relacionamento semântico entre dois ou mais elementos de modelo onde uma classe cliente é dependente de alguns serviços da classe fornecedora.

• Indica uma situação na qual uma mudança em um elemento (elemento independente) pode afetar outro elemento da dependência (elemento dependente).

Page 65: Diagrama de Classe

Classe A Classe B

Fornecedor Cliente

Dependência

Page 66: Diagrama de Classe

Dependências predefinidas na UML (1/2)• Rastro

– uma conexão histórica entre dois elementos que representam o mesmo conceito em níveis diferentes de significado

• Refinamento– um histórico ou conexão de derivação entre

dois elementos com um mapeamento entre eles

Page 67: Diagrama de Classe

Dependências predefinidas na UML (2/2)• Uso

– uma situação na qual um elemento requer a presença de outro para sua implementação correta ou funcionamento

• Ligação– uma ligação de parâmetros de modelo para

valores reais visando criar um elemento não parametrizado

Page 68: Diagrama de Classe

9. Interface

Classe deimplementação

Interface

É um especificador para operações externamente visíveis de uma classe ou um componente sem especificação de sua estrutura interna.Fornece um modo para dividir e caracterizar grupos de operações.

Classe cliente

dependência

nome da interface

Page 69: Diagrama de Classe

Interface

• especifica uma parte limitada do comportamento de uma classe real e não tem implementação

• formalmente eqüivale a uma classe abstrata sem atributos, estados ou associações, mas com um conjunto de operações abstratas

• designa a face externa de uma classe ou um pacote• descreve as interações entre dois objetos

Page 70: Diagrama de Classe

Classe A Classe B

Fornecedor Clientearmazenável

executável

Classe C

Fornecedorexecutável

«interface» Executável {abstrado}

executar() {abstrato}

processar() {abstrato}

«interface» Armazenável

{abstrado}

carregar() {abstrato}

salvar() {abstrato}

Classe A implementa a interface executável e armazenável

Classe C implementa a interface executável

Classe B usa a interface executável e armazenável de A e executável de C

Page 71: Diagrama de Classe

10. Normalização do modelo de classes• Normalização é um processo formal que examina

os atributos de classes com o intuito de minimizar redundância em objetos específicos.

• A normalização causa a simplificação de atributos dentro das respectivas classes colaborando para a integridade e a estabilidade do modelo.

• O segredo das formas normais está em perceber que alguns atributos determinam o valor de outros.

Page 72: Diagrama de Classe

Normalização do modelo de classes• São mais necessárias para os modelos

relacionais.

• Primeira, Terceira e Quarta Forma Normal.

• A Segunda não ocorre em banco de objetos– identificador único e universal ao objeto

• Uma estrutura de atributos não normalizada é dita estar na zerésima forma normal

Page 73: Diagrama de Classe

1ª Forma Normal

• é verificada quando em determinadas estruturas de atributos, existem dados que se repetem várias vezes

• objetivo = remoção de grupos repetitivos

Page 74: Diagrama de Classe

Exemplo para normalização de classes:

Pedido

Número do pedido: ________Código do cliente: _________Nome do cliente: _________________________________________________Data do pedido: ___/ ___/ ____

Código do Produto Quantidade Descrição do Produto

.

.

.

.

.

.

.

.

.

Page 75: Diagrama de Classe

Classe pedido preliminar

Pedido

númeroDoPedidocódigoDoClientenomeDoClientedataDoPedidocódigoDoProduto[15]quantidadeDoProduto[15]descriçãoDoProduto[15]

Page 76: Diagrama de Classe

Para atingir a 1ª forma normal

• verificar se há ocorrências repetitivas de atributos dentro da classe [A] analisada;

• destacar os atributos repetitivos e suas respectivas operações, criando uma nova classe [B] que absorverá esses itens;

• estabelecer a associação de agregação regular e multiplicidade ?..* ou ?..[número de ocorrências] entre as classes [A] e [B].

Page 77: Diagrama de Classe

Resultado da 1ª forma normal

Pedido

códigoDoProdutoquantidadeDoProdutodescriçãoDoProduto

númeroDoPedidocódigoDoClientenomeDoClientedataDoPedido

Pedido, item

1..*1

Page 78: Diagrama de Classe

3ª Forma Normal

• objetivo = remoção de dependências transitivas

• dependência transitiva é a dependência indireta que um determinado atributo tem com o identificador do objeto através de um outro atributo explícito ou implícito do qual é diretamente dependente

Page 79: Diagrama de Classe

Para atingir a 3ª forma normal

• verificar se a classe [C] analisada possui atributos que são dependentes de outros atributos nela contidos;

• destacar os atributos com dependência transitiva e suas respectivas operações, incorporando-os na classe [D];

• eliminar os atributos obtidos por cálculo a partir de outros atributos da classe [C].

Page 80: Diagrama de Classe

Resultado da 3ª forma normal

Pedido

quantidadeDoProdutonúmeroDoPedidodataDoPedido

Pedido, item1..*1

Cliente

códigoDoClientenomeDoCliente

*

1

Produto

códigoDoProdutodescriçãoDoProduto

*

1

Page 81: Diagrama de Classe

4ª Forma Normal

Curso ProfessorLivrotexto

CPL

* * *

Tendo como pré-requisito a terceira forma normal, a quarta formanormal busca remover dependências multivaloradas.

classe de associação

Page 82: Diagrama de Classe

Resultado da 4ª forma normal

CursoProfessorLivrotexto

*

classe de associação

* * *

ProfessorCurso

Livro textoCurso

Page 83: Diagrama de Classe

Referência

• Modelagem de Objetos através da UML - the Unified Modeling Language– José Davi Furlan– MAKRON Books, 1998– Capítulo 2- Modelando com a UML, item 3.– pg. 91..167