SlideShare uma empresa Scribd logo
04 comunicacao entreobjetos-cursogxxbr
Os objetos GeneXus podem comunicar-se entre eles ou com outros programas externos.
Um objeto GeneXus pode chamar ou ser chamado por qualquer outro objeto, trocando informações
através de parâmetros.
Veremos em seguida como chamar desde um objeto a outro, e como especificar os parâmetros (no
objeto chamador e no chamado) para a troca da informação.
O esquema apresentado acima ilustra as possíveis interações entre objetos GeneXus para uma
aplicação Web. Observe que a flecha simples entre Web Panel e Procedimento PDF (assim como
entre Transação e Procedimento PDF) indica que uma web panel poderá chamar um Procedimento
PDF mas um Procedimento PDF não poderá chamar uma web panel (ou transação Web).
CALL - Permite chamar a um objeto GeneXus ou a um programa externo, podendo passar
parâmetros ou não.
UDP (User Defined Procedure)– Permite chamar a um objeto GeneXus ou programa externo tanto
passando parâmetros ou não, e com a particularidade de que o programa chamado retornará
necessariamente ao menos um valor ao programa que chamou. Em ambientes Web, um objeto
com interface uma vez chamado não devolve o controle ao chamador, porque a UDP é utiliza
unicamente para chamar Procedimentos e Data Providers (devido que estes cumprem com a
condição de executar e devolver o controle ao chamador).
Uma chamada (seja com CALL ou UDP) pode ser utilizado em distintas partes do objeto chamador,
dependendo se o mesmo é uma transação, wep panel, procedimento, etc.
A UDP pode utilizar-se também na definição de um atributo formula. Quer dizer que se define que
certo atributo é uma formula e que a definição da mesma consiste no chamada a um procedimento
utilizando UDP.
Quando na sintaxe da chamada se escreve o nome do objeto chamado e nenhum método de
chamada, se assume que se está chamando com udp, e pode ser omitida e escrever diretamente:
att|&var = PgmName( par1, ..., parN)
PARM – Quando um objeto é chamado desde outro com parâmetros, deve ter declarada a lista de
parâmetros que recebe. Esta declaração se realiza mediante a regra: PARM.
A continuação daremos mais detalhes sobre o uso de CALL, UDP e PARM.
Aqui mostramos um exemplo do uso do CALL para realizar uma chamada e outro exemplo do uso do
UDP.
Dependendo de qual objeto for o chamador, estas chamadas poderão escrever-se em uma seção ou
outra do mesmo, mas independentemente disso, aqui mostraremos que CALL permite chamar um
objeto com estilo de chamada a um programa, enquanto que UDP uma chamada a um objeto com
estilo de chamada em uma função.
No primeiro exemplo esta se utilizando CALL para chamar um procedimento pdf (objeto ListInvoice)
passando um parâmetro (InvoiceId). No procedimento chamado se declarou o parâmetro que recebe
(em sua seção de regras, mediante a regra parm).
No segundo exemplo é utilizado UDP para chamar um procedimento (objeto GetDiscount) passando
dois parâmetros (ProductId, CustomerId). Agora observemos na sintaxe da chamada ao
procedimento, que o mesmo retornará um valor (na variável &disc). Por este motivo no procedimento
solicitado são declarados três parâmetros utilizando a regra parm: os dois parâmetros recebidos + o
parâmetro de retorno no último lugar.
Podemos ver então que quando se utiliza CALL para chamar um objeto enviando-lhe N-parâmetros,
se devem declarar os N parâmetros (posicionais e do mesmo tipo de dados que os enviados) no
objeto solicitado mediante a regra parm.
Por outro lado quando se utiliza UDP para chamar um objeto enviando N parâmetros (exceto que seja
o caso particular de um Data Provider, caso que veremos mais adiante):
• na regra parm do objeto chamado se devem declarar N + 1
• o último parâmetro declarado na regra parm do objeto chamado corresponde ao que se encontra no
começo de tudo na chamada, é dizer, ao que recebe o valor retornado.
• em algum lugar do objeto chamado deverá ser atribuído valor ao parâmetro de retorno.
Ao definir uma Chamada a um objeto (seja utilizando CALL ou UDP), se tivermos que enviar dados
por parâmetro ao objeto chamado, precisamos determinar se enviaremos atributos e/ou variáveis: se
um dado a ser enviado por parâmetro, se encontra no objeto que o chamou, em um atributo, terá
que enviar o mesmo; e se estiver numa variável, terá que enviar a variável.
Todavia, ao declarar a lista de parâmetros no objeto chamado, o programador GeneXus deverá
decidir para cada parâmetro, se o declara como um atributo ou uma variável, independentemente de
como tenha sido enviado.
Qual é a diferença entre declarar o parâmetro como variável ou como atributo na regra parm do
objeto chamado? Se for declarar como uma variável, poderá utilizar livremente a mesma lógica do
objeto chamado: pode utilizá-la como condição de filtro por igualdade, por maior, maior ou igual,
menor, menor ou igual, LIKE, etc.; poderá utilizar para alguma operação aritmética, como bandeira
(flag), ou para o que se queira. Se for declarar um atributo, automaticamente o mesmo atuará como
filtro por igualdade no objeto, não sendo possível modificar o valor recebido.
Quando cheguemos à etapa do curso na qual podemos chamar a procedimentos pdf para listagem,
passando parâmetros, assim como a outros objetos, poderemos terminar de compreender melhor
este tema.
Como pode-se perceber claramente na sintaxe do exemplo o primeiro parâmetro definido é de saída, o
segundo parâmetro é de entrada, e o quarto parâmetro é de entrada-saída. Quando não for especificado,
como é o caso do terceiro parâmetro do exemplo, dependerá do seguinte:
• se o objeto foi chamado com CALL, o parâmetro, será de entrada-saída.
• se o objeto foi chamado com UDP, e se trata do último parâmetro, será de saída; e se for outro parâmetro
diferente do último, dependerá da linguagem de operação.
Declarar explicitamente como se quer que cada parâmetro opere, possui as seguintes vantagens:
1. Melhor especificação da semântica das interfaces; ou seja, o GeneXus e o programador quando trabalham
com um objeto, fica claro:
- se o mesmo chegar com valor e depois da execução do objeto chamado, é devolvido ao
objeto que o chamou o valor que tenha ficado (inout).
- se o mesmo chegar com valor e depois da execução do objeto chamado, não devolve ao
objeto que o chamou o valor que tenha ficado (in).
- se o mesmo não chegar com valor e depois da execução do objeto que o chamado, se
devolve ao objeto que o chamou o valor que tenha ficado (out).
2. Independência da linguagem de geração; isto é, se define explicitamente como deseja que cada parâmetro
opere, ao gerar as aplicações utilizando diferentes linguagens de geração não muda o comportamento dos
parâmetros baseados ao comportamento por default da linguagem de geração correspondente.
3. Otimizar a passagem de parâmetros de acordo com a arquitetura gerada (sendo uma vantagem que
contrasta com a anterior); isto se refere que para a maioria das linguagens é mais eficiente passar os
parâmetros por referência (inout) que por valor (in / out); mas em Java, por exemplo, os parâmetros somente
podem ser passados por valor, para poder obter esta funcionalidade de passá-los por referência é necessário
que exista conversões de parâmetros, que pode redundar em um overhead importante; por outro lado, quando
se trata de aplicações distribuídas (por exemplo Java com RMI ou HTTP), a utilização de parâmetros de tipo
out têm a vantagem de que não é necessário enviar parâmetro na chamada, diferente de definir os
parâmetros inout (tem que passar todos parâmetros); isto tem como conseqüência que serão enviados mais
bytes do que os necessários, o que é inconveniente especialmente nos casos como Internet.
A função Link se associa à propriedade link de um controle dentro de qualquer evento de uma
transação ou web panel, tendo como resultado que ao fazer click sobre dito controle se realiza a
chamada ao objeto URL referenciada no Link.
PgmName (o objeto chamado) poderá ser uma web panel, transação, ou procedimento PDF1.
______________________________________________________________________________
1 também um procedimento HTTP, mas não aprofundaremos sobre este conceito neste curso
O comando Link pode ser utilizado dentro de qualquer evento de uma transação ou web panel¹
Quando se execute o evento, ao chegar a sentença com o comando Link, se redirecionará em forma
automática à URL especificada.
No caso de utilizar-se o comando Link como no exemplo 1, chamando um PgmName (sendo
PgmName uma web panel, transação ou procedimento PDF), será equivalente à utilização do Call.
Opcionalmente se poderá passar parâmetros ao objeto chamado, devendo declarar-se os mesmos no
objeto chamado, com a regra parm.
_____________________________________________________________________________
1 também um procedimento HTTP, mas não aprofundaremos sobre este conceito neste curso

