Documente Academic
Documente Profesional
Documente Cultură
Programa
ZOO_FG_TOP_INCLUDE
Pontos de ateno
Valor das variveis no TOP Include do Grupo de Funo.
Dicas
Use (nome do programa)VARIVEL no depurador para ver as variveis
num outro contexto a qualquer momento.
Experimente
Crie um novo mdulo de funo em um outro grupo e chameo na sua
aplicao. Acompanhe os valores em memria de ambos grupos de
funo.
Perguntas e Reflexo
Como
resetar
os valores no TOP Include de um Grupo de Funo?
2 Referncias a estruturas de
dados
Objetivo
Entender o uso da adio REF TO em estruturas de dados simples.
Programa
ZOO_REF_TO_DATOBJ
Pontos de ateno
Comando CREATE DATA, uso do separador >
Dicas
Tente verificar o valor das referncias antes e depois do comando CREATE
DATA.
Experimente
Apague a instruo CREATE DATA
Atribua uma referncia na outra e modifique o valor de uma delas
Perguntas e Reflexo
Qual a vantagem de referncias?
Quais os cuidados a trabalhar com referncias?
Programa
ZOO_OBJECT_REF_TO_CLASS
Pontos de ateno
Ordem de criao de cada um dos itens.
Possibilidades no que tange a quantidade de classes, referncias e
objetos que podem ser criados.
Dicas
Preocupese com as convenes de cdigo (lcl, r_) e nomenclatura do que
criado
Experimente
Visualize um objeto pelo depurador
Perguntas e Reflexo
Qual a diferena entre classe, referncia e objeto?
Quantas referncias posso criar com uma classe?
Quantos objetos posso criar com uma s referncia?
Quantos objetos posso manter em memria s com uma referncia?
4 Atribuio de referncias e
Garbage Collector
Objetivo
Entender a atribuio de referncias e o que acontece quando uma
referncia no aponta para nenhum objeto.
Programa
ZOO_MOVE_REF_TO
Pontos de ateno
Tipo usado nas referncias
Dicas
Use o
Memory Object Explorer
no depurador
Experimente
Apague uma referncia a um objeto que possui aquela referncia
Apague uma referncia a um objeto que possui muitas referncias
Inicie o Garbage Collector via menu do depurador
Tente atribuir referncias de tipos diferentes
Perguntas e Reflexo
O que acontece quando no h referncias a um objeto?
Programa
ZOO_TABLE_OF_REF_TO
Pontos de ateno
Declarao e uso da tabela interna de referncia
Dicas
Trabalhe com a viso de tabelas internas no depurador
Experimente
Declare referncias a componentes de work areas
Declare uma tabela interna com tipos primitivos e referncias
Tente usar outros tipos de tabela interna
Perguntas e Reflexo
O que fazer quando no se sabe quantos objetos sero criados na
aplicao?
6 Atributos
Objetivo
Entender o funcionamento de atributos (de instncia)
Programa
ZOO_ATTRIBUTES
Pontos de ateno
Valor dos atributos em cada objeto criado
Dicas
Use convenes de cdigo para determinar o tipo do atributo
Experimente
Declare variveis de vrias formas (LIKE, TABLE OF, BEGIN..END, REF TO,
RANGE OF, etc)
Declare tipos e constantes
Atribua o valor de um atributo a mesmo atributo de outro objeto
Perguntas e Reflexo
Qual a diferena entre atributos de uma classe e o TOP Include de um
Grupo de Funes?
7 Mtodos
Objetivo
Entender o funcionamento de mtodos (de instncia)
Programa
ZOO_METHODS
Pontos de ateno
Comandos usados na declarao e implementao de mtodos
Dicas
Use a navegao em rvore da SE80.
Experimente
Use diferentes tipos de parmetro (IMPORTING, EXPORTING, etc)
Tente mudar o valor de um atributo dentro de um mtodo
Faa um
Getter
e um
Setter
Use a instruo READONLY
Chame um mtodo a partir de outro
Declarar dois mtodos com o mesmo nome mas parmetros diferentes
Perguntas e Reflexo
Caso um objeto do tipo B seja criado dentro de um mtodo da classe A, o
objeto B retirado da memria no fim do mtodo da classe A?
8 Construtores
Objetivo
Entender o funcionamento de construtores.
Programa
ZOO_CONSTRUCTOR
Pontos de ateno
Comandos usados na declarao e implementao de construtores.
Nome reservado:
con
st
ru
c
tor, class_constructor
Dicas
Use SHIFT + ENTER para completar a criao de objetos no editor.
Experimente
Use diferentes tipos de parmetro (IMPORTING, EXPORTING, etc) em cada
um dos construtores
Perguntas e Reflexo
Quando um construtor deveria ser usado?
possvel chamar explicitamente um construtor?
O que acontece se assinatura de um construtor muda?
9 Auto-referncia (me)
Objetivo
Entender o uso da autoreferncia
me
Programa
ZOO_ME
Pontos de ateno
Objeto ao qual
me
aponta
Dicas
Use o endereo de memria do depurador para referncia
Experimente
Ocultar o referncia
me
ao acessar atributos e mtodos
Perguntas e Reflexo
Seria possvel um objeto alterar o valor de um atributo de outro objeto?
Programa
ZOO_PUBLIC_PRIVATE
Pontos de ateno
Ordem da declarao das sesses
Encerramento de cada sesso
Dicas
Na dvida, declare atributos como privados e o menor nmero de
mtodos como pblicos.
Experimente
Tente chamar um mtodo pblico dentro e fora da classe
Tente chamar um mtodo privado dentro e fora da classe
Chame um mtodo privado dentro de um mtodo pblico e viceversa
Perguntas e Reflexo
Seria possvel chamar um mtodo privado do objeto B a partir de um
mtodo pblico do objeto A (suponha que A e B so da mesma classe).
11 Atributos de Instncia vs
Atributos Estticos
Objetivo
Entender a diferena entre atributos de instncia e estticos
Programa
ZOO_ATTRIBUTE_INST_STATIC
Pontos de ateno
Comando usado na declarao de atributos
Dicas
Veja a representao de um objeto no depurador
Experimente
Tente usar um atributo esttico em um mtodo de instncia
Tente usar a autoreferncia para acessar um atributo esttico
Tente usar a classe para acessar um atributo de instncia
Perguntas e Reflexo
Qual a diferena entre um atributo esttico e uma constante?
12 Mtodos de Instncia vs
Mtodos Estticos
Objetivo
Entender a diferena entre mtodos de instncia e estticos
Programa
ZOO_METHODS_INST_STATIC
Pontos de ateno
Comando usado na declarao de mtodos
Dicas
Acompanhe a pilha de execuo durante as chamadas no depurador
Experimente
Tente
Tente
Tente
Tente
usar
usar
usar
usar
Perguntas e Reflexo
possvel um mtodo esttico alterar o valor de um atributo no
esttico?
13 Herana
Objetivo
Entender o conceito e aplicao de herana
Programa
ZOO_INHERITANCE
Pontos de ateno
Classe sendo herdada no bloco de definio da classe
Dicas
Organize seu cdigo em pares de Definio + Implementao
Experimente
Criar objetos usando referncias a classe me e filha
Tente fazer uma herana em ambos sentidos
Perguntas e Reflexo
Voc se lembra de uma aplicao que criou em que poderia usar herana?
14 Sesso Protegida
Objetivo
Entender o que a sesso Protegida permite no que tange o uso da classe
me e filha
Programa
ZOO_PROTECTED
Pontos de ateno
Ordem de declarao das sesses
Dicas
No esquea do
redefinition
Experimente
Tente herdar um mtodo alterando sua assinatura (method overriding)
Perguntas e Reflexo
O que pode ser feito para resolver a limitao do ABAP quanto a
method
overriding
? (Dica: Tente encapsular todos os parmetros em uma classe)
15 Redefinio de Construtores
Objetivo
Entender quando e como aplicar redefinio de construtores
Programa
ZOO_INHERITANCE_CONSTRUCTOR
Pontos de ateno
Tipo de suas referncias quando for criar um objeto.
Dicas
No h
redefinition
neste caso
Experimente
Criar objetos usando referncias a classe me e filha
Crie um terceiro nvel de herana hora sem, hora com um construtor.
Perguntas e Reflexo
Seria possvel herdar uma classe standard e alterar seu construtor?
16 DownCasting e UpCasting
Objetivo
Entender o conceito de downcasting e upcasting
Programa
ZOO_INHERITANCE_CASTING
Pontos de ateno
Tipo do objeto sendo criado
Dicas
Faa as perguntas: Um A
sempre
ser um B? Um B sempre ser um A?
Experimente
Atribuir referncias fazendo downcasting e upcasting
Chamar mtodo da classe filha aps fazer upcasting
Chamar mtodo da classe me redefinido na classe filha aps downcasting
Perguntas e Reflexo
possvel ter uma tabela interna de referncia a classe me preenchida
com referncias a objetos de classes filhas?
17 Eventos
Objetivo
Entender o conceito de eventos
Programa
ZOO_EVENTS
Pontos de ateno
Sesso de declarao do evento, realizao dos 4 passos citados no livro
Dicas
Minize o esforo em cdigo para fazer os
event handlers
funcionarem
Experimente
Criar eventos pblicos e privados
Fazer objeto escutar o prprio evento
Capturar parmetros em eventos
Fazer com que somente
um o
bjeto trate um evento
Perguntas e Reflexo
O que acontece se voc deletar uma classe que tratava um evento de
outra classe?
18 Classes de exceo
Objetivo
Entender o conceito de classes de exceo
Programa
ZOO_EXCEPTION
Pontos de ateno
Criao da classe de exceo, definio na assinatura do mtodo, disparo
e tratamento
Dicas
Use SHIFT + ENTER para codificar chamadas de mtodos
Experimente
Classe de exceo herdar da CX_ROOT
No usar TRY CATCH
Capturar instncia de erro no CATCH
Capturar instncia no CATCH usando CX_ROOT
Perguntas e Reflexo
Qual a importncia da varivel sysubrc no que tange o tramento de
excees em orientao a objetos?
19 Interfaces
Objetivo
Entender o conceito de interfaces
Programa
ZOO_INTERFACES
Pontos de ateno
Comandos usados para criar e implementar uma interface
Dicas
Faa suas classes dependentes de interfaces, no de outras classes
Experimente
Inserir atributos e mtodos em uma interface
Criar uma referncia a uma interface
Criar um objeto usando uma referncia a um a interface
Criar uma interface que implementa outra
Perguntas e Reflexo
O que acontece ao inserir um mtodo em uma interface?
possvel definir a implementao de um mtodo opcional em uma
interface? (Considere a verso do NetWeaver 7.4 SP9 ou maior).
Programa
ZOO_INTERFACES_POLIMORFISMO
Pontos de ateno
Tipo da referncia usada no LOOP AT e bloco de cdigo chamado quando
mtodo
criar
chamado
Dicas
Coloque pontos de parada nos mtodos
criar
de cada uma das classes
Experimente
Tente criar um objeto usando a referncia de interface
Perguntas e Reflexo
possvel instanciar uma interface?
possvel criar um objeto com uma referncia a interface?
Qual seria o esforo para inserir mais um tipo de objeto de negcio na
aplicao?
Programa
ZOO_ABSTRACT
Pontos de ateno
Classe
lcl_documento_de_venda e criao de objetos usando referncias
deste tipo
Dicas
A cada passo, verifique a sintaxe para observar os erros de sintaxe
possveis.
Experimente
Tente criar um objeto usando a referncia da classe uma vez abstrata
Perguntas e Reflexo
Qual a vantagem de possuir uma classe abstrata?
Qual a vantage de possuir um mtodo abstrato?
Faz sentido haver algo abstrato sem haver herana?
Programa
ZOO_FINAL
Pontos de ateno
Mtodo da
select_header
da classe
lcl_documento_de_venda e classe
lcl_ordem_de_venda
Dicas
Verifique a sintaxe sempre para observar os erros de sintaxe possveis.
Experimente
Herdar uma classe FINAL
Redefinir um mtodo FINAL
Perguntas e Reflexo
Qual a vantagem de possuir uma classe final?
Qual a vantage de possuir um mtodo final?
Faz sentido haver uma classe/mtodo abstrato e final simultaneamente?
Faz sentido haver um mtodo que final e redefinido simultenamente?
23 Gerao
Factory
de
Instncia
Objetivo
Entender como esconder o construtor de uma classe modificando a
gerao de instncia de uma classe.
Conhecer o padro Factory para criao de objetos
Programa
ZOO_GERACAO_INSTANCIA_FACTORY
Pontos de ateno
Assinatura do construtor da classe e instanciao de seus objetos
Dicas
Crie um mtodo que possui uma instanciao dentro
Experimente
Criar uma outra classe criadora de ordens ao invs de um mtodo
esttico
Perguntas e Reflexo
Qual a vantagem de esconder o construtor de uma classe?
24 ALV Revisitado
Objetivo
Rever a classe CL_SALV_TABLE entendendo seu funcionamento
Programa
ZOO_ALV_REVISITADO e programa de resposta (surpresa)
Pontos de ateno
Mtodos pblicos da classe standard, tipo dos parmetros de retorno dos
mtodos
Dicas
Use o code completion (SHIFT + ENTER) para realizar as chamadas
Experimente
Deixe a largura das colunas ajustada
Oculte as colunas MANDT e SMOKER
Trate o evento de clique duplo
No copie a tabela interna dos dados
Perguntas e Reflexo
Mesmo no havendo uma uma documentao completa ou exemplos para
todas as possibilidades possveis, possvel desbravar uma classe sem
precisar necessariamente estudar seu cdigo em detalhes?
25 BAdI Revisitado
Objetivo
Rever BAdI, seu conceito e proposta
Programa
ZOO_BADI_REVISITADA
Pontos de ateno
Comentrios de cdigo
Dicas
Use trs janelas (Programa + definio de badi + implementao)
Experimente
Altere a badi para ela restringir o select e no a tabela interna
Perguntas e Reflexo
Fica mais fcil entender BAdI conhecendo o que uma interface?
26 Exemplo No Standard
Objetivo
Ver uma aplicao standard usando orientao a objetos
Programa
RPU_PAYBR_EFD_MONITOR
Pontos de ateno
Estrutura da aplicao, nome das classes, e mistura com mundo
procedural.
Dicas
Use a navegao em rvore da SE80 para ter uma ideia geral da estrutura
da aplicao
Experimente
Encontre um exemplo de singleton
Encontre um exemplo de tratamento de eventos
Abre o arquivo How To Create a new event for eSocial_v1.7
Perguntas e Reflexo
possvel reutilizar a classe lcl_event_actions?
possvel reutlizar a classe cl_hrpaybr_efdf_event?