연습: 인터페이스 만들기 및 구현
업데이트: 2007년 11월
인터페이스는 속성, 메서드 및 이벤트의 특징을 설명하지만 구현에 대한 세부적인 사항은 구조체나 클래스에서 처리합니다.
이 연습에서는 인터페이스를 선언 및 구현하는 방법을 보여 줍니다.
참고: |
---|
실제 설정이나 버전에 따라서 화면에 나타나는 대화 상자와 메뉴 명령이 도움말의 설명과 다를 수 있습니다. 설정을 변경하려면 도구 메뉴에서 설정 가져오기 및 내보내기를 선택합니다. 자세한 내용은 Visual Studio 설정을 참조하십시오. |
인터페이스를 정의하려면
새 Visual Basic Windows 응용 프로그램 프로젝트를 엽니다.
프로젝트 메뉴에서 모듈 추가를 클릭하여 새 모듈을 프로젝트에 추가합니다.
새 모듈의 이름을 Module1.vb로 지정하고 추가를 클릭합니다. 그러면 새 모듈에 대한 코드가 표시됩니다.
Module 및 End Module 문 사이에 Interface TestInterface를 입력한 다음 Enter 키를 눌러 Module1 내에 TestInterface라는 인터페이스를 정의합니다. 코드 편집기가 Interface 키워드를 들여 쓰고 End Interface 문을 추가하여 코드 블록을 구성합니다.
Interface 및 End Interface 문 사이에 다음 코드를 삽입하여 인터페이스에 대한 속성, 메서드 및 이벤트를 정의합니다.
Property Prop1() As Integer Sub Method1(ByVal X As Integer) Event Event1()
구현
여기서 인터페이스 멤버를 선언하는 데 사용된 구문은 클래스 멤버를 선언하는 데 사용되는 구문과 다릅니다. 이러한 차이는 인터페이스는 구현 코드를 포함할 수 없기 때문에 생기는 것입니다.
인터페이스를 구현하려면
End Interface 및 End Module 문 사이에 다음 문을 추가한 다음 Enter 키를 눌러 이름이 ImplementationClass인 클래스를 Module1에 추가합니다.
Class ImplementationClass
통합 개발 환경에서 작업하는 경우, Enter 키를 누르면 코드 편집기에서 짝이 되는 End Class 문이 삽입됩니다.
다음 Implements 문을 ImplementationClass에 추가하여 해당 클래스가 구현하는 인터페이스의 이름을 지정합니다.
Implements TestInterface
Implements 문이 클래스나 구조체의 맨 위에 다른 항목들과 별도로 나열되면 해당 클래스나 구조체가 인터페이스를 구현한다는 것을 뜻합니다.
통합 개발 환경에서 작업하는 경우, Enter 키를 누르면 TestInterface에 필요한 클래스 멤버가 코드 편집기에서 구현되므로 다음 단계로 건너뛸 수 있습니다.
통합 개발 환경에서 작업하는 경우가 아니라면 MyInterface 인터페이스의 모든 멤버를 직접 구현해야 합니다. ImplementationClass에 다음 코드를 추가하여 Event1, Method1 및 Prop1을 구현합니다.
Event Event1() Implements TestInterface.Event1 Public Sub Method1(ByVal X As Integer) Implements TestInterface.Method1 End Sub Public Property Prop1() As Integer Implements TestInterface.Prop1 Get End Get Set(ByVal value As Integer) End Set End Property
Implements 문에는 인터페이스 이름과 구현될 인터페이스 멤버의 이름이 지정됩니다.
속성 값이 저장된 클래스에 전용 필드를 추가하여 Prop1의 정의를 완료합니다.
' Holds the value of the property. Private pval As Integer
property get 접근자로부터 pval의 값을 반환합니다.
Return pval
property set 접근자에서 pval의 값을 설정합니다.
pval = value
다음 코드를 추가하여 Method1의 정의를 완료합니다.
MsgBox("The X parameter for Method1 is " & X) RaiseEvent Event1()
인터페이스의 구현을 테스트하려면
솔루션 탐색기에서 사용자 프로젝트에 대한 시작 폼을 마우스 오른쪽 단추로 클릭한 다음 코드 보기를 클릭합니다. 편집기가 시작 폼에 대한 클래스를 표시합니다. 기본적으로 시작 폼의 이름은 Form1입니다.
Form1 클래스에 다음 testInstance 필드를 추가합니다.
Dim WithEvents testInstance As TestInterface
testInstance를 WithEvents로 선언하면 Form1 클래스에서 해당 이벤트를 처리할 수 있습니다.
다음 이벤트 처리기를 Form1 클래스에 추가하여 testInstance로 인해 발생하는 이벤트를 처리합니다.
Sub EventHandler() Handles testInstance.Event1 MsgBox("The event handler caught the event.") End Sub
Test라는 서브루틴을 Form1 클래스에 추가하여 구현 클래스를 테스트합니다.
Sub Test() ' Create an instance of the class. Dim T As New ImplementationClass ' Assign the class instance to the interface. ' Calls to the interface members are ' executed through the class instance. testInstance = T ' Set a property. testInstance.Prop1 = 9 ' Read the property. MsgBox("Prop1 was set to " & testInstance.Prop1) ' Test the method and raise an event. testInstance.Method1(5) End Sub
Test 프로시저는 MyInterface를 구현하는 클래스의 인스턴스를 만들고, 이 인스턴스를 testInstance 필드에 할당하고, 속성을 설정하고, 인터페이스를 통해 메서드를 실행합니다.
시작 폼의 Form1 Load 프로시저에서 Test 프로시저를 호출하는 코드를 추가합니다.
Private Sub Form1_Load(ByVal sender As System.Object, _ ByVal e As System.EventArgs) _ Handles MyBase.Load Test() ' Test the class. End Sub
F5 키를 눌러 Test 프로시저를 실행합니다. 메시지 "Prop1 was set to 9"이 표시됩니다. 확인을 클릭하면 메시지 "The X parameter for Method1 is 5"가 표시되고, 다시 확인을 클릭하면 "The event handler caught the event" 메시지가 표시됩니다.