Mais conteúdo relacionado

Mais procurados

Linguagem de Programação - aula 04
Linguagem de Programação - aula 04Linguagem de Programação - aula 04
Linguagem de Programação - aula 04
Willian Carvalho
 
C++ Funções
 C++ Funções C++ Funções
C++ Funções
Odair Soares
 
Parte1c
Parte1cParte1c
4º Aula do Grupo de estudos sobre funções
4º Aula do Grupo de estudos sobre funções4º Aula do Grupo de estudos sobre funções
4º Aula do Grupo de estudos sobre funções
Fellyph Cintra
 
Aula c++ estruturas de dados
Aula c++   estruturas de dadosAula c++   estruturas de dados
Aula c++ estruturas de dados
Jean Martina
 
Funções em C
Funções em CFunções em C
Funções em C
Elaine Cecília Gatto
 
Java2
Java2Java2
ASP.Net Módulo 2
ASP.Net   Módulo 2ASP.Net   Módulo 2
ASP.Net Módulo 2
michellobo
 
Introdução ao desenvolvimento com PHP
Introdução ao desenvolvimento com PHPIntrodução ao desenvolvimento com PHP
Introdução ao desenvolvimento com PHP
Leonardo Soares
 
Atualização Java 8 (2014)
Atualização Java 8 (2014)Atualização Java 8 (2014)
Atualização Java 8 (2014)
Helder da Rocha
 
es6
es6es6
Cap07
Cap07Cap07
Cap07
mvbahamut
 
ICC - Aula 15 - Ambiente Pascal e Suas Estruturas
ICC - Aula 15 - Ambiente Pascal e Suas EstruturasICC - Aula 15 - Ambiente Pascal e Suas Estruturas
ICC - Aula 15 - Ambiente Pascal e Suas Estruturas
Felipe J. R. Vieira
 
Exercícios de programação orientado a objeto
Exercícios de programação orientado a objetoExercícios de programação orientado a objeto
Exercícios de programação orientado a objeto
Gleyciana Garrido
 
