![Page 1: 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,](https://reader036.vdocuments.mx/reader036/viewer/2022062404/552fc0f9497959413d8b7607/html5/thumbnails/1.jpg)
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: 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,](https://reader036.vdocuments.mx/reader036/viewer/2022062404/552fc0f9497959413d8b7607/html5/thumbnails/2.jpg)
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: 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,](https://reader036.vdocuments.mx/reader036/viewer/2022062404/552fc0f9497959413d8b7607/html5/thumbnails/3.jpg)
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: 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,](https://reader036.vdocuments.mx/reader036/viewer/2022062404/552fc0f9497959413d8b7607/html5/thumbnails/4.jpg)
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: 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,](https://reader036.vdocuments.mx/reader036/viewer/2022062404/552fc0f9497959413d8b7607/html5/thumbnails/5.jpg)
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: 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,](https://reader036.vdocuments.mx/reader036/viewer/2022062404/552fc0f9497959413d8b7607/html5/thumbnails/6.jpg)
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: 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,](https://reader036.vdocuments.mx/reader036/viewer/2022062404/552fc0f9497959413d8b7607/html5/thumbnails/7.jpg)
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: 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,](https://reader036.vdocuments.mx/reader036/viewer/2022062404/552fc0f9497959413d8b7607/html5/thumbnails/8.jpg)
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: 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,](https://reader036.vdocuments.mx/reader036/viewer/2022062404/552fc0f9497959413d8b7607/html5/thumbnails/9.jpg)
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: 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,](https://reader036.vdocuments.mx/reader036/viewer/2022062404/552fc0f9497959413d8b7607/html5/thumbnails/10.jpg)
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: 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,](https://reader036.vdocuments.mx/reader036/viewer/2022062404/552fc0f9497959413d8b7607/html5/thumbnails/11.jpg)
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: 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,](https://reader036.vdocuments.mx/reader036/viewer/2022062404/552fc0f9497959413d8b7607/html5/thumbnails/12.jpg)
As classes são os blocos de construção mais importantes de qualquer sistema orientado a objetos.
![Page 13: 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,](https://reader036.vdocuments.mx/reader036/viewer/2022062404/552fc0f9497959413d8b7607/html5/thumbnails/13.jpg)
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: 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,](https://reader036.vdocuments.mx/reader036/viewer/2022062404/552fc0f9497959413d8b7607/html5/thumbnails/14.jpg)
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: 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,](https://reader036.vdocuments.mx/reader036/viewer/2022062404/552fc0f9497959413d8b7607/html5/thumbnails/15.jpg)
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: 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,](https://reader036.vdocuments.mx/reader036/viewer/2022062404/552fc0f9497959413d8b7607/html5/thumbnails/16.jpg)
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: 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,](https://reader036.vdocuments.mx/reader036/viewer/2022062404/552fc0f9497959413d8b7607/html5/thumbnails/17.jpg)
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: 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,](https://reader036.vdocuments.mx/reader036/viewer/2022062404/552fc0f9497959413d8b7607/html5/thumbnails/18.jpg)
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: 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,](https://reader036.vdocuments.mx/reader036/viewer/2022062404/552fc0f9497959413d8b7607/html5/thumbnails/19.jpg)
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: 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,](https://reader036.vdocuments.mx/reader036/viewer/2022062404/552fc0f9497959413d8b7607/html5/thumbnails/20.jpg)
+ 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: 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,](https://reader036.vdocuments.mx/reader036/viewer/2022062404/552fc0f9497959413d8b7607/html5/thumbnails/21.jpg)
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: 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,](https://reader036.vdocuments.mx/reader036/viewer/2022062404/552fc0f9497959413d8b7607/html5/thumbnails/22.jpg)
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: 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,](https://reader036.vdocuments.mx/reader036/viewer/2022062404/552fc0f9497959413d8b7607/html5/thumbnails/23.jpg)
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: 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,](https://reader036.vdocuments.mx/reader036/viewer/2022062404/552fc0f9497959413d8b7607/html5/thumbnails/24.jpg)
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: 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,](https://reader036.vdocuments.mx/reader036/viewer/2022062404/552fc0f9497959413d8b7607/html5/thumbnails/25.jpg)
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: 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,](https://reader036.vdocuments.mx/reader036/viewer/2022062404/552fc0f9497959413d8b7607/html5/thumbnails/26.jpg)
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: 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,](https://reader036.vdocuments.mx/reader036/viewer/2022062404/552fc0f9497959413d8b7607/html5/thumbnails/27.jpg)
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: 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,](https://reader036.vdocuments.mx/reader036/viewer/2022062404/552fc0f9497959413d8b7607/html5/thumbnails/28.jpg)
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: 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,](https://reader036.vdocuments.mx/reader036/viewer/2022062404/552fc0f9497959413d8b7607/html5/thumbnails/29.jpg)
• 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: 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,](https://reader036.vdocuments.mx/reader036/viewer/2022062404/552fc0f9497959413d8b7607/html5/thumbnails/30.jpg)
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: 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,](https://reader036.vdocuments.mx/reader036/viewer/2022062404/552fc0f9497959413d8b7607/html5/thumbnails/31.jpg)
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: 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,](https://reader036.vdocuments.mx/reader036/viewer/2022062404/552fc0f9497959413d8b7607/html5/thumbnails/32.jpg)
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: 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,](https://reader036.vdocuments.mx/reader036/viewer/2022062404/552fc0f9497959413d8b7607/html5/thumbnails/33.jpg)
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: 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,](https://reader036.vdocuments.mx/reader036/viewer/2022062404/552fc0f9497959413d8b7607/html5/thumbnails/34.jpg)
Associação n-ária
• é uma associação entre três ou mais classes
Funcionário Quesito Projeto
Avaliação
* * *
![Page 35: 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,](https://reader036.vdocuments.mx/reader036/viewer/2022062404/552fc0f9497959413d8b7607/html5/thumbnails/35.jpg)
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: 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,](https://reader036.vdocuments.mx/reader036/viewer/2022062404/552fc0f9497959413d8b7607/html5/thumbnails/36.jpg)
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: 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,](https://reader036.vdocuments.mx/reader036/viewer/2022062404/552fc0f9497959413d8b7607/html5/thumbnails/37.jpg)
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: 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,](https://reader036.vdocuments.mx/reader036/viewer/2022062404/552fc0f9497959413d8b7607/html5/thumbnails/38.jpg)
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: 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,](https://reader036.vdocuments.mx/reader036/viewer/2022062404/552fc0f9497959413d8b7607/html5/thumbnails/39.jpg)
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: 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,](https://reader036.vdocuments.mx/reader036/viewer/2022062404/552fc0f9497959413d8b7607/html5/thumbnails/40.jpg)
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: 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,](https://reader036.vdocuments.mx/reader036/viewer/2022062404/552fc0f9497959413d8b7607/html5/thumbnails/41.jpg)
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: 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,](https://reader036.vdocuments.mx/reader036/viewer/2022062404/552fc0f9497959413d8b7607/html5/thumbnails/42.jpg)
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: 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,](https://reader036.vdocuments.mx/reader036/viewer/2022062404/552fc0f9497959413d8b7607/html5/thumbnails/43.jpg)
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: 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,](https://reader036.vdocuments.mx/reader036/viewer/2022062404/552fc0f9497959413d8b7607/html5/thumbnails/44.jpg)
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: 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,](https://reader036.vdocuments.mx/reader036/viewer/2022062404/552fc0f9497959413d8b7607/html5/thumbnails/45.jpg)
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: 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,](https://reader036.vdocuments.mx/reader036/viewer/2022062404/552fc0f9497959413d8b7607/html5/thumbnails/46.jpg)
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: 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,](https://reader036.vdocuments.mx/reader036/viewer/2022062404/552fc0f9497959413d8b7607/html5/thumbnails/47.jpg)
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: 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,](https://reader036.vdocuments.mx/reader036/viewer/2022062404/552fc0f9497959413d8b7607/html5/thumbnails/48.jpg)
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: 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,](https://reader036.vdocuments.mx/reader036/viewer/2022062404/552fc0f9497959413d8b7607/html5/thumbnails/49.jpg)
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: 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,](https://reader036.vdocuments.mx/reader036/viewer/2022062404/552fc0f9497959413d8b7607/html5/thumbnails/50.jpg)
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: 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,](https://reader036.vdocuments.mx/reader036/viewer/2022062404/552fc0f9497959413d8b7607/html5/thumbnails/51.jpg)
Exemplo de generalização/ especificação com restrição
Animal
Mamífero Ave Peixe
{disjunção, incompleto}
![Page 52: 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,](https://reader036.vdocuments.mx/reader036/viewer/2022062404/552fc0f9497959413d8b7607/html5/thumbnails/52.jpg)
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: 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,](https://reader036.vdocuments.mx/reader036/viewer/2022062404/552fc0f9497959413d8b7607/html5/thumbnails/53.jpg)
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: 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,](https://reader036.vdocuments.mx/reader036/viewer/2022062404/552fc0f9497959413d8b7607/html5/thumbnails/54.jpg)
Herança múltipla
Veículo
Veículoterrestre
Veículoaquático
Veículoanfíbio
{sobreposição, incompleto}
![Page 55: 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,](https://reader036.vdocuments.mx/reader036/viewer/2022062404/552fc0f9497959413d8b7607/html5/thumbnails/55.jpg)
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: 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,](https://reader036.vdocuments.mx/reader036/viewer/2022062404/552fc0f9497959413d8b7607/html5/thumbnails/56.jpg)
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: 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,](https://reader036.vdocuments.mx/reader036/viewer/2022062404/552fc0f9497959413d8b7607/html5/thumbnails/57.jpg)
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: 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,](https://reader036.vdocuments.mx/reader036/viewer/2022062404/552fc0f9497959413d8b7607/html5/thumbnails/58.jpg)
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: 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,](https://reader036.vdocuments.mx/reader036/viewer/2022062404/552fc0f9497959413d8b7607/html5/thumbnails/59.jpg)
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: 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,](https://reader036.vdocuments.mx/reader036/viewer/2022062404/552fc0f9497959413d8b7607/html5/thumbnails/60.jpg)
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: 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,](https://reader036.vdocuments.mx/reader036/viewer/2022062404/552fc0f9497959413d8b7607/html5/thumbnails/61.jpg)
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: 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,](https://reader036.vdocuments.mx/reader036/viewer/2022062404/552fc0f9497959413d8b7607/html5/thumbnails/62.jpg)
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: 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,](https://reader036.vdocuments.mx/reader036/viewer/2022062404/552fc0f9497959413d8b7607/html5/thumbnails/63.jpg)
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: 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,](https://reader036.vdocuments.mx/reader036/viewer/2022062404/552fc0f9497959413d8b7607/html5/thumbnails/64.jpg)
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: 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,](https://reader036.vdocuments.mx/reader036/viewer/2022062404/552fc0f9497959413d8b7607/html5/thumbnails/65.jpg)
Classe A Classe B
Fornecedor Cliente
Dependência
![Page 66: 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,](https://reader036.vdocuments.mx/reader036/viewer/2022062404/552fc0f9497959413d8b7607/html5/thumbnails/66.jpg)
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: 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,](https://reader036.vdocuments.mx/reader036/viewer/2022062404/552fc0f9497959413d8b7607/html5/thumbnails/67.jpg)
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: 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,](https://reader036.vdocuments.mx/reader036/viewer/2022062404/552fc0f9497959413d8b7607/html5/thumbnails/68.jpg)
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: 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,](https://reader036.vdocuments.mx/reader036/viewer/2022062404/552fc0f9497959413d8b7607/html5/thumbnails/69.jpg)
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: 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,](https://reader036.vdocuments.mx/reader036/viewer/2022062404/552fc0f9497959413d8b7607/html5/thumbnails/70.jpg)
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: 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,](https://reader036.vdocuments.mx/reader036/viewer/2022062404/552fc0f9497959413d8b7607/html5/thumbnails/71.jpg)
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: 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,](https://reader036.vdocuments.mx/reader036/viewer/2022062404/552fc0f9497959413d8b7607/html5/thumbnails/72.jpg)
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: 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,](https://reader036.vdocuments.mx/reader036/viewer/2022062404/552fc0f9497959413d8b7607/html5/thumbnails/73.jpg)
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: 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,](https://reader036.vdocuments.mx/reader036/viewer/2022062404/552fc0f9497959413d8b7607/html5/thumbnails/74.jpg)
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: 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,](https://reader036.vdocuments.mx/reader036/viewer/2022062404/552fc0f9497959413d8b7607/html5/thumbnails/75.jpg)
Classe pedido preliminar
Pedido
númeroDoPedidocódigoDoClientenomeDoClientedataDoPedidocódigoDoProduto[15]quantidadeDoProduto[15]descriçãoDoProduto[15]
![Page 76: 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,](https://reader036.vdocuments.mx/reader036/viewer/2022062404/552fc0f9497959413d8b7607/html5/thumbnails/76.jpg)
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: 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,](https://reader036.vdocuments.mx/reader036/viewer/2022062404/552fc0f9497959413d8b7607/html5/thumbnails/77.jpg)
Resultado da 1ª forma normal
Pedido
códigoDoProdutoquantidadeDoProdutodescriçãoDoProduto
númeroDoPedidocódigoDoClientenomeDoClientedataDoPedido
Pedido, item
1..*1
![Page 78: 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,](https://reader036.vdocuments.mx/reader036/viewer/2022062404/552fc0f9497959413d8b7607/html5/thumbnails/78.jpg)
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: 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,](https://reader036.vdocuments.mx/reader036/viewer/2022062404/552fc0f9497959413d8b7607/html5/thumbnails/79.jpg)
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: 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,](https://reader036.vdocuments.mx/reader036/viewer/2022062404/552fc0f9497959413d8b7607/html5/thumbnails/80.jpg)
Resultado da 3ª forma normal
Pedido
quantidadeDoProdutonúmeroDoPedidodataDoPedido
Pedido, item1..*1
Cliente
códigoDoClientenomeDoCliente
*
1
Produto
códigoDoProdutodescriçãoDoProduto
*
1
![Page 81: 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,](https://reader036.vdocuments.mx/reader036/viewer/2022062404/552fc0f9497959413d8b7607/html5/thumbnails/81.jpg)
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: 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,](https://reader036.vdocuments.mx/reader036/viewer/2022062404/552fc0f9497959413d8b7607/html5/thumbnails/82.jpg)
Resultado da 4ª forma normal
CursoProfessorLivrotexto
*
classe de associação
* * *
ProfessorCurso
Livro textoCurso
![Page 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,](https://reader036.vdocuments.mx/reader036/viewer/2022062404/552fc0f9497959413d8b7607/html5/thumbnails/83.jpg)
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