2017-11-01 9 views
0

oo 디자인 질문 인터뷰 : 디자인 메시지 시스템에 대해 각 클래스에 대해 publicprivate 회원/방법의 용도를 이해하는 데 문제가 있습니다.디자인 메시지 시스템 : 공공 및 민간 회원에 대한 우려

짧은 이야기. 사용자 클래스를 다음과 같이 정의한다고 가정 해 보겠습니다.

class user { 
public: 
    string account_name; 
    string info; 
    vector<User> friend_list; 
    vector<Chat> chat_list; 
    void friend_request(User friend_target); 

private: 
    string system_user_id; 
} 

처음에는 private 회원이 있어야합니까?

여기서는 system_user_id을 시스템의 실제 사용자에게 노출 시켜서는 안되기 때문에 비공개로 정의했습니다. 너희들은 어떻게 생각하니?

+0

어쩌면. https://en.wikipedia.org/wiki/Encapsulation_(computer_programming) – dm03514

답변

0

외부 사용자뿐만 아니라 user 클래스의 클라이언트에도 적용되므로 캡슐화를 고려하는 것이 좋습니다.

클라이언트는 내부 사용자 일 수 있습니다. 몇 달 안에 사용자가 인터넷에서 가장 인기있는 것이고 시스템 개발자로 구성된 팀이 있다고 상상해보십시오.

공개 account_name이있는 사용자 등급이 표시됩니다. 그들은 직접 계정을 업데이트하기 위해 계정의 이름을 변경하려고합니다. 그러나 유효한 업데이트가 데이터 저장소 또는 다른 것과의 동기화가 필요한 경우에는 어떻게해야합니까? 사용자 클래스 디자인은 클라이언트 (내부)가 잘못된 코드를 생성하는 것을 허용했습니다!

friend_list, chat_list에 대해 동일한 작업을 수행 할 수 있습니다. 동시 환경에서 사용자를 사용하고 있다면 잠금 장치가 필요할 수도 있습니다. 목록을 직접 공개하면 내부 클라이언트가 경쟁 업체를 만들 수 있습니다 개인적으로 캡슐화 된 경우 내부 고객을보다 효과적으로 보호 할 수 있습니다.