Estudos Technocorp
Estudos TechnocorpEstudos Technocorp
Estudos Technocorp
GiovaneGarcia3
 
Conceitos base de programação - parte 2
Conceitos base de programação - parte 2Conceitos base de programação - parte 2
Conceitos base de programação - parte 2
João Piedade
 
Java1
Java1Java1
Funcao PHP
Funcao PHPFuncao PHP
Java orientação a objetos (interfaces)
Java   orientação a objetos (interfaces)Java   orientação a objetos (interfaces)
Java orientação a objetos (interfaces)
Armando Daniel
 

Mais procurados (19)

Linguagem de Programação - aula 04
Linguagem de Programação - aula 04Linguagem de Programação - aula 04
Linguagem de Programação - aula 04
 
C++ Funções
 C++ Funções C++ Funções
C++ Funções
 
Parte1c
Parte1cParte1c
Parte1c
 
4º Aula do Grupo de estudos sobre funções
4º Aula do Grupo de estudos sobre funções4º Aula do Grupo de estudos sobre funções
4º Aula do Grupo de estudos sobre funções
 
Aula c++ estruturas de dados
Aula c++   estruturas de dadosAula c++   estruturas de dados
Aula c++ estruturas de dados
 
Funções em C
Funções em CFunções em C
Funções em C
 
Java2
Java2Java2
Java2
 
ASP.Net Módulo 2
ASP.Net   Módulo 2ASP.Net   Módulo 2
ASP.Net Módulo 2
 
Introdução ao desenvolvimento com PHP
Introdução ao desenvolvimento com PHPIntrodução ao desenvolvimento com PHP
Introdução ao desenvolvimento com PHP
 
Atualização Java 8 (2014)
Atualização Java 8 (2014)Atualização Java 8 (2014)
Atualização Java 8 (2014)
 
es6
es6es6
es6
 
Cap07
Cap07Cap07
Cap07
 
ICC - Aula 15 - Ambiente Pascal e Suas Estruturas
ICC - Aula 15 - Ambiente Pascal e Suas EstruturasICC - Aula 15 - Ambiente Pascal e Suas Estruturas
ICC - Aula 15 - Ambiente Pascal e Suas Estruturas
 
Exercícios de programação orientado a objeto
Exercícios de programação orientado a objetoExercícios de programação orientado a objeto
Exercícios de programação orientado a objeto
 
Estudos Technocorp
Estudos TechnocorpEstudos Technocorp
Estudos Technocorp
 
Conceitos base de programação - parte 2
Conceitos base de programação - parte 2Conceitos base de programação - parte 2
Conceitos base de programação - parte 2
 
Java1
Java1Java1
Java1
 
Funcao PHP
Funcao PHPFuncao PHP
Funcao PHP
 
Java orientação a objetos (interfaces)
Java   orientação a objetos (interfaces)Java   orientação a objetos (interfaces)
Java orientação a objetos (interfaces)
 

Semelhante a 04 comunicacao entreobjetos-cursogxxbr

Linguagens de programação 12º M12
Linguagens de programação 12º M12Linguagens de programação 12º M12
Linguagens de programação 12º M12
Luis Ferreira
 
Capítulo 11 Livro Algoritmos e Programação de Computadores Autores JR., Diler...
Capítulo 11 Livro Algoritmos e Programação de Computadores Autores JR., Diler...Capítulo 11 Livro Algoritmos e Programação de Computadores Autores JR., Diler...
Capítulo 11 Livro Algoritmos e Programação de Computadores Autores JR., Diler...
Os Fantasmas !
 
APM Model in .NET - PT-pt
APM Model in .NET - PT-ptAPM Model in .NET - PT-pt
APM Model in .NET - PT-pt
Pedro De Almeida
 
07 procedures-curso gxxbr
07 procedures-curso gxxbr07 procedures-curso gxxbr
07 procedures-curso gxxbr
Cristiano Rafael Steffens
 
Introdução à programação funcional
Introdução à programação funcionalIntrodução à programação funcional
Introdução à programação funcional
Gabriel Schade Cardoso
 
Curso Básico de Java - Aula 10
Curso Básico de Java - Aula 10Curso Básico de Java - Aula 10
Curso Básico de Java - Aula 10
PeslPinguim
 
Algoritmo e Complexidade - texto Aula1.docx
Algoritmo e Complexidade - texto Aula1.docxAlgoritmo e Complexidade - texto Aula1.docx
Algoritmo e Complexidade - texto Aula1.docx
LdiaSilva39
 
Aula de Funções - 1ª Parte (2015_04_26 22_22_50 UTC).pdf
Aula de Funções - 1ª Parte (2015_04_26 22_22_50 UTC).pdfAula de Funções - 1ª Parte (2015_04_26 22_22_50 UTC).pdf
Aula de Funções - 1ª Parte (2015_04_26 22_22_50 UTC).pdf
Mauricio Wieler
 
15 web panels-curso gxxbr
15 web panels-curso gxxbr15 web panels-curso gxxbr
15 web panels-curso gxxbr
Cristiano Rafael Steffens
 
Utilizando funções em C: modularizando os programas.
Utilizando funções em C: modularizando os programas.Utilizando funções em C: modularizando os programas.
Utilizando funções em C: modularizando os programas.
SchoolByte
 
Angular js
Angular jsAngular js
Angular js
Bruno Catão
 
Desenvolvimento Delphi
Desenvolvimento DelphiDesenvolvimento Delphi
Desenvolvimento Delphi
hildebertomelo
 
