확장성을 위한 클래스 계층 구조 디자인 시 고려 사항

업데이트: 2007년 11월

잘 디자인된 클래스 계층 구조의 경우에도 지속적인 향상은 필요합니다. 클래스 계층 구조를 디자인할 때 어떠한 방식을 선택하느냐에 따라 나중 작업이 간단해질 수 있습니다.

클래스 계층 구조 확장

다음 내용은 클래스 계층 구조의 확장을 용이하게 하는 제안 사항입니다.

  • 클래스 계층 구조는 일반적인 것에서 구체적인 것으로 정의됩니다. 상속 계층 구조의 각 수준에서 가능한 한 일반적인 것으로 클래스를 정의합니다. 파생 클래스는 기본 클래스의 메서드를 상속하고 다시 사용하고 확장할 수 있습니다.

    예를 들어, 컴퓨터 하드웨어를 모델링하는 클래스 계층 구조를 디자인하고 있다고 가정합니다. 출력 장치 모델링을 시작할 때 Display, Printer 및 File이라는 클래스를 정의할 수 있습니다. 그런 다음 기본 클래스에 정의된 메서드를 구현하는 클래스를 정의할 수 있습니다. 예를 들어, LCDDisplay 클래스는 Display에서 파생되어 EnterPowerSaveMode라는 메서드를 구현할 수 있습니다.

  • 데이터 형식 및 저장소를 정의할 때 되도록이면 포괄적으로 정의하여 나중에 변경할 필요를 없애 줍니다. 예를 들어, 현재 데이터에 표준 Integer 변수만 필요한 경우에도 Long 형식의 변수를 사용할 수 있습니다.

  • 파생 클래스에 필요한 항목만 노출합니다. Private 필드 및 메서드는 이름 충돌을 줄여 주며 나중에 변경해야 하는 항목을 다른 사용자가 사용하지 못하도록 합니다.

  • 파생 클래스에만 필요한 멤버는 Protected로 표시해야 합니다. 이렇게 하면 파생 클래스만 해당 멤버에 종속되며 개발 중에 해당 멤버를 보다 쉽게 업데이트할 수 있습니다.

  • 기본 클래스 메서드가 상속하는 클래스에 의해 기능이 변경될 수 있는 Overridable 멤버에 종속되지 않는지 확인합니다.

참고 항목

개념

메서드에 대한 액세스 수준 선택 시 고려 사항

배포 후 기본 클래스 디자인 변경 사항

참조

MustInherit

MustOverride