다음을 통해 공유


추상화 구현을 위한 기본 클래스

추상화 구현을 위한 기본 클래스는 개발자가 추상 클래스와 인터페이스(추상화)를 구현하는 데 도움을 주기 위해 디자인된 클래스입니다. 이러한 기본 클래스는 추상화에 대한 구현 정보를 제공하고 경우에 따라 상속하지 않고 사용할 수도 있습니다. 예를 들어, Collection<T>은 컬렉션을 만드는 데 사용하거나 강력한 형식의 컬렉션 클래스를 정의하기 위해 상속할 수 있습니다.

다음 코드 예제에서는 Collection<T> 클래스를 사용하여 강력한 형식의 컬렉션 개체를 만드는 방법을 보여 줍니다.

Public Class PointManager
    Implements IEnumerable

    Private pointCollection As Collection(Of Point) = New Collection(Of Point)

    Public Sub AddPoint(ByVal p As Point)
        pointCollection.Add(p)
    End Sub

    Public Function RemovePoint(ByVal p As Point) As Boolean
        Return pointCollection.Remove(p)
    End Function

    Public Function GetEnumerator() As IEnumerator _
        Implements IEnumerable.GetEnumerator

        Return pointCollection.GetEnumerator
    End Function
End Class
public class PointManager : IEnumerable
{
    Collection<Point> pointCollection = new Collection<Point>();

    public void AddPoint(Point p)
    {
        pointCollection.Add(p);
    }
    public bool RemovePoint(Point p)
    {
        return pointCollection.Remove(p);
    }
    public IEnumerator GetEnumerator()
    {
        return pointCollection.GetEnumerator();
    }
}

다음 코드 예제에서는 Collection<T> 클래스를 사용하여 강력한 형식의 컬렉션을 정의하는 방법을 보여 줍니다.

Public Class PointCollection
    Inherits Collection(Of Point)
End Class
public class PointCollection : Collection<Point> {}

CollectionBase 클래스는 .NET Framework 기본 클래스의 또 다른 예제입니다. 이 클래스를 사용하면 개발자는 제네릭이 아닌 컬렉션을 구현할 수 있습니다. Collection<T>과 달리 CollectionBase는 직접 사용할 수 없습니다.

추상화 구현을 위한 기본 클래스는 라이브러리를 사용하는 개발자에게 중요한 값을 추가하는 경우에만 라이브러리의 일부로 제공됩니다. 기본 클래스에서 라이브러리 구현만 돕는 경우 기본 클래스는 공개적으로 표시되지 않아야 합니다. 라이브러리 개발을 단순화하기 위해 기본 클래스를 내부적으로 사용하려면 공용 멤버가 기본 클래스에서 작업을 상속하는 대신 기본 클래스에 작업을 위임해야 합니다.

기본 클래스에 추상 멤버가 포함되어 있지 않은 경우에도 기본 클래스를 추상 클래스로 만들 수 있습니다. 이렇게 하면 해당 클래스가 상속을 위해서만 디자인되었음을 사용자가 분명하게 알 수 있습니다.

기본 클래스를 기본 시나리오 API와 분리된 네임스페이스에 배치할 수 있습니다. 정의에 따라 기본 클래스는 고급 확장성 시나리오에 사용되고 대부분의 사용자와는 관련이 없습니다.

클래스가 공용 API에서 사용되도록 만들어진 경우 Base 접미사를 사용하여 기본 클래스의 이름을 지정하지 않습니다.

라이브러리에서 기본 클래스를 반환 값 또는 매개 변수 값으로 노출하는 경우 해당 이름에 Base 접미사가 있으면 안 됩니다.

Portions Copyright 2005 Microsoft Corporation. All rights reserved.

Portions Copyright Addison-Wesley Corporation. All rights reserved.

디자인 지침에 자세한 내용은 참조를 "Framework 디자인 지침: 규칙, 숙어, 및 재사용에 대 한 패턴입니다.NET 라이브러리"도 서 Krzysztof Cwalina와 Brad Abrams, 게시 Addison-wesley, 2005.

참고 항목

기타 리소스

클래스 라이브러리 개발을 위한 디자인 지침

확장성을 위한 디자인