2003. 10. 22. 14:36

강좌1

▨ 클래스
  저는 표준모듈과 클래스모듈과의 차이점은 알고 있지만 어느때 표준과 클래스모듈을 적절히 사용을 해야 하는지에 대해서는 잘 모르겠습니다.
  저는 사용자정의프로시져를 주로 이용을 하고 있거든요. (경력이 짧은 관계로..)




▨ 클래스의 요소
- 클래스에서는 외부에 공개를 할꺼냐 ..... Public
  아니면 공개를 하지 않을꺼냐 ........... Private
  라는 두가지로 선언을 할 수 있습니다.

- Public로 선언
  Public로 선인이 되었다면 외부로부터 변수를 마음껏 사용을 할 수 있습니다.
  여기서 마음껏이라는 건 접근을 허용할 뿐 아니라 그 값을 변화 시킬 수 있다는 얘기입니다.
  쉽게 파일의 쓰기와 읽기 권한을 준다고 보시면 됩니다.

- Private로 선언
  외부에서는 절대로 접근을 할 수 없으면 클래스(오브젝트)안에서만 사용을 할 수 있습니다.


▨ 클래스의 Property(속성)
  속성 프로시져에는 Property Get와 Property Let라는 두개의 프로시져가 있습니다
  만약 모두 Public로 선언을 한다면 외부로부터 값을 전달 받고 또 줄 수 있다는 겁니다.

  - Property Get
    Property Get는 외부에 자료를 전달 해줄때 사용을 합니다.
    다른 말로는 클래스에 선언된 변수를 외부에 전달해줍니다.
    사용방법은
    Public Property Get MyData() As Integer

    End Sub

  - Property Let
    Property Let는 외부에 자료를 전달 받을 때 사용을 합니다.
    사용방법은
    Public Property Let MyData(Value As Integer)

    End Sub

  만약에 표준모듈을 만들어서 사용 하실 수 있는 분이라면 위의 2개의 선언문에서 보는 봐와 같이 차이점을 알 수 있을 겁니다.
  Get는 외부로부터 값을 전달 해준는 것....Function과 비슷
  Let는 외부로부터 값을 전달 받는 것......Sub나 Function에 인수가 전달 받는 것

  표준모듈로 설명을 하자면
  Function MyData(Value1 as Integer, Value2 as Integer) as Integer

  End Function
  이건 외부에서 특정한 값(Value1, Value2)라는 값을 전달 받아서 특정한 일을 하고 그 결과 값을 Integer형으로 전달해주는 겁니다.
  이걸 클래스에서는 따로 구분을 짓는 거죠.
  전달 받는 것과 (Property Let) 전달 받은 걸 가지고 결과 값을 전달 해주는 것 (Property Get)으로


  ※ 참고로 VB.Net에서는 하나의 함수 안에 두개의 속성이 존재합니다.



▨ 예제
  다음은 간단하게 숫자를 클래스에 전달하고 클래스에서는 전달 받은 값에 100을 더해서 그 결과 값을 다시 돌려주는 예제 입니다.
  - 먼저 표준EXE에서 폼(Form1)과 클래스모듈(Class1)을 추가를 합니다.
  - 폼에 Command Button을 하나 추가를 하고 아래와 같이 코드창에 코딩을 하고
    F8(한단계씩 코드 실행)를 눌러서 한줄씩 실행을 시켜보면 소스에 있는 번호순서대로 실행을 합니다.

*** Class1에 ***
Private MyValue As Integer
4) Public Property Let MyData(Value As Integer)
5) MyValue = Value
6) End Property

8) Public Property Get MyData() As Integer
9) MyData = MyValue + 100
10) End Property

*** Form1에 ***
1) Private Sub Command1_Click()
    Dim Result As Integer
    Dim C1 As Class1

2) Set C1 = New Class1

3) C1.MyData = 100
7) Result = C1.MyData

11) MsgBoxt Result
End Sub

번호 3번에서 클래스의 Property Let의 프로시져(4번)로 이동을 하는 걸 알 수 있을 겁니다.
위에서 설명을 했듯 Property Let는 외부로부터 값을 전달 받는 것을 알 수 있을 겁니다.
반대로 7번에서 클래스의 값을 Result라는 변수에 저장을 할려고 할때는
클래스의 Property Get(8번)의 프로시져를 실행하는 것을 볼 수 있을 겁니다.

위 예제로 클래스에서 사용하는 두개의 프로시져에 대해서 설명을 했습니다.

오늘은 여기까지 입니다.
다음에는 위 소스를 가지고 좀 더 자세히 분석을 해보죠.