클래스에 메서드 추가
업데이트: 2007년 11월
이 단원에서는 작업을 수행할 수 있도록 클래스에 메서드를 추가하는 방법을 배웁니다.
이전 단원 자세히 보기: 속성, 메서드 및 이벤트 이해에서는 대부분의 개체에 수행 가능한 작업이 있다는 사실을 알아보았습니다. 이러한 작업을 메서드라고 합니다. 실세계 개체 모델링: 클래스 처음 만들기 단원에서 만들었던 Persons 클래스는 사람을 나타냅니다. 사람이 수행할 수 있는 작업은 여러 가지이며 Persons 클래스의 경우 이러한 작업을 클래스 메서드로 나타낼 수 있습니다.
클래스 메서드
클래스의 메서드는 해당 클래스 내에 선언된 Sub 또는 Function 프로시저에 불과합니다. 예를 들어 Account 클래스에는 잔액을 업데이트하는 Recalculate라는 Sub 프로시저 또는 최근 잔액을 반환하는 CurrentBalanceFunction 프로시저가 있을 수 있습니다. 이러한 메서드를 선언하는 코드는 다음과 같습니다.
Public Sub Recalculate()
' add code to recalculate the account.
End Sub
Public Function CurrentBalance(ByVal AccountNumber As Integer) As Double
' add code to return a balance.
End Function
대부분의 클래스 메서드는 public이지만 클래스 자체에서만 사용할 수 있는 메서드를 추가할 수도 있습니다. 예를 들어 Persons 클래스에는 개인의 나이를 계산하기 위한 자체 함수가 있을 수 있습니다. 이 함수를 Private로 선언하면 클래스 외부에서 보거나 호출할 수 없습니다.
private 함수의 코드는 다음과 같습니다.
Private Function CalcAge(ByVal year As Integer) As Integer
CalcAge = My.Computer.Clock.LocalTime.Year - year
End Function
CalcAge 값을 계산하는 코드를 나중에 변경할 수 있으며, 이 메서드를 사용하는 코드를 변경하지 않아도 메서드는 잘 작동합니다. 이 메서드를 수행하는 코드를 숨기는 것을 캡슐화라고 합니다.
Persons 클래스에서 전체 이름을 반환하는 public 메서드와 나이를 계산하는 private 함수를 만듭니다.
실습
메서드를 클래스에 추가하려면
이전 단원에서 만든 Persons 프로젝트를 엽니다. 프로젝트를 저장하지 않았으면 이전 단원 클래스에 속성 추가로 돌아가 저장 절차를 완료하십시오.
솔루션 탐색기에서 Persons.vb를 선택한 다음 보기 메뉴에서 코드를 클릭합니다.
속성 프로시저 아래에 다음 코드를 추가합니다.
Public Function FullName() As String If middleNameValue <> "" Then FullName = firstNameValue & " " & middleNameValue & " " _ & lastNameValue Else FullName = firstNameValue & " " & lastNameValue End If End Function
Private Function CalcAge(ByVal year As Integer) As Integer CalcAge = My.Computer.Clock.LocalTime.Year - year End Function
private 함수를 사용하도록 Age 속성 프로시저의 코드를 수정합니다.
ReadOnly Property Age() As String Get ' Age = My.Computer.Clock.LocalTime.Year - birthDateValue Age = CalcAge(birthYearValue) End Get End Property
파일 메뉴에서 모두 저장을 클릭하여 작업을 저장합니다.
다음 단계
이 단원에서는 public 및 private 메서드를 클래스에 추가하는 방법을 살펴보았습니다. 자세히 보기: 재정의를 사용하여 동일 메서드의 여러 버전 만들기에서 메서드에 대해 좀 더 살펴보거나 다음 단원으로 이동하여 클래스에 이벤트를 추가하는 방법을 알아볼 수 있습니다.
다음 단원: 클래스에 이벤트 추가