plp – paradigma de programação orientado a modelos
DESCRIPTION
TRANSCRIPT
![Page 1: PLP – Paradigma de Programação Orientado a Modelos](https://reader031.vdocuments.site/reader031/viewer/2022020207/54966fe0b479594c4d8b4f81/html5/thumbnails/1.jpg)
PLP – Paradigma de Programação Orientado a
Modelos
Prof. Franklin RamalhoUniversidade Federal de Campina Grande -
UFCG
![Page 2: PLP – Paradigma de Programação Orientado a Modelos](https://reader031.vdocuments.site/reader031/viewer/2022020207/54966fe0b479594c4d8b4f81/html5/thumbnails/2.jpg)
PLP- UFCG2
Agenda
- Introdução- DDM- Modelos- UML- Diagramas UML- OCL
- Exemplos
![Page 3: PLP – Paradigma de Programação Orientado a Modelos](https://reader031.vdocuments.site/reader031/viewer/2022020207/54966fe0b479594c4d8b4f81/html5/thumbnails/3.jpg)
PLP- UFCG3
Desenvolvimento de Software Tradicional
• Desenvolvimento de Software x Desenvolvimento de Hardware
– Progressos em Desenvolvimento de Hardware tem sido exponencial ao contrário do desenvolvimento de software
• Desenvolver software é uma tarefa laboriosa– Sistemas grandes e complexos– Requisitos mudam constantemente– Novas tecnologias– Falta de documentação, etc
![Page 4: PLP – Paradigma de Programação Orientado a Modelos](https://reader031.vdocuments.site/reader031/viewer/2022020207/54966fe0b479594c4d8b4f81/html5/thumbnails/4.jpg)
PLP- UFCG4
Ciclo de Vida em Desenvolvimento de Software tradicional
requisitos
análise
projeto
implementação
testes
Texto
Diagramas etexto
Diagramas etexto
códigoAtalho
Processo iterativoEm teoria
![Page 5: PLP – Paradigma de Programação Orientado a Modelos](https://reader031.vdocuments.site/reader031/viewer/2022020207/54966fe0b479594c4d8b4f81/html5/thumbnails/5.jpg)
PLP- UFCG5
Desenvolvimento de Software Tradicional
• Principais problemas:
– Produtividade
– Portabilidade
– Interoperabilidade
– Documentação
![Page 6: PLP – Paradigma de Programação Orientado a Modelos](https://reader031.vdocuments.site/reader031/viewer/2022020207/54966fe0b479594c4d8b4f81/html5/thumbnails/6.jpg)
PLP- UFCG6
O que é DDM?
• DDM (Desenvolvimento Dirigido a Modelos)– MDA (Model-Driven Arquitecture)– MDD (Model-Driven Development)– MDE (Model-Driven Engineering)
• É uma iniciativa da OMG (Object Management Group) com o intuito de prover toda uma infra-estrutura para desenvolvimento de software– Iniciada em 1997, definida em 2000, correntemente sendo melhorada– Almeja solucionar os problemas presentes em desenvolvimento de
software tradicional (produtividade, portabilidade interoperabilidade, documentação, etc.)
– OMG oferece padrões (linguagens, plataformas, etc)
![Page 7: PLP – Paradigma de Programação Orientado a Modelos](https://reader031.vdocuments.site/reader031/viewer/2022020207/54966fe0b479594c4d8b4f81/html5/thumbnails/7.jpg)
PLP- UFCG7
MDA - Princípios
• Modelos passam a ser a força motriz no processo de desenvolvimento de software– Diferentes níveis de abstração– Diferentes fases do ciclo de desenvolvimento de uma aplicação– Apresentação visual amigável– Formais– Persistentes
• Meta-modelos descrevendo modelos
• Transformações definem como mapear modelos
• Engenhos de transformação executam definições de transformações
• Alto grau de automação do código
![Page 8: PLP – Paradigma de Programação Orientado a Modelos](https://reader031.vdocuments.site/reader031/viewer/2022020207/54966fe0b479594c4d8b4f81/html5/thumbnails/8.jpg)
PLP- UFCG8
MDA - Ciclo de Vida
requisitos
análise
projeto
implementação
testes
Texto + modelos
modelos
modelos
código
Processo DDM
![Page 9: PLP – Paradigma de Programação Orientado a Modelos](https://reader031.vdocuments.site/reader031/viewer/2022020207/54966fe0b479594c4d8b4f81/html5/thumbnails/9.jpg)
PLP- UFCG9
MDA - Ciclo de Vida
requisitos
análise
testes
CIM
PIM
código
PSM
TransformaçõesPIMPSM
TOOL
TransformaçõesPSMcódigo
TOOL
AUTOMAT ICA
ProcessoIterativo
PIM parcial TransformaçõesCIMPIM
TOOL
![Page 10: PLP – Paradigma de Programação Orientado a Modelos](https://reader031.vdocuments.site/reader031/viewer/2022020207/54966fe0b479594c4d8b4f81/html5/thumbnails/10.jpg)
PLP- UFCG10
Tipos de Modelos
Modelo de requisitos:Define o domínio onde o sistema será desenvolvido, serviços e entidades envolvidas
Modelo de análise e Projeto: define a arquitetura do sistema
Modelo de realização: define como o sistema é desenvolvido
Código do sistema
[Fig. Blanc]
![Page 11: PLP – Paradigma de Programação Orientado a Modelos](https://reader031.vdocuments.site/reader031/viewer/2022020207/54966fe0b479594c4d8b4f81/html5/thumbnails/11.jpg)
PLP- UFCG11
Arquitetura MDA
Aplicação
Engenho de transformação
Engenho de transformação
Engenho de transformação
Definições de transformação
Rule X{...}
Definições de transformação
Rule X{...}
Definições de transformação
Rule X{...}
PIM PSM CódigoCIM
Metamo delo
Metamo delo
MOF
![Page 12: PLP – Paradigma de Programação Orientado a Modelos](https://reader031.vdocuments.site/reader031/viewer/2022020207/54966fe0b479594c4d8b4f81/html5/thumbnails/12.jpg)
PLP- UFCG12
Visão Desenvolvimento de Software Tradicional
Abstração
Executabillidade
RequisitosUML + LN
ModeloUML
CódigoFonte
MáquinaVirtual
CódigoBinário
Desenvolvimento Orientado a Objetos
![Page 13: PLP – Paradigma de Programação Orientado a Modelos](https://reader031.vdocuments.site/reader031/viewer/2022020207/54966fe0b479594c4d8b4f81/html5/thumbnails/13.jpg)
PLP- UFCG13
Visão MDA corrente
Abstração
Executabillidade
MáquinaVirtual
CódigoBinário
CIMUML/OCL
PIMUML/OCL
(Especificação)
PIMUML/OCL (Realização)
PSMProfiled
UML/OCLCódigoFonte
Extreme Modeling
![Page 14: PLP – Paradigma de Programação Orientado a Modelos](https://reader031.vdocuments.site/reader031/viewer/2022020207/54966fe0b479594c4d8b4f81/html5/thumbnails/14.jpg)
PLP- UFCG14
Visão MDA no futuro
Abstração
Executabilidade
MáquinaVirtual
CódigoBinário
CIMUML/OCL
PIMUML/OCL
(Especificação)
CódigoFonte
PSMProfiled
UML/OCL
PIMUML/OCL(Realização)
PadrõesTransformação
Modelos
PadrõesRefinamento
Modelo
UML Programming
![Page 15: PLP – Paradigma de Programação Orientado a Modelos](https://reader031.vdocuments.site/reader031/viewer/2022020207/54966fe0b479594c4d8b4f81/html5/thumbnails/15.jpg)
PLP- UFCG15
Modelos
• Empresa de desenvolvimento de software de sucesso desenvolve software de qualidade e atende aos usuários
• Modelagem é uma tarefa fundamental nas atividades iniciais do desenvolvimento do software– Comunicar a estrutura e comportamento desejados para o sistema– Visualizar e controlar a arquitetura do software– Melhor entendimento do sistema– Gerenciar os riscos– Etc, ...
• É preciso utilizar uma linguagem expressiva, simples e padrão
![Page 16: PLP – Paradigma de Programação Orientado a Modelos](https://reader031.vdocuments.site/reader031/viewer/2022020207/54966fe0b479594c4d8b4f81/html5/thumbnails/16.jpg)
PLP- UFCG16
UML
• UML é uma linguagem para especificação, visualização, construção e documentação de artefatos de sistemas de software.
• Linguagem padrão adotada e recomendada pela OMG.
![Page 17: PLP – Paradigma de Programação Orientado a Modelos](https://reader031.vdocuments.site/reader031/viewer/2022020207/54966fe0b479594c4d8b4f81/html5/thumbnails/17.jpg)
PLP- UFCG17
UML - Características
• Sub-dividida em diagramas
• Abrange modelagem estrutural e comportamental
• Várias ferramentas CASE
• Amplamente utilizada pelo mercado e pela academia
• Inter-disciplinar
![Page 18: PLP – Paradigma de Programação Orientado a Modelos](https://reader031.vdocuments.site/reader031/viewer/2022020207/54966fe0b479594c4d8b4f81/html5/thumbnails/18.jpg)
PLP- UFCG18
UML - Diagramas
• Parte estrutural
– Diagrama de classes
– Diagrama de objetos
– Diagrama de Componentes
– Diagrama de Desenvolvimento
Classes, interfaces e relacionamentos
Objetos e relacionamentos
Componentes e dependências
Nodos e configurações
![Page 19: PLP – Paradigma de Programação Orientado a Modelos](https://reader031.vdocuments.site/reader031/viewer/2022020207/54966fe0b479594c4d8b4f81/html5/thumbnails/19.jpg)
PLP- UFCG19
UML - Diagramas
• Parte comportamental
– Diagrama de Comunicação
– Diagrama de Seqüência
– Diagrama de Casos de Uso
– Diagrama de estados
– Diagrama de atividades
Diagramas de Interação: Objetos, relacionamentos
e mensagens}Casos de uso, atores e
relacionamentos
Máquina de estados: Estados, transições, eventos e atividades}
![Page 20: PLP – Paradigma de Programação Orientado a Modelos](https://reader031.vdocuments.site/reader031/viewer/2022020207/54966fe0b479594c4d8b4f81/html5/thumbnails/20.jpg)
PLP- UFCG20
Diagrama de Classes
• É um diagrama que mostra um conjunto de classes, interfaces e relacionamentos.
• Responsável por modelar a parte estática do sistema
• Contém:- Classes- Atributos- Operações- Interfaces- Relacionamentos- Portas- Pacotes- Notas, restrições, etc.
![Page 21: PLP – Paradigma de Programação Orientado a Modelos](https://reader031.vdocuments.site/reader031/viewer/2022020207/54966fe0b479594c4d8b4f81/html5/thumbnails/21.jpg)
PLP- UFCG21
Atributos
• Propriedades:– Derivado– Visibilidade
• (public, protected, private)– Nome– Multiplicidade– Tipo– Valor inicial default– Estereótipo– Escopo
• Instance (default)• Classifier (propriedade
sublinhada)
![Page 22: PLP – Paradigma de Programação Orientado a Modelos](https://reader031.vdocuments.site/reader031/viewer/2022020207/54966fe0b479594c4d8b4f81/html5/thumbnails/22.jpg)
PLP- UFCG22
Atributos
• Propriedades pré-definidas:– changeable– addOnly– frozen
• O tipo de um atributo deve ser necessariamente:– Primitivo– Enumeração
Propriedades sobre atributos
![Page 23: PLP – Paradigma de Programação Orientado a Modelos](https://reader031.vdocuments.site/reader031/viewer/2022020207/54966fe0b479594c4d8b4f81/html5/thumbnails/23.jpg)
PLP- UFCG23
Operações
• Assinatura comum de serviços fornecidos por membros da uma classe
• Propriedades:– Visibilidade– Nome– parâmetros
• Direção• nome• Tipo• Multiplicidade• Valor default
– Tipo de retorno
• Escopo:– Instance– Classifier
Poligono
compativel(in pol : Poligono) : Booleandesenhar() : voidgetContador() : Integer___________________
![Page 24: PLP – Paradigma de Programação Orientado a Modelos](https://reader031.vdocuments.site/reader031/viewer/2022020207/54966fe0b479594c4d8b4f81/html5/thumbnails/24.jpg)
PLP- UFCG24
Poligono
compativel(in pol : Poligono) : Boolean {isQuery}getContador() : Integerdesenhar() : void {concurrent}
Operações
• Propriedades pré-definidas:– leaf– isQuery– sequential– guarded– concurrent
Propriedades sobre atributos
![Page 25: PLP – Paradigma de Programação Orientado a Modelos](https://reader031.vdocuments.site/reader031/viewer/2022020207/54966fe0b479594c4d8b4f81/html5/thumbnails/25.jpg)
PLP- UFCG25
Pacotes
• Agrupa um conjunto de elementos UML– namespace
• Cada elemento do modelo deve pertencer, no máximo, a um pacote
• Relações entre pacotes:– Generalização– Dependências
• Aninhamento (sub-pacotes)• Import• access (private import)• Merge
![Page 26: PLP – Paradigma de Programação Orientado a Modelos](https://reader031.vdocuments.site/reader031/viewer/2022020207/54966fe0b479594c4d8b4f81/html5/thumbnails/26.jpg)
PLP- UFCG26
Pacotes
![Page 27: PLP – Paradigma de Programação Orientado a Modelos](https://reader031.vdocuments.site/reader031/viewer/2022020207/54966fe0b479594c4d8b4f81/html5/thumbnails/27.jpg)
PLP- UFCG27
Máquina de estados
• Expressar Comportamento– Máquina de estados comportamental– Classes
• Expressar protocolo de uso do sistema– Máquina de estados de protocolo– Classes realizando interfaces e portas
![Page 28: PLP – Paradigma de Programação Orientado a Modelos](https://reader031.vdocuments.site/reader031/viewer/2022020207/54966fe0b479594c4d8b4f81/html5/thumbnails/28.jpg)
PLP- UFCG28
Máquina de estados comportamental
• Uma máquina de estados é um comportamento que especifica uma seqüência de estados durante o tempo de vida de um objeto
• Modela o comportamento de um único objeto
• Formado por:– Estado– Transição– Evento– Ação– Guardas
![Page 29: PLP – Paradigma de Programação Orientado a Modelos](https://reader031.vdocuments.site/reader031/viewer/2022020207/54966fe0b479594c4d8b4f81/html5/thumbnails/29.jpg)
PLP- UFCG29
Máquina de estados comportamental
![Page 30: PLP – Paradigma de Programação Orientado a Modelos](https://reader031.vdocuments.site/reader031/viewer/2022020207/54966fe0b479594c4d8b4f81/html5/thumbnails/30.jpg)
PLP- UFCG30
Diagrama de Atividades
• Modela aspectos dinâmicos do sistema– Modelagem Seqüencial – Modelagem concorrente
• Modela fluxo de atividades e sua interação com sociedades de objetos e unidades organizacionais– Fluxo de controle de atividade para atividade
• Modela mudança de estados de objetos ao longo do fluxo de controle de uma atividade
![Page 31: PLP – Paradigma de Programação Orientado a Modelos](https://reader031.vdocuments.site/reader031/viewer/2022020207/54966fe0b479594c4d8b4f81/html5/thumbnails/31.jpg)
PLP- UFCG31
Diagrama de Atividades
• Um diagrama de atividade é um tipo especial de máquina de estados comportamental
• Estados são atividades
• Transições são chamadas pontes de atividade– Pontes de atividade são disparadas a partir da finalização de uma
atividade fonte– Pontes de atividade alcançam uma atividade destino
![Page 32: PLP – Paradigma de Programação Orientado a Modelos](https://reader031.vdocuments.site/reader031/viewer/2022020207/54966fe0b479594c4d8b4f81/html5/thumbnails/32.jpg)
PLP- UFCG32
Diagrama de Atividades
• Uma atividade é uma execução não atômica dentro de uma máquina de estado
• Atividades são formadas por ações atômicas– Resulta em mudança de estado do sistema ou– Retorna um valor
• Atividades podem possuir outras atividades detalhadas em outro diagrama de atividades
• Ajuda a quebrar computações complexas em sub-atividades
![Page 33: PLP – Paradigma de Programação Orientado a Modelos](https://reader031.vdocuments.site/reader031/viewer/2022020207/54966fe0b479594c4d8b4f81/html5/thumbnails/33.jpg)
PLP- UFCG33
Diagrama de Atividades
![Page 34: PLP – Paradigma de Programação Orientado a Modelos](https://reader031.vdocuments.site/reader031/viewer/2022020207/54966fe0b479594c4d8b4f81/html5/thumbnails/34.jpg)
PLP- UFCG34
Diagramas de Interação
• Diagramas de interações podem ser usados para modelar o fluxo de controle dentro de:– Uma operação– Uma classe– Um componente– Um caso de uso– Um sistema como um todo
• Diferentes ênfases podem ser dadas
![Page 35: PLP – Paradigma de Programação Orientado a Modelos](https://reader031.vdocuments.site/reader031/viewer/2022020207/54966fe0b479594c4d8b4f81/html5/thumbnails/35.jpg)
PLP- UFCG35
Diagramas de Interação
• Uma interação é um comportamento que envolve um conjunto de mensagens entre um conjunto de objetos dentro de um contexto
• Uma mensagem é uma especificação de uma comunicação entre objetos que transportam informações
![Page 36: PLP – Paradigma de Programação Orientado a Modelos](https://reader031.vdocuments.site/reader031/viewer/2022020207/54966fe0b479594c4d8b4f81/html5/thumbnails/36.jpg)
PLP- UFCG36
Diagramas de Interação
• Tipos de diagramas de interação
– Diagrama de Seqüência
– Diagrama de comunicação
– Diagrama de overview de Interação
– Diagrama de tempo
![Page 37: PLP – Paradigma de Programação Orientado a Modelos](https://reader031.vdocuments.site/reader031/viewer/2022020207/54966fe0b479594c4d8b4f81/html5/thumbnails/37.jpg)
PLP- UFCG37
Diagrama de Seqüência
• Diagrama de interação mais comum
• Foca na troca de mensagens entre vários objetos– Seqüência de mensagens trocadas– Enfatiza a ordem (tempo) em que ocorre a troca de mensagens
• Graficamente:– Eixo x: objetos organizados em linhas de vida– Eixo y: ordem em que mensagens são trocadas ao longo do tempo
![Page 38: PLP – Paradigma de Programação Orientado a Modelos](https://reader031.vdocuments.site/reader031/viewer/2022020207/54966fe0b479594c4d8b4f81/html5/thumbnails/38.jpg)
PLP- UFCG38
Diagrama de Seqüência
Fragmento laço
![Page 39: PLP – Paradigma de Programação Orientado a Modelos](https://reader031.vdocuments.site/reader031/viewer/2022020207/54966fe0b479594c4d8b4f81/html5/thumbnails/39.jpg)
PLP- UFCG39
Diagrama de Seqüência
![Page 40: PLP – Paradigma de Programação Orientado a Modelos](https://reader031.vdocuments.site/reader031/viewer/2022020207/54966fe0b479594c4d8b4f81/html5/thumbnails/40.jpg)
PLP- UFCG40
OCL
• UML não provê todos aspectos relevantes da especificação do sistema.– Restrições adicionais são escritas em linguagem natural– Ao longo de todos os diagramas
• Modelos precisam ser completos
• Modelos precisam ser precisos
• Modelos precisam ser testados
• PIMs precisam ser detalhados ao extremo para permitir completa geração de código
• Idem para PSMs
![Page 41: PLP – Paradigma de Programação Orientado a Modelos](https://reader031.vdocuments.site/reader031/viewer/2022020207/54966fe0b479594c4d8b4f81/html5/thumbnails/41.jpg)
PLP- UFCG41
programa
Credito Debito
Transacaopontos : Integerdata : Data
programa() : ProgramFidelidade
Clientenome : StringpronomeTratamento : Stringmasculino : BooleandataAniversario : Datarg : String
idade()
ParceiroProgramaquantidadeDeClientes : Integer
Contapontos : Integer
creditar(pts : Integer)debitar(pts : Integer)estaVazia() : Boolean
0..*transacoes 0..*
Cartaovalido : BooleanvalidoDesde : Datavencimento : Datacor : TipoDeCornomeTratamentoCliente : String
0..*
transacoes
0..*
cartao
0..* cartoes0..*
proprietario
Servicocondicao : BooleanpontosADebitar : IntegerpontosACreditar : Integerdescricao : String
0..*
transacoes
0..*
0..* servicosOferecidos0..*
ProgramaFidelidade
cadastrar(c : Cliente)obtemServicos() : Set(Servicos) 0..*0..* 0..*0..*1..*
1..*
1..*
parceiros1..*
Socio
0..10..1
cartaoNivelServiconome : Stringcor : TipoDeCor
0..*
servicosDisponiveis
0..*
1..*1..*
{ordered}0..*0..*
nivelDoServico
TipoDeCorouropratabronze
<<enumeration>>
![Page 42: PLP – Paradigma de Programação Orientado a Modelos](https://reader031.vdocuments.site/reader031/viewer/2022020207/54966fe0b479594c4d8b4f81/html5/thumbnails/42.jpg)
PLP- UFCG42
Enriquecendo o modelo
• O cartão de um sócio deve apresentar o seguinte tratamento: “ Sr. Fulano” ou “ Sra. Sicrana”
• Um cliente deve ser maior de idade• Número de pontos gastos em transações de crédito deve
ser maior que em transações de débito• Transações devem ser realizadas com um número mínimo
de 100 pontos• Dois clientes diferentes não podem ter o mesmo rg• Quantos clientes um parceiro possui no programa de
fidelidade?• Deve-se especificar as operações:
– obtemServiço(), estaVazia(), cadastrar(), etc.
• Muitas outras
![Page 43: PLP – Paradigma de Programação Orientado a Modelos](https://reader031.vdocuments.site/reader031/viewer/2022020207/54966fe0b479594c4d8b4f81/html5/thumbnails/43.jpg)
PLP- UFCG43
OCL - Características
• OCL - Linguagem para escrita de restrição sobre objetos, que pode ser aplicada em um ou mais valores de um (ou parte de) sistema ou modelo orientado a objetos.
• Criada originalmente na IBM (Insurance Division)
• Integra construtores da lógica de primeira ordem e algorítmica.
• Apresenta sintaxe mais intuitiva para o desenvolvedor, mais próxima da implementação em linguagens OO.
• Complementar a UML
![Page 44: PLP – Paradigma de Programação Orientado a Modelos](https://reader031.vdocuments.site/reader031/viewer/2022020207/54966fe0b479594c4d8b4f81/html5/thumbnails/44.jpg)
PLP- UFCG44
OCL - Características
UML OCL
Credito Debito
ParceiroProgramaquantidadeDeClientes : Integer
Transacaopontos : Integerdata : Data
programa() : ProgramFidelidade
Clientenome : StringpronomeTratamento : Stringmasculino : BooleandataAniversario : Data
idade()
Contapontos : Integer
creditar(pts : Integer)debitar(pts : Integer)estaVazia() : Boolean
0..*transacoes 0..*
Cartaovalido : BooleanvalidoDesde : Datavencimento : Datacor : enum{prata, ouro}nomeTratamentoCliente : String
0..*
transacoes
0..*
cartao
0..* cartoes0..*
proprietario
Servicocondicao : BooleanpontosADebitar : IntegerpontosACreditar : Integerdescricao : String
0..*
transacoes
0..*
0..* servicosOferecidos0..*
ProgramaFidelidade
cadastrar(c : Cliente)0..*0..* 0..*
programa
0..*1..*
1..*
1..*
parceiros1..*
Socio
0..10..1
cartaoNivelServico
nome : String
0..*
servicosDisponiveis
0..*
1..*1..*
{ordered}0..*0..*
nivelDoServico
8: fecha
Joao:Passageiro
Maria:Passageiro
a3:BotaoDeAndar
a5:BotaoDeAndar
cont:Controlador
elevador:Elevador
porta:Porta
1: aperta
2: atualiza
3: ilumina
7: desilum ina
9: aperta
10: atualiza
11: desi lumina
4: mova
5: chegou6: abre
esperando funcionandoatualiza / mova, ilumine
chegou / desilumine
atualiza / mova, iluminecontJoao Maria a3 a5 elevador
aperta atualize
mova
ilumina
aperta
chegou
abra
mova
atualize
ilumina
![Page 45: PLP – Paradigma de Programação Orientado a Modelos](https://reader031.vdocuments.site/reader031/viewer/2022020207/54966fe0b479594c4d8b4f81/html5/thumbnails/45.jpg)
PLP- UFCG45
OCL - Características
UML OCL
Corpo de operações
Précondições
Póscondições
Regras de derivaçãoEspecificações
deInicialização
Invariantes
![Page 46: PLP – Paradigma de Programação Orientado a Modelos](https://reader031.vdocuments.site/reader031/viewer/2022020207/54966fe0b479594c4d8b4f81/html5/thumbnails/46.jpg)
PLP- UFCG46
context ParceiroPrograma inv:self.servico.transacao->iterate(
t: Transacao; acum: Integer = 0 | if t.isTypeOf(Debito) then
acum + pontos else
acum endif
)<=
self.servico.transacao->iterate( t: Transacao; acum: Integer = 0 | if t.isTypeOf(Credito) then
acum + pontos else
acum endif
)
ParceiroProgramaquantidadeDeClientes : Integer
0..* servicosOferecidos
Servicocondicao : BooleanpontosADebitar : IntegerpontosACreditar : Integerdescricao : String
transacoes
Transacaopontos : Integerdata : Data
programa() : ProgramFidelidade
0..*0..*
Operação iterate
![Page 47: PLP – Paradigma de Programação Orientado a Modelos](https://reader031.vdocuments.site/reader031/viewer/2022020207/54966fe0b479594c4d8b4f81/html5/thumbnails/47.jpg)
PLP- UFCG47
Navegações x Multiplicidades
context ParceiroPrograma inv:quantidadeDeClientes = programaFidelidade.cliente
->asSet()->size()
Clientenome : Stringpronom eTratamento : Stringmasculino : BooleandataAniversario : Datarg : String
idade()
ParceiroProgramaquantidadeDeClientes : Integer
parceiros1..*
1..*
1..*
1..*
ProgramaFidel idade
cadastrar(c : Cliente)programa
0..* 0..*0..*
![Page 48: PLP – Paradigma de Programação Orientado a Modelos](https://reader031.vdocuments.site/reader031/viewer/2022020207/54966fe0b479594c4d8b4f81/html5/thumbnails/48.jpg)
PLP- UFCG48
OCL – oclIsNew()
context cadastrarECriarCliente(n: String, d: Data):Clientepost: result.oclIsNew() and
result.nome = n and result.dataAniversario = d and clientes->includes(result)
ProgramaFidelidade
cadastrar(c : Cliente)obtemServicos() : Set(Servicos)
0..*0..*0..*
programa
0..*
Cl ientenome : StringpronomeTratamento : Stringmasculino : BooleandataAniversario : Datarg : String
idade()
![Page 49: PLP – Paradigma de Programação Orientado a Modelos](https://reader031.vdocuments.site/reader031/viewer/2022020207/54966fe0b479594c4d8b4f81/html5/thumbnails/49.jpg)
PLP- UFCG49
OCL – Variáveis locais
context ProgramaFidelidade inv:let potuacao : Integer =
self.parceiros.servicosOferecidos.transacoes.pontos in
if pontuacao > 100then …else if pontuacao > 50
then …else if pontuacao > 30
then …
ParceiroProgramaquantidadeDeClientes : Integer
0..*0..* servicosOferecidosServico
condicao : BooleanpontosADebitar : IntegerpontosACreditar : Integerdescricao : String
0..*
transacoes
0..*
Transacaopontos : Integerdata : Data
programa() : ProgramFidelidade
parceiros1..*
1..*
1..*
ProgramaFidelidade
cadastrar(c : Cl iente)obtemServicos() : Set(Servicos)1..*
![Page 50: PLP – Paradigma de Programação Orientado a Modelos](https://reader031.vdocuments.site/reader031/viewer/2022020207/54966fe0b479594c4d8b4f81/html5/thumbnails/50.jpg)
PLP- UFCG50
Desenvolvimento Dirigido a Modelos
• Total especificação do software através de modelos
• UML + OCL capazes de realizar tal descrição
• UML e OCL ainda não são 100% executáveis
• A cada dia surgem novos compiladores para UML e OCL
• Linguagens independentes de plataformas
• Em breve: Programadores UML e OCL
• Mais: Semântica de Ações, ATL, QVT, MOF, KM3, Kermeta, Ecore, EMF, MODELOG, ADT, etc (Vejam na disciplina DDM!)