![Page 1: Aula de Laboratório Caché: DGBD Pós-Relacional Principais características Criação de Classes, Propriedades e Métodos Linguagem para codificação de métodos](https://reader036.vdocuments.com.br/reader036/viewer/2022081602/552fc103497959413d8bea98/html5/thumbnails/1.jpg)
Aula de LaboratórioCaché: DGBD Pós-Relacional
• Principais características
• Criação de Classes, Propriedades e Métodos
• Linguagem para codificação de métodos
• Execução de métodos
![Page 2: Aula de Laboratório Caché: DGBD Pós-Relacional Principais características Criação de Classes, Propriedades e Métodos Linguagem para codificação de métodos](https://reader036.vdocuments.com.br/reader036/viewer/2022081602/552fc103497959413d8bea98/html5/thumbnails/2.jpg)
O que é o Caché
• SGBD pós-relacional
• Um ambiente de desenvolvimento orientado a objetos
• Acesso integrado a objeto e SQL
![Page 3: Aula de Laboratório Caché: DGBD Pós-Relacional Principais características Criação de Classes, Propriedades e Métodos Linguagem para codificação de métodos](https://reader036.vdocuments.com.br/reader036/viewer/2022081602/552fc103497959413d8bea98/html5/thumbnails/3.jpg)
Caché
![Page 4: Aula de Laboratório Caché: DGBD Pós-Relacional Principais características Criação de Classes, Propriedades e Métodos Linguagem para codificação de métodos](https://reader036.vdocuments.com.br/reader036/viewer/2022081602/552fc103497959413d8bea98/html5/thumbnails/4.jpg)
Caché
![Page 5: Aula de Laboratório Caché: DGBD Pós-Relacional Principais características Criação de Classes, Propriedades e Métodos Linguagem para codificação de métodos](https://reader036.vdocuments.com.br/reader036/viewer/2022081602/552fc103497959413d8bea98/html5/thumbnails/5.jpg)
Arquitetura
![Page 6: Aula de Laboratório Caché: DGBD Pós-Relacional Principais características Criação de Classes, Propriedades e Métodos Linguagem para codificação de métodos](https://reader036.vdocuments.com.br/reader036/viewer/2022081602/552fc103497959413d8bea98/html5/thumbnails/6.jpg)
Estrutura Básica
Namespaces
Bancos de Dados
A
B
CDE
Universidade Empresa
![Page 7: Aula de Laboratório Caché: DGBD Pós-Relacional Principais características Criação de Classes, Propriedades e Métodos Linguagem para codificação de métodos](https://reader036.vdocuments.com.br/reader036/viewer/2022081602/552fc103497959413d8bea98/html5/thumbnails/7.jpg)
Classes e objetos
• uma definição de classe consiste:
propriedades;
métodos;
consultas SQL;
parâmetros: constantes para a classe;
um objeto é uma instância de uma classe;
uma classe é uma definição dos dados juntos com sua aplicação lógica;
![Page 8: Aula de Laboratório Caché: DGBD Pós-Relacional Principais características Criação de Classes, Propriedades e Métodos Linguagem para codificação de métodos](https://reader036.vdocuments.com.br/reader036/viewer/2022081602/552fc103497959413d8bea98/html5/thumbnails/8.jpg)
Criação de classes
![Page 9: Aula de Laboratório Caché: DGBD Pós-Relacional Principais características Criação de Classes, Propriedades e Métodos Linguagem para codificação de métodos](https://reader036.vdocuments.com.br/reader036/viewer/2022081602/552fc103497959413d8bea98/html5/thumbnails/9.jpg)
Criação de classes
![Page 10: Aula de Laboratório Caché: DGBD Pós-Relacional Principais características Criação de Classes, Propriedades e Métodos Linguagem para codificação de métodos](https://reader036.vdocuments.com.br/reader036/viewer/2022081602/552fc103497959413d8bea98/html5/thumbnails/10.jpg)
Criação de classes
![Page 11: Aula de Laboratório Caché: DGBD Pós-Relacional Principais características Criação de Classes, Propriedades e Métodos Linguagem para codificação de métodos](https://reader036.vdocuments.com.br/reader036/viewer/2022081602/552fc103497959413d8bea98/html5/thumbnails/11.jpg)
Criação de propriedades
![Page 12: Aula de Laboratório Caché: DGBD Pós-Relacional Principais características Criação de Classes, Propriedades e Métodos Linguagem para codificação de métodos](https://reader036.vdocuments.com.br/reader036/viewer/2022081602/552fc103497959413d8bea98/html5/thumbnails/12.jpg)
Criação de propriedades
![Page 13: Aula de Laboratório Caché: DGBD Pós-Relacional Principais características Criação de Classes, Propriedades e Métodos Linguagem para codificação de métodos](https://reader036.vdocuments.com.br/reader036/viewer/2022081602/552fc103497959413d8bea98/html5/thumbnails/13.jpg)
Criação de propriedades
![Page 14: Aula de Laboratório Caché: DGBD Pós-Relacional Principais características Criação de Classes, Propriedades e Métodos Linguagem para codificação de métodos](https://reader036.vdocuments.com.br/reader036/viewer/2022081602/552fc103497959413d8bea98/html5/thumbnails/14.jpg)
Criação de métodos
![Page 15: Aula de Laboratório Caché: DGBD Pós-Relacional Principais características Criação de Classes, Propriedades e Métodos Linguagem para codificação de métodos](https://reader036.vdocuments.com.br/reader036/viewer/2022081602/552fc103497959413d8bea98/html5/thumbnails/15.jpg)
Criação de métodos
![Page 16: Aula de Laboratório Caché: DGBD Pós-Relacional Principais características Criação de Classes, Propriedades e Métodos Linguagem para codificação de métodos](https://reader036.vdocuments.com.br/reader036/viewer/2022081602/552fc103497959413d8bea98/html5/thumbnails/16.jpg)
Criação de métodos
![Page 17: Aula de Laboratório Caché: DGBD Pós-Relacional Principais características Criação de Classes, Propriedades e Métodos Linguagem para codificação de métodos](https://reader036.vdocuments.com.br/reader036/viewer/2022081602/552fc103497959413d8bea98/html5/thumbnails/17.jpg)
Métodos
nome, valor de retorno especificação formal de argumentos, características e o seu código.
Características
um método privado pode ser usado somente por outros métodos de suaclasse;
um méotod Final não pode ser sobre-escrito por subclasses que o herdem;
um método que não é um método de Classe é um método de instância;
![Page 18: Aula de Laboratório Caché: DGBD Pós-Relacional Principais características Criação de Classes, Propriedades e Métodos Linguagem para codificação de métodos](https://reader036.vdocuments.com.br/reader036/viewer/2022081602/552fc103497959413d8bea98/html5/thumbnails/18.jpg)
Métodos de instância:
sempre é chamado para um objeto particular aberto;
do cust.%Save() ; salva este cliente!
do cust.%Close() ; fecha este cliente!
Métodos de classe:
não referencia um objeto aberto e deve usar a sintaxe ##class
set cus = ##class(User.Customer).%OpenId(id)
set mi = ##class(User.MenuItem).%New()
Métodos
![Page 19: Aula de Laboratório Caché: DGBD Pós-Relacional Principais características Criação de Classes, Propriedades e Métodos Linguagem para codificação de métodos](https://reader036.vdocuments.com.br/reader036/viewer/2022081602/552fc103497959413d8bea98/html5/thumbnails/19.jpg)
Codificação
cada linha do código precisa começar com o caracter <tab>;
para especificar o valor retornado pelo método, use o comando Quit comum argumento;
erros de sintaxe serão indicados por uma marca vermelha;Any syntax errors will be indicated by a red mark;
para métodos de expressão, entre sem o <tab>;
a sintaxe “..” é usada para se referir a outro método ou propriedade damesma classe; exemplo:
..Print()
..<prop> (acessando propriedades deste objeto)
..<método de instância> (outro método desta classe)
..<método de classe> (outro método desta classe)
![Page 20: Aula de Laboratório Caché: DGBD Pós-Relacional Principais características Criação de Classes, Propriedades e Métodos Linguagem para codificação de métodos](https://reader036.vdocuments.com.br/reader036/viewer/2022081602/552fc103497959413d8bea98/html5/thumbnails/20.jpg)
Loops For
For <valor inicial>:<valor do incremento>:<valor final { <bloco de código> }
Codificação
Condição:if <condição> {código}elseif <condição> {código}else {código}
Salvando um objeto em um método:set st = cust.%Save()if (st '= 1) {quit st}
![Page 21: Aula de Laboratório Caché: DGBD Pós-Relacional Principais características Criação de Classes, Propriedades e Métodos Linguagem para codificação de métodos](https://reader036.vdocuments.com.br/reader036/viewer/2022081602/552fc103497959413d8bea98/html5/thumbnails/21.jpg)
Script para Objetos
Básico
Criar um novo objeto: set <oref> = ##class(<pack>.<class>).%New()
Abrir um objeto existente: set <oref> = ##class(<pack>.<class>).%OpenId(<id>)
Salvar um objeto: set st = <oref>.%Save()
Fechar um objeto:
do <oref>.%Close()
![Page 22: Aula de Laboratório Caché: DGBD Pós-Relacional Principais características Criação de Classes, Propriedades e Métodos Linguagem para codificação de métodos](https://reader036.vdocuments.com.br/reader036/viewer/2022081602/552fc103497959413d8bea98/html5/thumbnails/22.jpg)
Básico
Remover um objeto: do ##class(<package>.<class>).%DeleteId(<id>)
Remover todos os objetos salvos: do ##class(<package>.<class>).%KillExtent()
Escrever uma propriedade: write <oref>.<prop>
Atribuir valor para uma propriedade: set <oref>.<prop> = <value>
![Page 23: Aula de Laboratório Caché: DGBD Pós-Relacional Principais características Criação de Classes, Propriedades e Métodos Linguagem para codificação de métodos](https://reader036.vdocuments.com.br/reader036/viewer/2022081602/552fc103497959413d8bea98/html5/thumbnails/23.jpg)
Básico
Ligando dois objetos: set <oref1>.<prop> = <oref2>
Populando uma classe: do ##class(<package>.<class>).Populate(<count>)
Fechando todos os objetos na memória: do $system.OBJ.CloseObjects()
Listar todos os objetos em memória: do $system.OBJ.ShowObjects() ; "d" for details
![Page 24: Aula de Laboratório Caché: DGBD Pós-Relacional Principais características Criação de Classes, Propriedades e Métodos Linguagem para codificação de métodos](https://reader036.vdocuments.com.br/reader036/viewer/2022081602/552fc103497959413d8bea98/html5/thumbnails/24.jpg)
Listas
Criar uma nova lista: set <oref>=##class(%Library.ListOfDataTypes).%New()
Inserir um elemento em uma lista: do <oref>.Insert(<value>)
Mostrar um elemento de uma lista: write <oref>.GetAt(<position>)
Mostrar o tamanho de uma lista: write <oref>.Count()
Limpar os elementos de uma lista: do <oref>.Clear()
![Page 25: Aula de Laboratório Caché: DGBD Pós-Relacional Principais características Criação de Classes, Propriedades e Métodos Linguagem para codificação de métodos](https://reader036.vdocuments.com.br/reader036/viewer/2022081602/552fc103497959413d8bea98/html5/thumbnails/25.jpg)
Arrays
Criar um novo array: set <oref>=##class(%Library.ArrayOfDataTypes).%New()
Inserir um elemento em um array: do <oref>.SetAt(<value>,<key>)
Mostrar um elemento de um array: write <oref>.GetAt(<key>)
Mostrar o tamanho de um array: write <oref>.Count()
Limpar os elementos de um array: do <oref>.Clear()
![Page 26: Aula de Laboratório Caché: DGBD Pós-Relacional Principais características Criação de Classes, Propriedades e Métodos Linguagem para codificação de métodos](https://reader036.vdocuments.com.br/reader036/viewer/2022081602/552fc103497959413d8bea98/html5/thumbnails/26.jpg)
Exercício
Implementação do exemplo: Banco de Dados de Projeto (simplificado)
![Page 27: Aula de Laboratório Caché: DGBD Pós-Relacional Principais características Criação de Classes, Propriedades e Métodos Linguagem para codificação de métodos](https://reader036.vdocuments.com.br/reader036/viewer/2022081602/552fc103497959413d8bea98/html5/thumbnails/27.jpg)
topicosinícioValidade
fimValidade
autPrinctipoPubllocalPubldataPubl
codigo objetivodocumentosnomecoordenador
codigoDocnomeclassificação
artigos nomeespecializaçãosaláriobônusProdução
Projeto
BuscaProjetoCadastraProjetoMostraDocumentosEliminaProjeto
Documento
Mostra
Relatório Técnico
CadastraRTMostra
Artigo
CadastraArtMostra
Pesquisador
BuscaPesquisador CadastraPesquisador
BD de Projeto simplificado
![Page 28: Aula de Laboratório Caché: DGBD Pós-Relacional Principais características Criação de Classes, Propriedades e Métodos Linguagem para codificação de métodos](https://reader036.vdocuments.com.br/reader036/viewer/2022081602/552fc103497959413d8bea98/html5/thumbnails/28.jpg)
Classe Projeto
método CadastraProjeto (nomeCoord: %Library.String, codigo:%Library.Integer, obj: %Library.String, nomeProjeto: %Library.String) retorna %Library.Status
set pesq = ##class(Aula.Pesquisador).BuscaPesquisador(nomeCoord )if pesq = 0 quit 0set proj = ##class(Aula.Projeto).%New()set proj.codigo = codigoset proj.objetivo = objset proj.nome = nomeProjetoset proj.coordenador = pesq
do proj.%Save()quit 1
![Page 29: Aula de Laboratório Caché: DGBD Pós-Relacional Principais características Criação de Classes, Propriedades e Métodos Linguagem para codificação de métodos](https://reader036.vdocuments.com.br/reader036/viewer/2022081602/552fc103497959413d8bea98/html5/thumbnails/29.jpg)
Classe Pesquisador
método BuscaPesquisador(nome: %Library.String) retorna Pesquisador
&sql(DECLARE iterator CURSOR FOR SELECT ID FROM Aula.Pesquisador WHERE nome = :nome)&sql(OPEN iterator) ;"roda" a consulta (depois de “;” vem um comentário) &sql(FETCH iterator INTO :identificador)quit:(SQLCODE '= 0) 0 ;retorna 0 se der algum errowrite "identificador: "write identificador,! ; “!” indica uma quebra de linha&sql(CLOSE iterator)set resposta = ##class(Aula.Pesquisador).%OpenId(identificador)quit resposta
![Page 30: Aula de Laboratório Caché: DGBD Pós-Relacional Principais características Criação de Classes, Propriedades e Métodos Linguagem para codificação de métodos](https://reader036.vdocuments.com.br/reader036/viewer/2022081602/552fc103497959413d8bea98/html5/thumbnails/30.jpg)
Classe Projeto
método BuscaProjeto (codigoProj: %Library.Integer) retorna Projeto
&sql(DECLARE iterator CURSOR FOR SELECT ID FROM Aula.Projeto WHERE codigo = :codigoProj) &sql(OPEN iterator) ;"roda" a consulta &sql(FETCH iterator INTO :identificador) quit:(SQLCODE '= 0) 0 write "identificador: " write identificador,! &sql(CLOSE iterator) set resposta = ##class(Aula.Projeto).%OpenId(identificador) quit resposta
![Page 31: Aula de Laboratório Caché: DGBD Pós-Relacional Principais características Criação de Classes, Propriedades e Métodos Linguagem para codificação de métodos](https://reader036.vdocuments.com.br/reader036/viewer/2022081602/552fc103497959413d8bea98/html5/thumbnails/31.jpg)
Classe Projeto
método MostraDocumentos (codProjeto: %Library.Integer)
set p= ##class(Aula.Projeto).BuscaProjeto(codProjeto)set docs = p.documentos ;recupera todos os documentosfor y=1:1:docs.Count() ;percorre esses documentos{
set d = docs.GetAt(y)do d.Mostra( )
}
![Page 32: Aula de Laboratório Caché: DGBD Pós-Relacional Principais características Criação de Classes, Propriedades e Métodos Linguagem para codificação de métodos](https://reader036.vdocuments.com.br/reader036/viewer/2022081602/552fc103497959413d8bea98/html5/thumbnails/32.jpg)
Classe Documento
método Mostra( )
write “execucao do método Documento.Mostra",!
![Page 33: Aula de Laboratório Caché: DGBD Pós-Relacional Principais características Criação de Classes, Propriedades e Métodos Linguagem para codificação de métodos](https://reader036.vdocuments.com.br/reader036/viewer/2022081602/552fc103497959413d8bea98/html5/thumbnails/33.jpg)
Classe Artigo
método Mostra()
write "tipo", !write ..tipoPublwrite "nome", !write ..nome
![Page 34: Aula de Laboratório Caché: DGBD Pós-Relacional Principais características Criação de Classes, Propriedades e Métodos Linguagem para codificação de métodos](https://reader036.vdocuments.com.br/reader036/viewer/2022081602/552fc103497959413d8bea98/html5/thumbnails/34.jpg)
Classe RelatórioTécnico
método Mostra()
write "inicio: "write $zd(..inicioValidade) ;converte para o formato de datawrite !,"fim: "write $zd(..fimValidade) ;converte para o formato de datawrite !,"nome: “, ..nome
![Page 35: Aula de Laboratório Caché: DGBD Pós-Relacional Principais características Criação de Classes, Propriedades e Métodos Linguagem para codificação de métodos](https://reader036.vdocuments.com.br/reader036/viewer/2022081602/552fc103497959413d8bea98/html5/thumbnails/35.jpg)
Classe Projeto
método EliminaProjeto (codProj: %Library.Integer) retorna %Library.Status
set proj = ..BuscaProjeto(codProj)if proj = 0{
write "nao existe o projeto especificado",!quit 0
}set oid = proj.%Oid()write “oid encontrado: ", oid, !do ##class(Aula.Projeto).%Delete(oid)quit 1
![Page 36: Aula de Laboratório Caché: DGBD Pós-Relacional Principais características Criação de Classes, Propriedades e Métodos Linguagem para codificação de métodos](https://reader036.vdocuments.com.br/reader036/viewer/2022081602/552fc103497959413d8bea98/html5/thumbnails/36.jpg)
Classe Pesquisador
método CadastraPesquisador (nome: %Library.String, especializacao: %Library.String, salario: %Library.Float, bonus: %Library.Float ) retorna %Library.Status
set pesq = ##class(Aula.Pesquisador).%New()set pesq.bonus = bonusset pesq.salario = salarioset pesq.nome = nomeset pesq.especializacao = especializacaodo pesq.%Save()quit 1
![Page 37: Aula de Laboratório Caché: DGBD Pós-Relacional Principais características Criação de Classes, Propriedades e Métodos Linguagem para codificação de métodos](https://reader036.vdocuments.com.br/reader036/viewer/2022081602/552fc103497959413d8bea98/html5/thumbnails/37.jpg)
Classe RelatorioTecnico
método CadastraRT (codDoc: %Library.Integer, nomeDoc: %Library.String, classific: %Library.String, topicos: %Library.String, codProj: %Library.Integer, inicioVal: %Library.Date, fimVal: %Library.Date) retorna %Library.Status
set projeto = ##class(Aula.Projeto).BuscaProjeto(codProj)if projeto = 0 { write "Nao existe o projeto especificado" quit 0 }set relatorio = ##class(Aula.Relatorio).%New()set relatorio.codigodoc = codDocset relatorio.nome = nomeDocset relatorio.classificacao = classificset relatorio.tópicos = topicosset relatorio.inicio = $zdh(inicioVal) ;converte para o formato de dataset relatorio.fim = $zdh(fimVal) ;converte para o formato de datado relatorio.%Save();inserir o relatório no projetoset documentos = projeto.documentosdo documentos.Insert(relatorio)do projeto.%Save() quit 1
![Page 38: Aula de Laboratório Caché: DGBD Pós-Relacional Principais características Criação de Classes, Propriedades e Métodos Linguagem para codificação de métodos](https://reader036.vdocuments.com.br/reader036/viewer/2022081602/552fc103497959413d8bea98/html5/thumbnails/38.jpg)
Terminal• zn “Aula" //muda para o namespace que se deseja trabalhar• set teste = ##class(Aula.Pesquisador).%New() //cria um novo objeto• set value = teste.%Save()• set resultado = ##class(Aula.Pesquisador).BuscaPesquisador("pesquisador1")//chama o método de classe• do teste.%Close()• set teste = ##class(Aula.Pesquisador).%OpenId(5)• set teste.bonus = 50• set teste.salario = 5000• set teste.nome = "pesquisador5"• set teste.especializacao = "especializacao5"• do teste.%Save()• do ##class(Aula.Projeto).CadastraProjeto("pesquisador3",3,"objetivo3","projeto3")• do ##class(Aula.Relatorio).CadastraRT(4,"relatorio4","classif4", "topico4", "4/4/40", "4/4/44",2)• set x = ##class(Aula.Projeto).BuscaProjeto(1)• do ##class(Aula.Projeto).MostraDocumentos(1)• set x = ##class(Aula.Pesquisador).CadastraPesquisador("pesquisador7","especializacao7", 700, 70)• set x = ##class(Aula.Projeto).EliminaProj(1)
![Page 39: Aula de Laboratório Caché: DGBD Pós-Relacional Principais características Criação de Classes, Propriedades e Métodos Linguagem para codificação de métodos](https://reader036.vdocuments.com.br/reader036/viewer/2022081602/552fc103497959413d8bea98/html5/thumbnails/39.jpg)
Classe Pesquisador
método CadastraPesquisador (nome: %Library.String, especializacao: %Library.String, salario: %Library.Float, bonus: %Library.Float ) retorna %Library.Status
set pesq = ##class(Aula.Pesquisador).%New()set pesq.bonus = bonusset pesq.salario = salarioset pesq.nome = nomeset pesq.especializacao = especializacaodo pesq.%Save()quit 1
![Page 40: Aula de Laboratório Caché: DGBD Pós-Relacional Principais características Criação de Classes, Propriedades e Métodos Linguagem para codificação de métodos](https://reader036.vdocuments.com.br/reader036/viewer/2022081602/552fc103497959413d8bea98/html5/thumbnails/40.jpg)
Classe Artigo método CadastraArt (codDoc: %Library.Integer, nomeDoc: %Library.String, classific: %Library.String, tipoPubl: %Library.String, localPubl: %Library.String, data: %Library.Date, autPrinc: %Library.String, codProj : %Library.String) retorna %Library.Status{ write "começou o método CadastraArt",!
set projeto = ##class(Aula.Projeto).BuscaProjeto(codProj)if projeto = 0 { write "Nao existe o projeto especificado" quit 0 }set pesquisador = ##class(Aula.Pesquisador).BuscaPesquisador(autPrinc)if pesquisador = 0 { write "Nao existe o pesquisador especificado" quit 0 }set artigo = ##class(Aula.Artigo).%New()set artigo.codigoDoc = codDocset artigo.nome = nomeDocset artigo.classificacao = classificset artigo.tipoPubl = tipoPublset artigo.dataPubl = $zdh(data) ;converte para o formato de dataset artigo.localPubl = localPublset artigo.autPrinc = pesquisadordo artigo.%Save();inserir o artigo no projetoset documentos = projeto.documentosdo documentos.Insert(artigo)do projeto.%Save() write "terminou o método CadastraArt",!quit 1
}
![Page 41: Aula de Laboratório Caché: DGBD Pós-Relacional Principais características Criação de Classes, Propriedades e Métodos Linguagem para codificação de métodos](https://reader036.vdocuments.com.br/reader036/viewer/2022081602/552fc103497959413d8bea98/html5/thumbnails/41.jpg)
Classe Pesquisador
método MostraArtigos ( ) retorna null
write "Artigos publicados por ", ..nome, ":", !set arts = ..artigosfor i=1:1:arts.Count(){
set temp = arts.GetAt(i)write "Nome do artigo: ", temp.nome,!write "Local da publicacao: ", temp.localPubl,!write "Classificacao: ", temp.classificacao,!write "Data da publicacao: ", $zd(temp.data),!!
}write "Fim da lista de artigos de ", ..nome