본문 바로가기

Study

Study 14

Interface

인터페이스는 프로토콜(규약)을 의미한다.

 

인터페이스는 어트리뷰트, 메소드의 정의만 선언할 수 있고 구현은 직접 선언할 수 없다.

직접 선언할 수 없다면 구현은 어디서 할까? 바로 정의되어져 있는 메소드를 필요한 클래스에서 상속받아 각각의 클래스에서 구현하면 된다.

 

인터페이스를 사용하는 이유는 다음과 같다.

클래스는 서로 속성이 다르기 때문에 세분화가 어렵고, 슈퍼클래스가 존재할 수 없지만, 각각의 클래스에서 공통적으로 사용할 수 있는 컴포넌트는 존재할 수 있어서이다. 이때 공통적으로 사용할 수 있는 컴포넌트로 인터페이스에 서비스, 어트리뷰트로 정의한다.

 

이제 Interface를 선언해보자

1. 인터페이스를 정의한다. 인터페이스를 정의할 때는 INTERFACE <인터페이스 이름>. METHODS <메소드 이름>. ENDINTERFACE. 구문으로 온다.

2. 인터페이스를 사용하기 위해선 INTERFACES: <인터페이스 이름> 형식을 사용하며, 클래스의 정의 부분에 PUBLIC SECTION에 구문을 선언해야 한다.

3. 인터페이스를 구현하기 위해선 클래스의 구현 부분에 <인터페이스 이름>~<메소드 이름>을 선언하면 된다.

* 인터페이스 사용 시 형식이 길어질 수 있기 때문에 인터페이스 컴포넌트에 별명을 부여할 수 있다.

인터페이스도 상속 개념이기 때문에 업캐스트, 다운캐스트가 가능하다.

 

클래스에선 부모 클래스가 여러 자식 클래스를 가질 수 있지만, 자식 클래스는 하나의 부모 클래스만 가질 수 있다.

하지만 인터페이스는 자식 클래스가 여러 부모 클래스를 가질 수 있다. 그렇기에 인터페이스는 다중 상속이 가능하다.

 

인터페이스를 사용하면 소프트웨어의 확장이 쉽다.


Class

Local Class: ALV에서 이벤트 처리할 때만 사용

Global Class: ALV에서 이벤트 처리할 때를 제외한 대부분의 작업에서 사용 게시글에선 글로벌 클래스 생성만 다룬다.

 

Global Class 생성

1. 클래스 생성: SE24에서 생성 가능, 설명 필수 입력

2. 클래스의 어트리뷰트 입력

3. 메소드 추가

4. CLASS_CONSTRUCTOR에 소스 코드 입력

5. CONSTRUCTOR의 파라미터로 이동하여 파라미터 입력, 익셉션 입력

6. 메소드마다 소스코드 입력

Signiture 버튼을 클릭하면 설정한 파라미터와 익셉션을 확인할 수 있다.

결과를 확인하기 위해 F8을 눌러 클래스를 실행시키고 Instance 버튼을 클릭하여 테이블에 있는 값을 입력한다.

정상적인 결과면 빨간 네모에 있는 값이 나올 것이며, 정상적이지 않을 경우 not instantiated 문장이 출력된다.


Global Interface

글로벌 인터페이스 생성: 글로벌 인터페이스는 'ZIF_', 'YIF_'로 시작해야 한다.

메소드를 작성한다.

 

기존에 만들었던 ZCL_C24_VEHICHLE 클래스에 인터페이스를 추가하는 방법은 다음과 같다.

ZCL_C24_VEHICHLE 클래스 -> Interface 탭 페이지 -> 생성한 인터페이스를 넣어줍니다.

인터페이스를 넣어주고 실행하면 인터페이스의 메소드가 ZCL_C24_VEHICHLE 클래스에 추가된다.

 

'Study' 카테고리의 다른 글

Study 16  (0) 2024.02.20
Study 15  (0) 2024.02.17
Study 13  (1) 2024.02.14
Study 12  (1) 2024.02.09
Study 11  (0) 2024.02.06