티스토리 뷰

LabVIEW 클래스는 객체와 관련된 데이터 뿐만 아니라 데이터를 실행할 수 있는 메소드를 정의합니다. 다른 객체지향 프로그래밍 언어와 동일하게 캡슐화와 상속을 통해서 코드에 대한 모듈화도 가능합니다.


하지만 LabVIEW OOP와 타 OOP언어와의 차이도 있습니다. 바로 데이터를 처리하는 프로퍼티의 공개 범위인데요. 프로퍼티의 경우 Private의 타입으로만 사용을 할 수 있습니다. 따라서 컨트롤에 포함이 되는 프로퍼티의 값을 설정 및 가져오기 위해서는 Set/Get 함수를 VI를 통해서 개발해야 합니다. 


LabVIEW 클래스의 확장자는 .lvclass 입니다. LabVIEW 클래스를 만들기 이전에 캡슐화에 대해서 이야기를 해볼까 합니다. 


LabVIEW OOP의 캡슐화


LabVIEW의 클래스는 데이터와 이에 대한 메소드로 구분이 되어 있습니다. 위에서 언급한 것과 같이 데이터는 항상 Private 타입입니다. 이에 대해서 데이터에 접근하기 위해서는 Set/Get에 대한 함수(VI)를 구현해야 합니다. 


이렇게 구현하는 것 자체가 LabVIEW 클래스의 캡슐화를 처리하는 것입니다. 캡슐화는 클래스 멤버 내에서만 클래스 내부의 데이터에 접근이 가능하게끔 만드는 것을 의미합니다. LabVIEW는 절대적으로 데이터 타입을 Private으로 선언하게 끔 만들기 때문에 다른 OOP 언어에 비해 캡슐화에 대한 강도가 강하다고 볼 수 있습니다. 


클래스의 함수(VI)는 공개 범위 지정이 가능합니다. 공개 범위에 대한 부분은 아래와 같습니다.

 

  • Public : 모든 VI에서 클래스의 멤버 VI 호출이 가능합니다.

  • Friend(공동영역) : 같은 클래스에 있는 VI, 클래스의 Friend, 클래스의 Friend 라이브러리에서 멤버 VI 호출이 가능합니다(파란색). 공동영역으로 지정시에 다이나믹 디스패치 VI는 사용할 수 없습니다. 

  • Protected : 동일 클래스 혹은 하위 클래스에서만 호출이 가능합니다(노란색).

  • Private : 동일 클래스에서만 호출이 가능합니다(붉은색). 

  • 미지정 : 폴더 선택시 가능한 옵션이며, 기본 설정 옵션은 Public이며 설정된 폴더 내의 모든 아이템에 대해서 접근권한이 동일하게 설정됩니다. 

자 그럼 LabVIEW 클래스를 한번 만들어 보도록 합시다. 


LabVIEW에서 OOP 사용을 위한 클래스 생성을 하기 위해서는 프로젝트 기반으로 코딩을 해야 합니다. 따라서 프로젝트를 하나 생성합니다.


프로젝트 생성이 완료되면 아래와 같이 내 컴퓨터 - 새로 만들기 - 클래스를 누릅니다. 




클래스 메뉴를 누르게 되면 새 클래스 창이 뜨게 됩니다. 



아래와 같이 클래스 이름을 지정하고, 확인버튼을 누릅니다. 



확인 버튼을 누르면 프로젝트 상에서 MyClass 라는 이름을 가진 클래스가 생성이 됩니다. 프로젝트 내의 클래스가 생성된 결과는 아래의 그림을 통해서 확인할 수 있습니다. 



클래스는 기본적으로 동일한 이름의 컨트롤(ctl)을 가지고 있습니다.


이 컨트롤이 위에서 언급한 클래스내의 데이터라고 보시면 됩니다. 컨트롤을 더블 클릭하면 데이터 클러스터가 하나 존재합니다. 여기에서 자신이 사용하고자는 데이터를 아래와 같이 구성할 수 있습니다.


기본 컨트롤 파일의 클래스 프라이빗 데이터의 클러스는 비어있습니다.

아래와 같이 자신이 사용하기를 원하는 데이터 타입에 따라 컨트롤을 추가하면 됩니다. 


아래의 그림은 Year, Color에 대한 숫자형 컨트롤과 Model에 대한 문자열 컨트롤을 추가한 결과입니다. 




위의 데이터 클러스터의 공개 범위는 Private이며, 이는 위에서 설명한 봐와 같이 무조건 Private입니다. 다른 공개 범위를 설정할 수는 없습니다.


이 글에서는 LVOOP의 가장 기본적인 개념인 LabVIEW 클래스와 캡슐화에 대해서 알아보았습니다.

그럼 이만 줄이겠습니다.


이 글이 도움이 되셨으면 아래의 하트를 눌러주세요.


댓글