Escolar Documentos
Profissional Documentos
Cultura Documentos
Objects
Carlos Eduardo Candido de Oliveira
E-mail: carlos.candido@procwork.com.br
ASPEN
Objetivos e ganhos;
Classes e Objetos
Encapsulamento
Classes Abstratas
Herana
Polimorfismo
Abap Objects
Excees
Eventos
2
Pascal
1973
classes
TADs
SIMULA
1967
classes
herana
C
1972
SmalTalk
1980
ADA
1983
Delphi
1995
ASPEN
SIMULA
1967
C com
classes
C++
1985
OO
Internet
OO
Internet
JAVA
1995
C#
1999
ASPEN
ASPEN
Classes
ASPEN
Classes e Objetos
Classe: modelo esttico, que especifica
caractersticas representadas por um dado
conceito, definindo sua estrutura e
comportamento.
ASPEN
Encapsulamento
ASPEN
Herana
ASPEN
Herana
Pessoa
SuperClasse
SuperClasse
nome: String
sexo: char;
dataNasc: Date;
Aluno
matricula: long;
Ator
Contrato: Cont;
SubClasse
Personagem
Caracterizaca
Novela: String;
ASPEN
10
ASPEN
Herana Simples:
Subclasse tem uma nica superclasse
Herana Mltipla:
Subclasse pode ter mais de uma superclasse
Problemas:
Coliso de Nomes
Herana Repetida
11
Herana Mltipla
B1
f ()
B2
g ()
B3
g ()
12
Polimorfismo
ASPEN
Definio:
Capacidade de uma varivel se referir em
tempo de execuo a objetos de diversas
classes.
Exemplo:
p: Poligono; r: Retangulo;
p:= r;
Atribuio Polimrfica:
x:= y vlida se tipo de y for uma subclasse
do tipo de x
13
Classes Abstratas
ASPEN
14
ASPEN
ASPEN
16
Abap Objects
ASPEN
Classes no Abap 4
ASPEN
18
ASPEN
19
Controle de Visibilidade
ASPEN
20
ASPEN
21
Declarando mtodos
Assinatura
ASPEN
22
Implementando mtodos
ASPEN
Sem assinatura
Mtodos estticos s podem acessar atributos
estticos
Comando raise <E> ativa uma exceo
Comando raise event ativa a chamada para um
evento
Chamadas usando Call Method
23
ASPEN
Tipo Data(Exemplo)
Class ZCL_EXEMPLO DEFINITION.
public section.
methods: set_table
importing it_dados type table.
private section.
data: tabela type ref to data.
Endclass.
Class ZCL_EXEMPLO IMPLEMENTATION.
Method set_table.
field-symbols: <t_dados> type standard table.
GET REFERENCE OF it_dados INTO tabela.
ASSIGN tabela->* TO <t_dados>.
Endmethod.
Endclass.
ASPEN
25
Mtodo Construtor
ASPEN
Instance Constructor(METHODS
CONSTRUCTOR )
Static Constructor(CLASS-METHODS
CLASS_CONSTRUCTOR )
No possui parametro de sada
Constructor palavra reservada
Chamada implcita usando Create Object
26
Prtica
ASPEN
27
Herana
ASPEN
28
O Uso do objeto ME
Class zcl_Client definition.
public section.
data: name(50) value Client1.
methods: Create_server .
Endclass.
Class zcl_server definition.
public section.
data: name(50) value Server1.
methods: ack
importing p_client type ref to zcl_client.
Endclass.
ASPEN
29
O Uso do objeto ME
Class zcl_Client implementation.
Method Create_server.
data: l_server type ref to zcl_server.
create object l_server.
call method l_server->ack
exporting
p_client = ME.
Endmethod.
Endclass.
Class zcl_server implementation.
method ack.
write: me->name, Criado por:, p_client->name.
endmethod.
Endclass.
ASPEN
30
Polimorfismo
ASPEN
Interfaces
ASPEN
32
Interfaces
ASPEN
33
Exemplos: Interfaces
Interface Window.
events:
minimize exporting status type i,
maximize exporting status type i,
restore exporting status type i.
Endinterface.
Class cl_dialog_window definition.
public section.
interfaces window.
Endclass.
ASPEN
34
Prtica(Herana e polimorfismo)
ASPEN
35
ASPEN
36
Prtica (Interfaces)
ASPEN
37
Eventos
ASPEN
Events(presente no definition).
Raise Event(presente no mtodo).
Set Handler - Associa quais objetos estaro
relacionados por eventos
Methods for events
Mtodos podem ser disparados por
chamadas explcitas ou por eventos.
38
Eventos
ASPEN
39
Prtica Eventos
CLASS account DEFINITION.
PUBLIC SECTION.
EVENTS DISPLAY_DEPOSITO EXPORTING value(valor) TYPE p.
METHODS: CONSTRUCTOR IMPORTING p_number TYPE c
p_cliente TYPE c
p_saldo TYPE p,
DEPOSITO
IMPORTING
p_valor TYPE p.
DATA: number(10).
PRIVATE SECTION.
DATA: saldo TYPE p DECIMALS 2,
cliente(10).
ENDCLASS.
CLASS cliente DEFINITION.
PUBLIC SECTION.
METHODS: display_deposito FOR EVENT inform OF account
IMPORTING valor sender,
constructor IMPORTING p_number TYPE c
p_name TYPE c.
DATA: codigo(10),name(40).
ENDCLASS.
ASPEN
40
Prtica Eventos(cont)
ASPEN
Dadas as classes...
Utilizando a classe ZCL_HANDLE_DATASET, carregar
o arquivos de Contas.
Criar os parmetros de entrada Conta e valor
depsito.
Para cada registro lido, instanciar um objeto da classe
Conta e um objeto da Classe Cliente nas tabelas
it_contas e it_clientes.
Efetuar depsito de acordo com parmetro de entrada.
A cada depsito efetuado disparar o mtodo
Display_deposito via evento.
41
Clausula Friends
ASPEN
42
ASPEN
Criar um report.
Criar uma classe cl_tabela com o atributo tabela do tipo (type
ref to data) e visibilidade private. No constructor, ter como
parmetro de entrada p_table type table. Acrescentar uma
clusula Friends com a classe cl_counter.
Criar uma classe cl_counter com o mtodo display_count que
deve imprimir o numero de linhas do parmetro p_obj_table
do tipo cl_tabela.
Instanciar 2 objetos da classe cl_tabela.
Instanciar 1 objeto da classe cl_counter.
Chamar o mtodo display_count duas vezes passando as
instancias de cl_tabela como parmetro.
43
CLASS-DATA e CLASS-METHODS
ASPEN
44
Criar um report.
Criar uma classe cl_instance_counter que deve conter o atributo
instances(esttico), os mtodos class_constructor(esttico),
constructor(instance) e display(instance), MSG_INIT(Estatico).
MSG_INIT(Estatico) Imprimir msg Inicio de alocacao de objetos.
Constructor(esttico) Imprimir mensagem Iniciando contagem....
Constructor(instance) Incrementa instances.
Display - imprime nmero de instancias.
No start-of-selection
Chamar metodo MSG_INIT
instanciar objetos vontade.
ASPEN
45
Excees: Introduo
ASPEN
46
ASPEN
TRY...CATCH
Exceo: erro ou um estado imprevisto, que no ocorre com
freqncia(dumps)
Idia: remover o tratamento de erros do fluxo normal de execuo,
de forma a no poluir o cdigo.
Tratador (ou Manipulador) de Exceo: bloco de cdigo para onde a
execuo desviada quando ocorre uma exceo
Primeira linguagem: PL/I (1964)
Atualmente: ADA, C++, Java, Delphi etc
Excees em linguagens de programao:
Como ativar uma exceo ?
Como especificar um tratador de excees ?
Como excees so propagadas?
Como retornar ao fluxo normal de execuo ?
47
ASPEN
48
Endtry.
Excees ocorridas no interior de um try so transferidas para o
catch correspondente
try.
...
perform divisao using 5 0. // ativa uma exceo
catch CX_SY_ZERODIVIDE. captura exceo
write: Diviso por zero.
Endtry.
ASPEN
49
ASPEN
50
Exemplo
ASPEN
Try.
perform AbraArquivo using nome.
perform TamanhoArquivo using nome
changing tam.
perform AloqueMemoria using tam
changing p.
catch CX_SY_FILE_OPEN
...
catch ZCX_TAM_ARQ
...
catch
CX_SY_EXPORT_BUFFER_NO_MEMORY
...
catch CX_ROOT
Endtry.
51
CX_ROOT
ASPEN
ASPEN
53
ASPEN
54
BADIS
ASPEN
55
ASPEN
ZCL_GERA_ALV
ZCL_HANDLE_DATASET
56
ASPEN
57