Sunteți pe pagina 1din 27

EXERCCIOS

1 TOP Include do grupos de


funo
Objetivo
Entender como funciona o gerenciamento de memria de um grupo de
funo.

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?

3 Classes, referncias e objetos


Objetivo
Entender a diferena entre classes, referncias e objetos

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?

5 Tabela Interna de Referncias


Objetivo
Entender o propsito de uma tabela interna de referncias

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?

10 Sesses Pblica e Privada


Objetivo
Entender o que as sesses Pblica e Privada permitem no que tange o uso
da classe

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

um mtodo esttico em um mtodo de instncia


um mtodo de instncia em um mtodo esttico
a autoreferncia para acessar um mtodo esttico
a classe para acessar um mtodo de instncia

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).

20 Polimorfismo com Interfaces


Objetivo
Entender o conceito de polimorfismo atravs do uso de interfaces

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?

21 Classes e Mtodos Abstratos


Objetivo
Entender o conceito de abstrao de classes e mtodos

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?

22 Classes e Mtodos Final


Objetivo
Entender o conceito de finalizao de classes e mtodos

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?

S-ar putea să vă placă și