목록으로

Object & Function

Pml Basic 1

Pml Beginner와는 다르게 Basic 부분에서는 AVEVA에서 기본 제공하는 Object 및 Function 에 대해 설명할 예정입니다 순서대로 학습할 필요 없이 코딩하면서 필요하다 싶은 Object들만 읽으면 될 것 같습니다.

Object란?

PML은 객체 지향 개념을 사용하는 언어입니다.

여기서 객체 는 OBJECT를 말합니다.

여기서 OBJECT가 무엇이냐 하면 (STRING, REAL, ARRAY) 뿐만 아니라

(COLLECTION, TABLE, BLCOK)등 모든 데이터는 Object(객체)로 다루어집니다.

예를들어 설명해보겠습니다.

1. String 객체

설명: |test1|, 'test2'와 같은 문자열은 String 객체로 취급됩니다. PML에서는 문자열도 객체로 간주됩니다.

2. Real 객체

설명: 1, 2.5, 3 등은 Real 객체로, 실수 또는 정수 형태의 숫자를 의미합니다.

3. Array 객체

설명: Array 객체는 각 인덱스에 다양한 유형의 객체(문자열, 숫자, 다른 배열 등)를 저장할 수 있는 자료 구조입니다.

4. Collection 객체

설명: Collection 객체는 데이터베이스 요소를 필터링하거나 범위 내의 데이터를 모아서 Array 객체로 반환하는 역할을 합니다.

뿐만아니라 수많은 Object들이 있으며 원할경우 Object를 생성하여 사용하여도 됩니다.

결론적으로 말하면 PML에서의 Object란 데이터를 담고 있는 일종에 컨테이너 라고 생각하면 되고

메쏘드를 통해 다양한 작업을 수행할 수 있습니다.

1. Object 선언

선언 방법 : !변수 = Object Object이름()

예시:

!A = Object string()
!B = Object real()
!C = Object array()
!D = Object Collection()

string이던 Real이던 보통 문자열에 값을 바로 할당하여 사용합니다.

!A = |TEST|

!B = 1

다만 stinrg 혹은 Real 도 하나의 객체이기 떄문에 Object를 명시적으로 선언 할 수 있습니다.

2. Method 사용

PML의 각 Object는 다양한 메소드를 내장하고 있습니다.

예를 들어, String Object는 문자열을 조작하기 위한 여러 가지 메소드를 가지고 있으며, 이를 통해 문자열을 변형하거나 특정 작업을 수행할 수 있습니다.

예를 들어 :

  • replace(): 문자열에서 특정 부분을 다른 문자열로 대체합니다.
  • upcase(): 문자열을 대문자로 변환합니다.
  • lowcase(): 문자열을 소문자로 변환합니다.

예시:

!A = Object String()  $* string에서는 생략해도 상관없습니다
!A = |Test|

q var !A.replace('T','A')

q var !A.upcase()

Q var !A.lowcase()

결과:

<string> 'Aest'
<string> 'TEST'
<string> 'test'

Function

PML에서 Function(함수)는 특정 작업을 수행하고 그 결과를 반환하는 재사용 가능한 코드 블록입니다. 함수는 코드를 모듈화하고 유지보수를 쉽게 하며, 중복된 작업을 피할 수 있게 도와줍니다.

1. Function 정의

PML에서는 DEFINE FUNCTION을 사용하여 함수를 정의합니다.

함수는 이름, 매개변수(입력값), 반환 타입을 가질 수 있으며, 함수 내부에서 실행할 작업을 지정할 수 있습니다.

기본 문법:

DEFINE FUNCTION !!함수이름(매개변수1 is 타입1, 매개변수2 is 타입2) is 반환타입
    -- 함수 내용
    RETURN 반환값
ENDDEFINE

매개변수: 함수에 전달되는 입력값으로, 각각의 매개변수는 특정 데이터 타입(예: STRING, REAL)을 가져야 합니다.

반환타입: 함수가 결과값을 반환할 때 그 결과값의 데이터 타입을 지정합니다.

!!: 함수 이름은 반드시 !!로 시작하여 함수임을 명확히 구분합니다.

파일이름: PMLLIB 경로 안 .PMLFNC 확장자의 형태로 존재해야 합니다.

2. 예시 더한 값 반환

다음은 두 숫자를 더한 결과를 반환하는 함수 예시입니다:

pmlfnc:

DEFINE FUNCTION !!AddFunction(!a is REAL, !b is REAL) is REAL
    !result = !a + !b
    RETURN !result
ENDDEFINE

이 함수는 두 개의 숫자를 입력받아 더한 값을 반환합니다. 함수를 호출하는 방식은 다음과 같습니다:

예시:

!res = !!AddFunction(5, 10)
q var !res

결과:

 <real> 15

위 코드는 510을 더한 결과를 출력합니다.

이 함수는 주어진 메시지를 출력하는 단순한 절차입니다.

만약 RETURN 없이 사용하고 싶을 경우에는 아래처럼 사용하면 됩니다

pmlfnc:

DEFINE FUNCTION !!AddFunction(!a is REAL, !b is REAL)
    !result = !a + !b
    $p $!result
ENDDEFINE

이 함수는 두 개의 숫자를 입력받아 더한 값을 CommandWindow 에 출력합니다.

예시:

!res = !!AddFunction(5, 10)

결과:

 <real> 15

5. Function의 장점

재사용성: 함수를 한 번 정의해두면 여러 곳에서 재사용할 수 있습니다.

모듈화: 코드를 작은 단위로 나누어 복잡한 문제를 쉽게 처리할 수 있습니다.

유지보수: 코드의 중복을 줄여 유지보수와 수정이 쉬워집니다.

요약

PML에서 Function은 입력값(매개변수)을 받아 특정 작업을 수행한 후, 결과를 반환하는 코드 블록입니다. 함수는 코드의 효율성을 높이고, 가독성과 재사용성을 개선하는 데 중요한 역할을 합니다.

이렇게 object와 Function 에 대해 설명하긴 하였으나….

이 글만 봐서는 이해가 잘 되지 않으실 수 도 있을 것 같습니다.

각종 예제들과 Object에 관한 글들을 읽어보고 천천히 이해하시면 될 것 같습니다.

감사합니다.