Curso Java Básico - Aula 03
Curso Java Básico - Aula 03Curso Java Básico - Aula 03
Curso Java Básico - Aula 03
Natanael Fonseca
 
TDC2016POA | Trilha .NET - O que esperar do C# 7
TDC2016POA | Trilha .NET - O que esperar do C# 7TDC2016POA | Trilha .NET - O que esperar do C# 7
TDC2016POA | Trilha .NET - O que esperar do C# 7
tdc-globalcode
 
Algoritmos - Aula 15 - Modularizacao e Escopo de Variaveis
Algoritmos - Aula 15 - Modularizacao e Escopo de VariaveisAlgoritmos - Aula 15 - Modularizacao e Escopo de Variaveis
Algoritmos - Aula 15 - Modularizacao e Escopo de Variaveis
Rodrigo Kiyoshi Saito
 
aula intro de Python sobre Funcoes.pdf
aula intro de  Python sobre  Funcoes.pdfaula intro de  Python sobre  Funcoes.pdf
aula intro de Python sobre Funcoes.pdf
GabrielEduardo16342
 
Protocolo Http
Protocolo HttpProtocolo Http
Protocolo Http
Marcondes Maçaneiro
 
01 Orientacao A Objetos Programacao
01   Orientacao A Objetos   Programacao01   Orientacao A Objetos   Programacao
01 Orientacao A Objetos Programacao
taniamaciel
 
Aula 8 - Modularização e Funções.pptx
Aula 8 - Modularização e Funções.pptxAula 8 - Modularização e Funções.pptx
Aula 8 - Modularização e Funções.pptx
ItamarGoncalves2
 
Laboratório de Programação II: Threads
Laboratório de Programação II: ThreadsLaboratório de Programação II: Threads
Laboratório de Programação II: Threads
Alex Camargo
 

Semelhante a 04 comunicacao entreobjetos-cursogxxbr (20)

Linguagens de programação 12º M12
Linguagens de programação 12º M12Linguagens de programação 12º M12
Linguagens de programação 12º M12
 
Capítulo 11 Livro Algoritmos e Programação de Computadores Autores JR., Diler...
Capítulo 11 Livro Algoritmos e Programação de Computadores Autores JR., Diler...Capítulo 11 Livro Algoritmos e Programação de Computadores Autores JR., Diler...
Capítulo 11 Livro Algoritmos e Programação de Computadores Autores JR., Diler...
 
APM Model in .NET - PT-pt
APM Model in .NET - PT-ptAPM Model in .NET - PT-pt
APM Model in .NET - PT-pt
 
07 procedures-curso gxxbr
07 procedures-curso gxxbr07 procedures-curso gxxbr
07 procedures-curso gxxbr
 
Introdução à programação funcional
Introdução à programação funcionalIntrodução à programação funcional
Introdução à programação funcional
 
Curso Básico de Java - Aula 10
Curso Básico de Java - Aula 10Curso Básico de Java - Aula 10
Curso Básico de Java - Aula 10
 
Algoritmo e Complexidade - texto Aula1.docx
Algoritmo e Complexidade - texto Aula1.docxAlgoritmo e Complexidade - texto Aula1.docx
Algoritmo e Complexidade - texto Aula1.docx
 
Aula de Funções - 1ª Parte (2015_04_26 22_22_50 UTC).pdf
Aula de Funções - 1ª Parte (2015_04_26 22_22_50 UTC).pdfAula de Funções - 1ª Parte (2015_04_26 22_22_50 UTC).pdf
Aula de Funções - 1ª Parte (2015_04_26 22_22_50 UTC).pdf
 
15 web panels-curso gxxbr
15 web panels-curso gxxbr15 web panels-curso gxxbr
15 web panels-curso gxxbr
 
Utilizando funções em C: modularizando os programas.
Utilizando funções em C: modularizando os programas.Utilizando funções em C: modularizando os programas.
Utilizando funções em C: modularizando os programas.
 
Angular js
Angular jsAngular js
Angular js
 
Desenvolvimento Delphi
Desenvolvimento DelphiDesenvolvimento Delphi
Desenvolvimento Delphi
 
Curso Java Básico - Aula 03
Curso Java Básico - Aula 03Curso Java Básico - Aula 03
Curso Java Básico - Aula 03
 
TDC2016POA | Trilha .NET - O que esperar do C# 7
TDC2016POA | Trilha .NET - O que esperar do C# 7TDC2016POA | Trilha .NET - O que esperar do C# 7
TDC2016POA | Trilha .NET - O que esperar do C# 7
 
Algoritmos - Aula 15 - Modularizacao e Escopo de Variaveis
Algoritmos - Aula 15 - Modularizacao e Escopo de VariaveisAlgoritmos - Aula 15 - Modularizacao e Escopo de Variaveis
Algoritmos - Aula 15 - Modularizacao e Escopo de Variaveis
 
aula intro de Python sobre Funcoes.pdf
aula intro de  Python sobre  Funcoes.pdfaula intro de  Python sobre  Funcoes.pdf
aula intro de Python sobre Funcoes.pdf
 
Protocolo Http
Protocolo HttpProtocolo Http
Protocolo Http
 
01 Orientacao A Objetos Programacao
01   Orientacao A Objetos   Programacao01   Orientacao A Objetos   Programacao
01 Orientacao A Objetos Programacao
 
