다음을 통해 공유


Visual Basic의 개체 소개

업데이트: 2007년 11월

개체는 데이터와 데이터를 조작하는 메서드가 들어 있는 구조체입니다. Visual Basic에서 수행하는 거의 모든 작업은 개체와 관련되어 있습니다. 개체 지향 프로그래밍에 익숙하지 않은 경우 다음의 용어와 개념들이 시작하는 데 많은 도움이 될 것입니다.

클래스 및 개체

"클래스" 및 "개체"라는 단어는 개체 지향 프로그래밍에서 너무나 많이 사용되므로 혼동하기 쉽습니다. 일반적으로 class는 어떠한 항목에 대한 추상적인 표현이지만 개체는 클래스가 나타내는 사용 가능한 항목에 해당합니다. 이 규칙의 한 가지 예외는 공유 클래스 멤버입니다. 공유 클래스 멤버는 클래스의 인스턴스 및 클래스 형식으로 선언된 개체 변수 모두에서 사용할 수 있습니다.

필드, 속성, 메서드, 이벤트

클래스는 필드, 속성, 메서드 및 이벤트로 구성됩니다. 필드 및 속성은 개체가 포함하는 정보를 나타냅니다. 필드는 직접 읽거나 설정할 수 있기 때문에 변수와 비슷합니다. 예를 들어, "Car"라는 개체가 있는 경우 "Color"라는 필드에 해당 색을 저장할 수 있습니다.

속성은 필드처럼 검색되고 설정됩니다. 그러나 값이 설정되고 반환되는 방식을 보다 강력하게 제어할 수 있도록 하는 속성 Get 및 속성 Set 프로시저를 통해 구현됩니다. 저장되는 값과 이 값을 사용하는 프로시저 간의 간접 참조 계층을 사용하면 데이터를 쉽게 격리할 수 있을 뿐만 아니라 값을 지정하거나 검색하기 전에 해당 값이 유효한지 여부를 확인할 수 있습니다.

메서드는 개체에서 수행할 수 있는 동작을 나타냅니다. 예를 들어, "Car" 개체는 "StartEngine", "Drive" 및 "Stop" 메서드를 가질 수 있습니다. 클래스에 Sub 루틴 또는 함수에 해당하는 프로시저를 추가하여 메서드를 정의합니다.

이벤트는 개체가 다른 개체나 응용 프로그램에서 받거나 다른 개체나 응용 프로그램으로 전송하는 알림입니다. 이벤트를 사용하면 특정 상황이 발생할 때마다 개체가 동작을 수행할 수 있습니다. "Car" 클래스에 대한 이벤트의 예는 "Check_Engine" 이벤트입니다. Microsoft Windows는 이벤트 기반 운영 체제이므로 다른 개체, 응용 프로그램 또는 마우스 클릭이나 키 누름과 같은 사용자 입력에서 발생됩니다.

캡슐화, 상속, 다형성

필드, 속성, 메서드 및 이벤트는 개체 지향 프로그래밍 식의 반쪽에 불과합니다. 진정한 개체 지향 프로그래밍을 위해서는 개체에서 캡슐화, 상속 및 다형성의 세 가지 특성을 지원해야 합니다.

캡슐화는 서로 관련된 속성, 메서드 및 기타 멤버의 그룹을 하나의 단위나 개체로 취급하는 것을 말합니다. 개체는 속성의 변경 방법과 메서드의 실행 방법을 제어할 수 있습니다. 예를 들어, 개체는 속성 값이 유효한지 확인한 다음 속성 변경을 허용할 수 있습니다. 캡슐화를 사용하면 개체의 구현 세부 사항을 숨길 수 있으므로(데이터 숨김이라고 함) 나중에 구현을 쉽게 변경할 수 있습니다.

상속은 기존 클래스를 기반으로 새로운 클래스를 만들 수 있는 능력을 나타냅니다. 새로운 클래스는 기본 클래스의 속성, 메서드 및 이벤트를 모두 상속 받으며 추가 속성 및 메서드로 사용자 지정될 수 있습니다. 예를 들어, "Car" 클래스를 기반으로 "Truck"이라는 새 클래스를 만들 수 있습니다. "Truck" 클래스는 "Car" 클래스에서 "Color" 속성을 상속 받으며 "FourWheelDrive"와 같은 추가 속성을 가질 수 있습니다.

다형성은 동일한 속성 또는 메서드를 각각 다른 방식으로 구현하는 여러 클래스를 서로 교체하여 사용할 수 있음을 의미합니다. 다형성이 제공될 경우 현재 사용되고 있는 개체 형식에 관계없이 동일한 이름을 갖는 여러 항목을 사용할 수 있으므로 개체 지향 프로그래밍에서는 다형성이 반드시 필요합니다. 예를 들어, "Car"라는 기본 클래스가 제공될 경우 프로그래머는 다형성을 활용하여 모든 파생 클래스에 대해 다른 "StartEngine" 메서드를 정의할 수 있습니다. "DieselCar"라는 파생 클래스의 "StartEngine" 메서드는 기본 클래스에 있는 동일한 이름의 메서드와 완전히 다를 수 있습니다. 다른 프로시저 또는 메서드는 현재 사용되고 있는 "Car" 개체의 형식에 관계없이 동일한 방법으로 파생 클래스의 "StartEngine" 메서드를 사용할 수 있습니다.

오버로드, 재정의, 숨김

오버로드, 재정의 및 숨김은 혼동하기 쉬운 비슷한 개념입니다. 세 가지 기술 모두 같은 이름의 멤버를 만들 수 있으나 몇 가지 중대한 차이가 있습니다.

  • 오버로드된 멤버는 동일한 이름을 가지지만 다른 개수의 매개 변수나 다른 데이터 형식의 매개 변수를 취하는 다른 버전의 속성이나 메서드를 제공하는 데 사용됩니다.

  • 재정의된 속성 및 메서드는 파생 클래스에 적합하지 않은 상속된 속성 또는 메서드 대신 사용됩니다. 재정의된 멤버는 동일한 데이터 형식 및 동일한 개수의 인수를 취해야 합니다. 파생 클래스는 재정의된 멤버를 상속합니다.

  • 숨겨진 멤버는 좀 더 광범위한 멤버를 로컬로 대체하는 데 사용됩니다. 형식이 다른 형식을 숨길 수 있습니다. 예를 들어, 동일한 이름으로 상속된 메서드를 숨기는 속성을 선언할 수 있습니다. 숨겨진 멤버는 상속될 수 없습니다.

참고 항목

개념

클래스: 개체에 대한 청사진

오버로드된 속성 및 메서드

속성 및 메서드 재정의

Visual Basic의 숨김 기능

기타 리소스

Visual Basic의 개체

개체 만들기 및 사용

Visual Basic의 상속