🧱 Programação Orientada a Objetos (OO)
Introdução à programação orientada a objetos em ABAP: classes, métodos, interfaces, herança e padrões de design.
📖 O que vais aprender
- Criar classes e objetos
- Definir e implementar métodos
- Atributos públicos, protegidos e privados
- Construtores (CONSTRUCTOR)
- Interfaces e polimorfismo
- Herança e redefinição de métodos
- Padrões de design (Singleton, Factory, etc.)
- Eventos e tratadores
🎯 Ordem de Aprendizagem
1️⃣ Classes e Objetos
Como definir e usar classes locais e globais.
Exemplo simples:
CLASS lcl_calculadora DEFINITION.
PUBLIC SECTION.
METHODS: somar IMPORTING iv_a TYPE i iv_b TYPE i
RETURNING VALUE(rv_result) TYPE i.
ENDCLASS.
CLASS lcl_calculadora IMPLEMENTATION.
METHOD somar.
rv_result = iv_a + iv_b.
ENDMETHOD.
ENDCLASS.
START-OF-SELECTION.
DATA(lo_calc) = NEW lcl_calculadora( ).
DATA(lv_soma) = lo_calc->somar( iv_a = 10 iv_b = 20 ).
WRITE: / |Resultado: { lv_soma }|.
2️⃣ Atributos e Métodos
Controlar acesso aos dados da classe e definir comportamentos.
3️⃣ Construtores
Inicializar objetos com CONSTRUCTOR.
4️⃣ Interfaces
Definir contratos que classes devem implementar.
5️⃣ Herança
Reutilizar código através de INHERITING FROM.
6️⃣ Polimorfismo
Tratar objetos diferentes através da mesma interface.
7️⃣ Factory Pattern
Padrão de criação de objetos.
8️⃣ Singleton Pattern
Garantir uma única instância de uma classe.
🧠 Conceitos Importantes
Visibilidade de Atributos
| Seção | Acesso |
|---|---|
PUBLIC SECTION |
Acessível de qualquer lugar |
PROTECTED SECTION |
Acessível na classe e subclasses |
PRIVATE SECTION |
Apenas dentro da classe |
Criar Classes Globais vs. Locais
- Globais: SE24 / SE80 → reutilizáveis em todo o sistema
- Locais: dentro do programa → escopo limitado
💡 Exemplo com Interface
INTERFACE lif_forma.
METHODS calcular_area RETURNING VALUE(rv_area) TYPE f.
ENDINTERFACE.
CLASS lcl_circulo DEFINITION.
PUBLIC SECTION.
INTERFACES lif_forma.
METHODS constructor IMPORTING iv_raio TYPE f.
PRIVATE SECTION.
DATA mv_raio TYPE f.
ENDCLASS.
CLASS lcl_circulo IMPLEMENTATION.
METHOD constructor.
mv_raio = iv_raio.
ENDMETHOD.
METHOD lif_forma~calcular_area.
CONSTANTS lc_pi TYPE f VALUE '3.14159'.
rv_area = lc_pi * mv_raio * mv_raio.
ENDMETHOD.
ENDCLASS.
START-OF-SELECTION.
DATA(lo_circulo) = NEW lcl_circulo( iv_raio = 5 ).
DATA(lv_area) = lo_circulo->lif_forma~calcular_area( ).
WRITE: / |Área do círculo: { lv_area }|.
🚀 Próximos Passos
- Comece por Classes e Objetos
- Continue com Atributos e Métodos
- Aprenda sobre Construtores
- Explore padrões de design em projetos reais
- Avance para ALV OO para aplicar OO em interfaces
Tags: #OO #Classes #ABAP #Programação-Orientada-Objetos