visual studio 2010 C++로 공부하고 있습니다.
위 사진은 제가 짜놓은 프로그램의 클래스 다이어그램입니다.
우측에 Interface 클래스를 상속하는 UserManager 클래스와 AdminManager 클래스가 있는데
이 둘은
User 객체를 관리하기 위한 List 자료구조를 가진 User_List와
Admin객체를 관리하기 위한 List 를 가지고 있습니다.
UserManager 클래스와 AdminManager 클래스에서는 Interface 클래스에게서 가상함수를 상속받아서 사용 합니다.
그리고 재정의 하면서 해당 클래스에 있는 리스트를 통해서 저장한 데이터를 불러와 사용합니다.
제가 궁금한 부분은, 제가 설계한 클래스 상속구조가 타당(?)한지가 궁금합니다.
물론, 어느 구조가 100% 정답이다 라고는 생각하고 있지는 않지만 어떤 상속 구조가 더 효율성과 확장성,
그리고 다형성과 캡슐화를 이룰 수 있는지에 대해 조언을 구하고자 합니다.
그리고 AdminManager 에서 User_List에 대한 접근이 필요한데,
접근이 필요한 이유는 AdminManager에서 User에 대한 전체 탐색과 User의 삭제를 위해
UserManager에 있는 User_List를 얻어오려고 합니다.
그러기위해 UserManager의 멤버 접근자 함수인 List* GetUser_List() const 를 AdminManager의 friend로 지정해서 쓰려고 합니다.
(실제 써보려고 하니... 서로의 클래스를 인식할 수 없기 때문에 서로의 헤더를 include 시켜줬다가... 중복선언 문제로 한참 해메고 있네요.)
이 friend의 사용이 타당한지에 대해 궁금합니다.