Aula 8 - Modularização e Funções.pptx
Aula 8 - Modularização e Funções.pptxAula 8 - Modularização e Funções.pptx
Aula 8 - Modularização e Funções.pptx
 
Laboratório de Programação II: Threads
Laboratório de Programação II: ThreadsLaboratório de Programação II: Threads
Laboratório de Programação II: Threads
 

Mais de Cristiano Rafael Steffens

CONVOLUTIONAL NEURAL NETWORKS: The workhorse of image and video
CONVOLUTIONAL NEURAL NETWORKS: The workhorse of image and videoCONVOLUTIONAL NEURAL NETWORKS: The workhorse of image and video
CONVOLUTIONAL NEURAL NETWORKS: The workhorse of image and video
Cristiano Rafael Steffens
 
A pipelined approach to deal with image distortion in computer vision - BRACI...
A pipelined approach to deal with image distortion in computer vision - BRACI...A pipelined approach to deal with image distortion in computer vision - BRACI...
A pipelined approach to deal with image distortion in computer vision - BRACI...
Cristiano Rafael Steffens
 
A CNN BASED MODEL TO RESTORE ILL EXPOSED IMAGES
A CNN BASED MODEL TO RESTORE ILL EXPOSED IMAGESA CNN BASED MODEL TO RESTORE ILL EXPOSED IMAGES
A CNN BASED MODEL TO RESTORE ILL EXPOSED IMAGES
Cristiano Rafael Steffens
 
Can Exposure, Noise and Compression affect Image Recognition? An Assessment o...
Can Exposure, Noise and Compression affect Image Recognition? An Assessment o...Can Exposure, Noise and Compression affect Image Recognition? An Assessment o...
Can Exposure, Noise and Compression affect Image Recognition? An Assessment o...
Cristiano Rafael Steffens
 
MODELAGEM DAS DINÂMICAS DA FORMAÇÃO DA GOTA E TRANSFERÊNCIA DE MASSA EM PROCE...
MODELAGEM DAS DINÂMICAS DA FORMAÇÃO DA GOTA E TRANSFERÊNCIA DE MASSA EM PROCE...MODELAGEM DAS DINÂMICAS DA FORMAÇÃO DA GOTA E TRANSFERÊNCIA DE MASSA EM PROCE...
MODELAGEM DAS DINÂMICAS DA FORMAÇÃO DA GOTA E TRANSFERÊNCIA DE MASSA EM PROCE...
Cristiano Rafael Steffens
 
UMA ABORDAGEM COMPARATIVA ENTRE MICROCONTROLADORES: ARDUINO MEGA X ARDUINO DU...
UMA ABORDAGEM COMPARATIVA ENTRE MICROCONTROLADORES: ARDUINO MEGA X ARDUINO DU...UMA ABORDAGEM COMPARATIVA ENTRE MICROCONTROLADORES: ARDUINO MEGA X ARDUINO DU...
UMA ABORDAGEM COMPARATIVA ENTRE MICROCONTROLADORES: ARDUINO MEGA X ARDUINO DU...
Cristiano Rafael Steffens
 
FPGA-based sensor integration and communication protocols for automated
FPGA-based sensor integration and communication protocols for automatedFPGA-based sensor integration and communication protocols for automated
FPGA-based sensor integration and communication protocols for automated
Cristiano Rafael Steffens
 
Lars 2016 A Texture Driven Approach for Visible Spectrum Fire Detection
Lars 2016 A Texture Driven Approach for Visible Spectrum Fire DetectionLars 2016 A Texture Driven Approach for Visible Spectrum Fire Detection
Lars 2016 A Texture Driven Approach for Visible Spectrum Fire Detection
Cristiano Rafael Steffens
 
Php Math and arrays
Php Math and arraysPhp Math and arrays
Php Math and arrays
Cristiano Rafael Steffens
 
ICRA 2016 - Interactive section Presentation
ICRA 2016 - Interactive section PresentationICRA 2016 - Interactive section Presentation
ICRA 2016 - Interactive section Presentation
Cristiano Rafael Steffens
 
Vision-Based System for Welding Groove Measurements for Robotic Welding Appli...
Vision-Based System for Welding Groove Measurements for Robotic Welding Appli...Vision-Based System for Welding Groove Measurements for Robotic Welding Appli...
Vision-Based System for Welding Groove Measurements for Robotic Welding Appli...
Cristiano Rafael Steffens
 
Simpósio Unicruz: OpenCV + Python (parte 1)
Simpósio Unicruz: OpenCV + Python (parte 1)Simpósio Unicruz: OpenCV + Python (parte 1)
Simpósio Unicruz: OpenCV + Python (parte 1)
Cristiano Rafael Steffens
 
Welding Groove Mapping: Image Acquisition and Processing on Shiny Surfaces - ...
Welding Groove Mapping: Image Acquisition and Processing on Shiny Surfaces - ...Welding Groove Mapping: Image Acquisition and Processing on Shiny Surfaces - ...
Welding Groove Mapping: Image Acquisition and Processing on Shiny Surfaces - ...
Cristiano Rafael Steffens
 
Automated control module based on VBM for shipyard welding applications: Stud...
Automated control module based on VBM for shipyard welding applications: Stud...Automated control module based on VBM for shipyard welding applications: Stud...
Automated control module based on VBM for shipyard welding applications: Stud...
Cristiano Rafael Steffens
 
