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 • Execução de métodos

Aula de Laboratório Caché: DGBD Pós-Relacional

  • Upload
    keanu

  • View
    28

  • Download
    0

Embed Size (px)

DESCRIPTION

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 Execução de métodos. O que é o Caché. SGBD pós-relacional Um ambiente de desenvolvimento orientado a objetos - PowerPoint PPT Presentation

Citation preview

Page 1: Aula de Laboratório Caché: DGBD Pós-Relacional

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

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

Caché

Page 4: Aula de Laboratório Caché: DGBD Pós-Relacional

Caché

Page 5: Aula de Laboratório Caché: DGBD Pós-Relacional

Arquitetura

Page 6: Aula de Laboratório Caché: DGBD Pós-Relacional

Estrutura Básica

Namespaces

Bancos de Dados

A

B

CDE

Universidade Empresa

Page 7: Aula de Laboratório Caché: DGBD Pós-Relacional

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

Criação de classes

Page 9: Aula de Laboratório Caché: DGBD Pós-Relacional

Criação de classes

Page 10: Aula de Laboratório Caché: DGBD Pós-Relacional

Criação de classes

Page 11: Aula de Laboratório Caché: DGBD Pós-Relacional

Criação de propriedades

Page 12: Aula de Laboratório Caché: DGBD Pós-Relacional

Criação de propriedades

Page 13: Aula de Laboratório Caché: DGBD Pós-Relacional

Criação de propriedades

Page 14: Aula de Laboratório Caché: DGBD Pós-Relacional

Criação de métodos

Page 15: Aula de Laboratório Caché: DGBD Pós-Relacional

Criação de métodos

Page 16: Aula de Laboratório Caché: DGBD Pós-Relacional

Criação de métodos

Page 17: Aula de Laboratório Caché: DGBD Pós-Relacional

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

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

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

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

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

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

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

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

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

Exercício

Implementação do exemplo: Banco de Dados de Projeto (simplificado)

Page 27: Aula de Laboratório Caché: DGBD Pós-Relacional

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

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

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

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

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

Classe Documento

método Mostra( )

write “execucao do método Documento.Mostra",!

Page 33: Aula de Laboratório Caché: DGBD Pós-Relacional

Classe Artigo

método Mostra()

write "tipo", !write ..tipoPublwrite "nome", !write ..nome

Page 34: Aula de Laboratório Caché: DGBD Pós-Relacional

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

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

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

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

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

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

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

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