2014-11-05 2 views
0

OOP 디자인에 대한 질문이 있습니다.OOP 디자인 : 부모, 관리자 또는 사용자가 누구입니까?

두 클래스가 있다고 가정 해 보겠습니다. 관리자은 상담, 수정 및 삭제 권한이 있습니다. 사용자에게만 상담 권한이 있습니다.

두 클래스간에 상속을 어떻게 설계 하시겠습니까? 이 판 및 삭제 권한을 추가하여 더욱 사용자의 기능을 확장하기 때문에

관리사용자에게을 상속합니다. 또는 사용자가 관리자을 상속하는 경우 오른쪽에 더 많은 제한이 있습니까?

일반화의 관점에서 관리자는 사용자보다 '일반'이며 수퍼 클래스이어야합니다. 이것은 우리 회사의 고위 인사가 말한 것입니다. 그러나 다른 디자인에서 나는 그 반대를보고있었습니다. 예 : http://www.codeproject.com/Articles/567768/Object-Oriented-Design-Principles

어떤 디자인이 옳았는지 그리고 '일반'이 더 의미하는 것이 무엇인지 명확히 할 수 있습니까?

답변

0

아무 생각이 들지 않습니다. 사용자는 관리자가 될 수 있으며 관리자는 사용자가 될 수 있습니다. 상속은 그 능력을 배제합니다.

유일한 재사용 비트는 상담 부분입니다. 관리자와 사용자가 모두 사용하는 별도의 클래스는 아닙니다.

+0

제발 좀 더 자세히 설명해 주시겠습니까? 관리자는 어떻게 사용자가 될 수 있습니까? 동물은 개가 될 수 있지만 개는 동물이 될 수 없습니다. 내 생각은 다음과 같습니다. 개는 동물이지만 모든 동물이 개는 아닙니다. 직사각형은 사변형이지만 그 반대는 아닙니다. 비슷한 방식으로 관리자는 사용자이지만 모든 사용자가 관리자는 아닙니다. – Kenny

+0

설계중인 시스템에서 관리자 권한을 잃어 버리는 것이 불가능합니까? 그것은 이상 할 것이다. –

+0

나는 그것이 가능하다고 생각한다. 관리자와 사용자 모두 기본 클래스가 역할 클래스 (3 개의 클래스 Consult, Edit, Delete)이어야한다고 제안합니까? – Kenny

2

어떤 행동을했는지에 따라 다릅니다. 어떤 공통 조상도 갖지 않는 수업을 쉽게 볼 수있었습니다. .Net 프레임 워크의 IPrincipal 인터페이스를 살펴보십시오. 사용자 및 관리자의 역할에 상관없이 사용자가 가지고있는 역할을 추적합니다.