An Unconstrained Dataset for Non-stationary Video Based Fire Detection
An Unconstrained Dataset for Non-stationary Video Based Fire DetectionAn Unconstrained Dataset for Non-stationary Video Based Fire Detection
An Unconstrained Dataset for Non-stationary Video Based Fire Detection
Cristiano Rafael Steffens
 
Introdução ao processamento de imagens com OpenCV (cont)
Introdução ao processamento de imagens com OpenCV (cont)Introdução ao processamento de imagens com OpenCV (cont)
Introdução ao processamento de imagens com OpenCV (cont)
Cristiano Rafael Steffens
 
Introdução OpenCV (Pt-Br) com exemplos
Introdução OpenCV (Pt-Br) com exemplosIntrodução OpenCV (Pt-Br) com exemplos
Introdução OpenCV (Pt-Br) com exemplos
Cristiano Rafael Steffens
 
Um Sistema De Detecção De Fogo Baseado Em Vídeo
Um Sistema De Detecção De Fogo Baseado Em VídeoUm Sistema De Detecção De Fogo Baseado Em Vídeo
Um Sistema De Detecção De Fogo Baseado Em Vídeo
Cristiano Rafael Steffens
 
Um sistema de detecção de chamas utilizando RF e SVM (Short Version)
Um sistema de detecção de chamas utilizando RF e SVM (Short Version)Um sistema de detecção de chamas utilizando RF e SVM (Short Version)
Um sistema de detecção de chamas utilizando RF e SVM (Short Version)
Cristiano Rafael Steffens
 
G xserver curso-actualizgxxev1
G xserver curso-actualizgxxev1G xserver curso-actualizgxxev1
G xserver curso-actualizgxxev1
Cristiano Rafael Steffens
 

Mais de Cristiano Rafael Steffens (20)

CONVOLUTIONAL NEURAL NETWORKS: The workhorse of image and video
CONVOLUTIONAL NEURAL NETWORKS: The workhorse of image and videoCONVOLUTIONAL NEURAL NETWORKS: The workhorse of image and video
CONVOLUTIONAL NEURAL NETWORKS: The workhorse of image and video
 
A pipelined approach to deal with image distortion in computer vision - BRACI...
A pipelined approach to deal with image distortion in computer vision - BRACI...A pipelined approach to deal with image distortion in computer vision - BRACI...
A pipelined approach to deal with image distortion in computer vision - BRACI...
 
A CNN BASED MODEL TO RESTORE ILL EXPOSED IMAGES
A CNN BASED MODEL TO RESTORE ILL EXPOSED IMAGESA CNN BASED MODEL TO RESTORE ILL EXPOSED IMAGES
A CNN BASED MODEL TO RESTORE ILL EXPOSED IMAGES
 
Can Exposure, Noise and Compression affect Image Recognition? An Assessment o...
Can Exposure, Noise and Compression affect Image Recognition? An Assessment o...Can Exposure, Noise and Compression affect Image Recognition? An Assessment o...
Can Exposure, Noise and Compression affect Image Recognition? An Assessment o...
 
MODELAGEM DAS DINÂMICAS DA FORMAÇÃO DA GOTA E TRANSFERÊNCIA DE MASSA EM PROCE...
MODELAGEM DAS DINÂMICAS DA FORMAÇÃO DA GOTA E TRANSFERÊNCIA DE MASSA EM PROCE...MODELAGEM DAS DINÂMICAS DA FORMAÇÃO DA GOTA E TRANSFERÊNCIA DE MASSA EM PROCE...
MODELAGEM DAS DINÂMICAS DA FORMAÇÃO DA GOTA E TRANSFERÊNCIA DE MASSA EM PROCE...
 
UMA ABORDAGEM COMPARATIVA ENTRE MICROCONTROLADORES: ARDUINO MEGA X ARDUINO DU...
UMA ABORDAGEM COMPARATIVA ENTRE MICROCONTROLADORES: ARDUINO MEGA X ARDUINO DU...UMA ABORDAGEM COMPARATIVA ENTRE MICROCONTROLADORES: ARDUINO MEGA X ARDUINO DU...
UMA ABORDAGEM COMPARATIVA ENTRE MICROCONTROLADORES: ARDUINO MEGA X ARDUINO DU...
 
FPGA-based sensor integration and communication protocols for automated
FPGA-based sensor integration and communication protocols for automatedFPGA-based sensor integration and communication protocols for automated
FPGA-based sensor integration and communication protocols for automated
 
Lars 2016 A Texture Driven Approach for Visible Spectrum Fire Detection
Lars 2016 A Texture Driven Approach for Visible Spectrum Fire DetectionLars 2016 A Texture Driven Approach for Visible Spectrum Fire Detection
Lars 2016 A Texture Driven Approach for Visible Spectrum Fire Detection
 
Php Math and arrays
Php Math and arraysPhp Math and arrays
Php Math and arrays
 
ICRA 2016 - Interactive section Presentation
ICRA 2016 - Interactive section PresentationICRA 2016 - Interactive section Presentation
ICRA 2016 - Interactive section Presentation
 
Vision-Based System for Welding Groove Measurements for Robotic Welding Appli...
Vision-Based System for Welding Groove Measurements for Robotic Welding Appli...Vision-Based System for Welding Groove Measurements for Robotic Welding Appli...
Vision-Based System for Welding Groove Measurements for Robotic Welding Appli...
 
Simpósio Unicruz: OpenCV + Python (parte 1)
Simpósio Unicruz: OpenCV + Python (parte 1)Simpósio Unicruz: OpenCV + Python (parte 1)
Simpósio Unicruz: OpenCV + Python (parte 1)
 
