-
[ABAP] #32 ABAP OOPSAP/ABAP 2026. 1. 16. 22:58
ABAP의 발전 배경
- ABAP은 원래 절차지향 언어
- 시스템 규모가 커지고 복잡해지면서
→ 유지보수성, 재사용성, 확장성의 한계 발생 - 그 결과 객체지향 개념을 도입한 ABAP Objects가 추가됨
그래서 현재 ABAP은 절차지향과 객체지향을 혼합해서 사용하는 언어이다.
절차지향 프로그래밍 (Procedural Programming)
- 프로그램 중심 구조
- 데이터와 로직이 하나의 단위로 캡슐화되지 않음
- 데이터는 보통 글로벌 데이터
- 함수(서브루틴, Function Module)는 데이터를 직접 참조
- 캡슐화가 약함
※ 캡슐화
객체지향의 핵심 개념 중 하나로, 외부에서 데이터를 함부로 접근하지 못하게 보호하는 것이다.
절차지향에서의 캡슐화 시도
Function Module을 사용하여 로직을 모듈화함으로써 어느 정도 구조화는 가능.
Function Group을 사용하면 여러 Function Module을 하나의 그룹으로 묶고, 그룹 내부 글로벌 데이터를 공유할 수 있음.
다만,
- Function Group은 독립적인 개체(객체)가 아님
- 인스턴스 개념이 없음
- 한 번에 하나의 로직 흐름만 처리 가능
- 동시에 여러 상태(State)를 가진 처리 불가
이러한 한계를 해결하기 위해 객체지향이 등장
객체지향 프로그래밍 (Object-Oriented Programming)
- 데이터와 로직을 하나로 묶음
- 객체 단위로 생각
- 다중 객체 생성 가능
- 각 객체는 독립적인 상태를 가짐
ABAP Objects의 핵심 특징
1. 캡슐화 (Encapsulation)
- 데이터는 PRIVATE / PROTECTED 영역에 선언
- 외부에서는 메서드를 통해서만 접근 가능
- 데이터 보호 및 안정성 향상
2. 다중 객체 생성 가능
DATA lo_obj1 TYPE REF TO lcl_example. DATA lo_obj2 TYPE REF TO lcl_example.- 동일 클래스에서 여러 객체 생성 가능
- 각 객체는 서로 독립적인 데이터 상태
- 한 객체의 변경이 다른 객체에 영향 없음
3. 재사용성과 유지보수성 향상
- 클래스 단위로 기능 관리
- 수정 범위 최소화
- 대규모 시스템에 적합
객체지향의 3대 속성 (ABAP 기준)
1. 상속
- 부모 클래스(Super Class)의 속성과 메서드를 자식 클래스(Sub Class)가 물려받음
- 코드 재사용
- 공통 로직의 중앙 관리
2. 다형성
- 동일한 메서드 호출이 객체의 실제 타입에 따라 다른 동작을 수행
- 같은 메서드 이름
- 다른 구현 결과
3. 이벤트 제어
- 특정 이벤트 발생 시 자동으로 메서드 실행
- 비동기적 흐름 제어
- GUI, ALV, 컨트롤 프로그래밍에서 많이 사용
- 객체 간 결합도 감소
SET HANDLER lcl_handler=>on_finished FOR lo_obj.
객체지향 프로그래밍의 장점
구조적 장점
- 소프트웨어 구조 향상
- 역할과 책임이 명확
- 일관성 있는 설계 가능
개발·운영 측면
- 유지보수 용이
- 기능 확장 쉬움
- 오류 발생 가능성 감소
프로젝트 관점
- 분석 / 설계 단계에 유리
- 대규모 시스템에 적합
- 재사용성 높음
결과적으로 심플하고 안전한 프로그램 구조이다.
※ 기존 로직은 절차지향으로 유지하고,
확장성과 유지보수가 필요한 영역에 객체지향을 적절히 혼합하여 사용하는 것이 가장 이상적이다.
UML (Unified Modeling Language)
UML은 객체지향 시스템을 시각적으로 표현하기 위한 표준 모델링 언어이다.
객체 간 관계와 구조를 명확히 하여 분석 및 설계 단계에서 활용된다.
1. 클래스 다이어그램 (Class Diagram)
- 클래스의 구조 표현
- 클래스 간 관계 표현
(1) 클래스의 구조

접근 제어자 표기
기호 의미 ABAP + public PUBLIC # protected PROTECTED - private PRIVATE (2) 클래스 간 관계
(1) 연관 (Association)
- “서로 알고 있다”
- 객체 참조 관계
- ABAP 프로그램에서 TYPE REF TO
A ─── B(2) 집합 / 합성 (Aggregation / Composition)
- has-a 관계
Aggregation (약한 소유)
A ◇── B- B는 A 없이도 존재 가능
Composition (강한 소유)
A ◆── B- A가 사라지면 B도 함께 소멸
(3) 일반화 (Generalization = 상속)
Child ───▷ Parent- Child가 Parent를 상속
- ABAP: INHERITING FROM
(4) 의존 (Dependency)
A - - - > B- 일시적으로 사용
- 메서드 파라미터, 로컬 변수
2. 시퀀스 다이어그램 (Sequence Diagram)
- 객체 간 메시지 흐름
- 실행 순서 표현

'SAP > ABAP' 카테고리의 다른 글
[ABAP] #34 ABAP OOP - Class (2) (0) 2026.01.25 [ABAP] #33 ABAP OOP - Class (1) (0) 2026.01.16 [ABAP] #31 Number Range (0) 2026.01.16 [ABAP] #30 LUW & Lock (0) 2026.01.16 [ABAP] #29 OPEN SQL DML (0) 2026.01.11