최초 작성일: 23년 1월 27일
최종 작성일:
목적 : alv 정복정복
01. Overview
1. object orientation이란 무엇인가?
과거의 정보 시스템은 input과 output의 관계로 정릐된 기능을 중심으로 이루어졌다.
그러나 객체 지향적 접근법에서는 실제 세계를 구조화 또는 추상화 하여 표현하는 객체에 초점을 맞추고 있다.
이러한 객체들은 구조를 나타내는 속성(attributes)과 기능을 표현하는 메서드(method)로 구성되어 있다.
프로그램 개발자 들는 추상화와 구체와 과정을 통하여 그들의 임무를 수행한다.
즉, 추상화 과정을 통하여 실세계의 상황을 간결하고 명확하게 모델링하게 되며
구체화 과정을 통하여 추상적 모델을 소프트웨어 오브젝트로 변환한다.
구조적인 프로그램 모델과 객체 지향 프로그램 모델을 구별하고 사용할 수 있어야 한다.
기본적으로 두 가지 프로그램 모델 모두 abap 프로그램에서 데이터를 선언하고 이 데이터를 어떻게 처리할 것인가에 대한 문제에 기초를 두고 있다.
기본적으로 두가지 프로그램 모델 모두 abap 프로그램에서 데이터를 선언하고 이 데이터를 어떻게 처리할 것인가에 대한 문제에 기초를 두고 있다.
절차적인 프로그램에서는 input과 output 값을 처리하는 재사용성의 기능을 제공하며
객체지향 프로그램 모델에서는 절차적인 구조에 클래스를 추가하여 상속을 정의하고 메서드를 호출하는 확장된 기능이 가능해졌다.
클래스의 상속 의 이점중 하나는 코드의 재사용이 가능하다는 점이다.
(여러개의 클래스에서 공통으로 사용되는 코드는 그들의 슈퍼 클래스 안에 놓일 수 있기 때문에 각각의 새로운 클래스는 굳이 같은 코드로 다시 정의할 필요가 없다.)
클래스는 데이터를 캡슐화 하고 클래스의 메서드를 호출하고 클래스와 독립적인 객체를 생성할 수 있게 되었다.
모든 객체는 하나의 개별 오브젝트로 작동하며, 이러한 오브젝트들의 조합으로 새로운 기능을 창출할 수 있게 되었다.
다시 말해, 객체 지향 개념은 소프트웨어를 여러개의 객체의 모임으로 생각하며 객체는 데이터와 관련 함수를 모아 놓은 것을 의미한다.
객체들은 비슷한 속성과 기능을 가질 수 있으며, 하나의 그룹으로 묶일 수 있다. 이렇게 유사한 객체들끼지 하나의 그룹으로 만드는 것을 클래스 라고 한다.
2. 절차적인 ABAP 프로그램에는 객체지향 개념이 필요없다?
3. 클래스와 객체의 관계
자동차 설계도와 자동차를 예를 들어 볼때, 자동차 설계도(클래스)는 자동차라는 제품(객체)을 정의한 것이며,
자동차(객체)를 만드는 데 사용된다.
클래스는 단지 객체를 생성하는 데 사용될 뿐이지 객체 그 자체는 아니다.
우리가 원하는 기능의 객체를 사용하려면, 먼저 클래스로부터 객체를 생성하는 과정이 선행되어야 한다.
자동차 설계도를 통해 자동차가 만들어진 후에야 사용할 수 있는 것이다. 모든 객체 지향 언어의 프로그래밍에서는 먼저 클래스를 작성하고 클래스로부터 객체를 생성하여 사용한다.
프로그래밍 언어에서의 객체는 어떠한 정보를 표현하기 위해 할당된 기억 장소를 의미하며
클래스는 그 기억 장소의 속성을 기술하는 구조에 대한 명칭이라고 정의 할 수 있다.
4. 인스턴스
클래스로부터 객체를 만드는 과정을 인스턴스화 라고 하며
어떤 클래스로부터 만들어진 객체를 그 클래스의 인스턴스라고 한다.
- class : 객체를 만들어 내는 설계도 또는 형판이다
- object: 객체는 물건/물체/대상/목적이라는 의미이며, 클래스의 인스턴스 이다
- object reference : 프로그램 내에서 객체의 속성과 메서드에 접근할 수 있도록 한다.
- attribute : 객체가 가지는 속성 또는 특성이다.
- method :객체의 행위를 정의한다.
- event: 서로 다른 클래스 간에 호출할 수 있는 메서드 이다.
02. Class
클래스는 객체의 골격(template) 또는 객체의 타입이라고 정의할 수 있다.
그리고 클래스는 객체의 추상화된 명세서 이다. 즉, 객체를 만드는 설계서 이다.
객체의 속송은 클래스 객체의 상태와 행위를 묘사하는 구성요소(component)에 의해 정의 된다.
1.Global/ Local Class
abap object에서 클래스는 global, local 변수로 선언할 수 있다.
시스템은 먼저 프로그램 내부의 정의된 local class를 탐색하고 존재하지 않으면 global 클래스를 찾게 된다.
프로그램 내에서 사용될 때는 global class, local class 간에 아무런 차이가 없다.
2. Class 구성 요소
클래스의 모든 요소는 선언부(definition)에서 선언된다.
구성 요소들은 클래스 내에서 객체의 속성을 정의한다.
클래스를 정의할때, 각 항목은 3개의 접근 제한 영역 중 한 곳에서 선언되어야 한다.
접근제한 영역은 클래스간의 외부 인터페이스를 정의한다.
클래스의 모든 항목은 클래스 내부에는 모두 보이지만, 선언 방식에 따라 다른 클래스에서는 인터페이스되지(보이지) 않을 수 있다. 클래스의 모든 항목은 같은 namespace에 존재하게 되며, 이것은 각 클래스 항목마다 유일한 이름을 가지게 된다는 것을 의미한다.
클래스에는 두가지 종류의 구성 요소가 존재한다. 각 클래스의 객체마다 존재하는 것과 인스턴스의 수에 상관없이 전체 클래스에서 오직 하나만 존재하는 것이 있다.
각 클래스의 객체 마다 존재하는 것은 instance-specific항목으로 인스턴스(instance component)라 한다. 이것은 클래스를 참고하여 객체를 생성하면 메모리에 생성되는 즉 객체를 생성할 때 마다 초기화 되는 항목들이다.
클래스에 오직 하나만 존재하는 구성요소는 static component라고 부르며 이것은 클래스 생성자(create object구문)을 만나면 프로그램이 종료할 때까지 메모리에 저장되며 클래스에 의존적인 항목이다.
abap 오브젝트에서 클래스는 다음 항목(attribute, method, event)들을 정의할 수 있다.
2-1. attribute
모든 abap 데이터 타입을 가질 수 있는 클래스의 내부 데이터 필드이다.
객체의 상태는 attribute의 콘텐츠에 의해 결정된다.
2-2.method
2-3. event
2-4. 접근제한 영역
03. Object
1. object reference
2. object 생성
3. object component 접근
4. 클래스에서 하나 이상의 인스턴스 생성
04. method
1. method 선언
2. method 구현
3. method 호출
4.동적인 method 호출
5. event handler method
6. constructor
05. Inheritance
1. inheritance
2. method 재정의
3. inheritance와 reference variable
4. Abstract / fianal method와 class
5. 클래스 구성 요소의 namespace
6. inheritance 와 static attricute
7. inheritance와 constructor
06. interface
1. interface
2. interface 정의
3. interface 구현
4. interface reference
5. alias name 사용
07. event
1. event trigger
2. handling event
08. 클래스 빌더 (SE24)
1. 통합(Integration)
2. 클래스 빌더를 이용하여 클래스 생성하기
3. 클래스 빌더를 이용한 테스트
4. global 클래스를 활용한 소스 코드
'SAP셀프스터디 > 22일만에 이지아밥 1회독 하기' 카테고리의 다른 글
[schedule] 이지아밥 1회독 - 23년 2월 (0) | 2023.02.05 |
---|---|
[chapter15] GRIID ALV(ABAP List View) (0) | 2023.01.27 |
[chapter05] Internal Table (0) | 2023.01.23 |
[chapter02] Data Type (0) | 2023.01.23 |
[chapter07] ABAP Dictionary (0) | 2023.01.17 |