Welding Groove Mapping: Image Acquisition and Processing on Shiny Surfaces - ...
Welding Groove Mapping: Image Acquisition and Processing on Shiny Surfaces - ...Welding Groove Mapping: Image Acquisition and Processing on Shiny Surfaces - ...
Welding Groove Mapping: Image Acquisition and Processing on Shiny Surfaces - ...
 
Automated control module based on VBM for shipyard welding applications: Stud...
Automated control module based on VBM for shipyard welding applications: Stud...Automated control module based on VBM for shipyard welding applications: Stud...
Automated control module based on VBM for shipyard welding applications: Stud...
 
An Unconstrained Dataset for Non-stationary Video Based Fire Detection
An Unconstrained Dataset for Non-stationary Video Based Fire DetectionAn Unconstrained Dataset for Non-stationary Video Based Fire Detection
An Unconstrained Dataset for Non-stationary Video Based Fire Detection
 
Introdução ao processamento de imagens com OpenCV (cont)
Introdução ao processamento de imagens com OpenCV (cont)Introdução ao processamento de imagens com OpenCV (cont)
Introdução ao processamento de imagens com OpenCV (cont)
 
Introdução OpenCV (Pt-Br) com exemplos
Introdução OpenCV (Pt-Br) com exemplosIntrodução OpenCV (Pt-Br) com exemplos
Introdução OpenCV (Pt-Br) com exemplos
 
Um Sistema De Detecção De Fogo Baseado Em Vídeo
Um Sistema De Detecção De Fogo Baseado Em VídeoUm Sistema De Detecção De Fogo Baseado Em Vídeo
Um Sistema De Detecção De Fogo Baseado Em Vídeo
 
Um sistema de detecção de chamas utilizando RF e SVM (Short Version)
Um sistema de detecção de chamas utilizando RF e SVM (Short Version)Um sistema de detecção de chamas utilizando RF e SVM (Short Version)
Um sistema de detecção de chamas utilizando RF e SVM (Short Version)
 
G xserver curso-actualizgxxev1
G xserver curso-actualizgxxev1G xserver curso-actualizgxxev1
G xserver curso-actualizgxxev1
 

04 comunicacao entreobjetos-cursogxxbr

  • 2. Os objetos GeneXus podem comunicar-se entre eles ou com outros programas externos. Um objeto GeneXus pode chamar ou ser chamado por qualquer outro objeto, trocando informações através de parâmetros. Veremos em seguida como chamar desde um objeto a outro, e como especificar os parâmetros (no objeto chamador e no chamado) para a troca da informação. O esquema apresentado acima ilustra as possíveis interações entre objetos GeneXus para uma aplicação Web. Observe que a flecha simples entre Web Panel e Procedimento PDF (assim como entre Transação e Procedimento PDF) indica que uma web panel poderá chamar um Procedimento PDF mas um Procedimento PDF não poderá chamar uma web panel (ou transação Web).
  • 3. CALL - Permite chamar a um objeto GeneXus ou a um programa externo, podendo passar parâmetros ou não. UDP (User Defined Procedure)– Permite chamar a um objeto GeneXus ou programa externo tanto passando parâmetros ou não, e com a particularidade de que o programa chamado retornará necessariamente ao menos um valor ao programa que chamou. Em ambientes Web, um objeto com interface uma vez chamado não devolve o controle ao chamador, porque a UDP é utiliza unicamente para chamar Procedimentos e Data Providers (devido que estes cumprem com a condição de executar e devolver o controle ao chamador). Uma chamada (seja com CALL ou UDP) pode ser utilizado em distintas partes do objeto chamador, dependendo se o mesmo é uma transação, wep panel, procedimento, etc. A UDP pode utilizar-se também na definição de um atributo formula. Quer dizer que se define que certo atributo é uma formula e que a definição da mesma consiste no chamada a um procedimento utilizando UDP. Quando na sintaxe da chamada se escreve o nome do objeto chamado e nenhum método de chamada, se assume que se está chamando com udp, e pode ser omitida e escrever diretamente: att|&var = PgmName( par1, ..., parN) PARM – Quando um objeto é chamado desde outro com parâmetros, deve ter declarada a lista de parâmetros que recebe. Esta declaração se realiza mediante a regra: PARM. A continuação daremos mais detalhes sobre o uso de CALL, UDP e PARM.
  • 4. Aqui mostramos um exemplo do uso do CALL para realizar uma chamada e outro exemplo do uso do UDP. Dependendo de qual objeto for o chamador, estas chamadas poderão escrever-se em uma seção ou outra do mesmo, mas independentemente disso, aqui mostraremos que CALL permite chamar um objeto com estilo de chamada a um programa, enquanto que UDP uma chamada a um objeto com estilo de chamada em uma função. No primeiro exemplo esta se utilizando CALL para chamar um procedimento pdf (objeto ListInvoice) passando um parâmetro (InvoiceId). No procedimento chamado se declarou o parâmetro que recebe (em sua seção de regras, mediante a regra parm). No segundo exemplo é utilizado UDP para chamar um procedimento (objeto GetDiscount) passando dois parâmetros (ProductId, CustomerId). Agora observemos na sintaxe da chamada ao procedimento, que o mesmo retornará um valor (na variável &disc). Por este motivo no procedimento solicitado são declarados três parâmetros utilizando a regra parm: os dois parâmetros recebidos + o parâmetro de retorno no último lugar. Podemos ver então que quando se utiliza CALL para chamar um objeto enviando-lhe N-parâmetros, se devem declarar os N parâmetros (posicionais e do mesmo tipo de dados que os enviados) no objeto solicitado mediante a regra parm. Por outro lado quando se utiliza UDP para chamar um objeto enviando N parâmetros (exceto que seja o caso particular de um Data Provider, caso que veremos mais adiante): • na regra parm do objeto chamado se devem declarar N + 1 • o último parâmetro declarado na regra parm do objeto chamado corresponde ao que se encontra no começo de tudo na chamada, é dizer, ao que recebe o valor retornado. • em algum lugar do objeto chamado deverá ser atribuído valor ao parâmetro de retorno.
  • 5. Ao definir uma Chamada a um objeto (seja utilizando CALL ou UDP), se tivermos que enviar dados por parâmetro ao objeto chamado, precisamos determinar se enviaremos atributos e/ou variáveis: se um dado a ser enviado por parâmetro, se encontra no objeto que o chamou, em um atributo, terá que enviar o mesmo; e se estiver numa variável, terá que enviar a variável. Todavia, ao declarar a lista de parâmetros no objeto chamado, o programador GeneXus deverá decidir para cada parâmetro, se o declara como um atributo ou uma variável, independentemente de como tenha sido enviado. Qual é a diferença entre declarar o parâmetro como variável ou como atributo na regra parm do objeto chamado? Se for declarar como uma variável, poderá utilizar livremente a mesma lógica do objeto chamado: pode utilizá-la como condição de filtro por igualdade, por maior, maior ou igual, menor, menor ou igual, LIKE, etc.; poderá utilizar para alguma operação aritmética, como bandeira (flag), ou para o que se queira. Se for declarar um atributo, automaticamente o mesmo atuará como filtro por igualdade no objeto, não sendo possível modificar o valor recebido. Quando cheguemos à etapa do curso na qual podemos chamar a procedimentos pdf para listagem, passando parâmetros, assim como a outros objetos, poderemos terminar de compreender melhor este tema.
  • 6. Como pode-se perceber claramente na sintaxe do exemplo o primeiro parâmetro definido é de saída, o segundo parâmetro é de entrada, e o quarto parâmetro é de entrada-saída. Quando não for especificado, como é o caso do terceiro parâmetro do exemplo, dependerá do seguinte: • se o objeto foi chamado com CALL, o parâmetro, será de entrada-saída. • se o objeto foi chamado com UDP, e se trata do último parâmetro, será de saída; e se for outro parâmetro diferente do último, dependerá da linguagem de operação. Declarar explicitamente como se quer que cada parâmetro opere, possui as seguintes vantagens: 1. Melhor especificação da semântica das interfaces; ou seja, o GeneXus e o programador quando trabalham com um objeto, fica claro: - se o mesmo chegar com valor e depois da execução do objeto chamado, é devolvido ao objeto que o chamou o valor que tenha ficado (inout). - se o mesmo chegar com valor e depois da execução do objeto chamado, não devolve ao objeto que o chamou o valor que tenha ficado (in). - se o mesmo não chegar com valor e depois da execução do objeto que o chamado, se devolve ao objeto que o chamou o valor que tenha ficado (out). 2. Independência da linguagem de geração; isto é, se define explicitamente como deseja que cada parâmetro opere, ao gerar as aplicações utilizando diferentes linguagens de geração não muda o comportamento dos parâmetros baseados ao comportamento por default da linguagem de geração correspondente. 3. Otimizar a passagem de parâmetros de acordo com a arquitetura gerada (sendo uma vantagem que contrasta com a anterior); isto se refere que para a maioria das linguagens é mais eficiente passar os parâmetros por referência (inout) que por valor (in / out); mas em Java, por exemplo, os parâmetros somente podem ser passados por valor, para poder obter esta funcionalidade de passá-los por referência é necessário que exista conversões de parâmetros, que pode redundar em um overhead importante; por outro lado, quando se trata de aplicações distribuídas (por exemplo Java com RMI ou HTTP), a utilização de parâmetros de tipo out têm a vantagem de que não é necessário enviar parâmetro na chamada, diferente de definir os parâmetros inout (tem que passar todos parâmetros); isto tem como conseqüência que serão enviados mais bytes do que os necessários, o que é inconveniente especialmente nos casos como Internet.
  • 7. A função Link se associa à propriedade link de um controle dentro de qualquer evento de uma transação ou web panel, tendo como resultado que ao fazer click sobre dito controle se realiza a chamada ao objeto URL referenciada no Link. PgmName (o objeto chamado) poderá ser uma web panel, transação, ou procedimento PDF1. ______________________________________________________________________________ 1 também um procedimento HTTP, mas não aprofundaremos sobre este conceito neste curso
  • 8. O comando Link pode ser utilizado dentro de qualquer evento de uma transação ou web panel¹ Quando se execute o evento, ao chegar a sentença com o comando Link, se redirecionará em forma automática à URL especificada. No caso de utilizar-se o comando Link como no exemplo 1, chamando um PgmName (sendo PgmName uma web panel, transação ou procedimento PDF), será equivalente à utilização do Call. Opcionalmente se poderá passar parâmetros ao objeto chamado, devendo declarar-se os mesmos no objeto chamado, com a regra parm. _____________________________________________________________________________ 1 também um procedimento HTTP, mas não aprofundaremos sobre este conceito neste curso