2013-01-15 3 views
0

해당 클래스의 다른 멤버와 관련하여 채워지는 객체가있는 클래스가 있다고 가정 해 보겠습니다.유틸리티의 구성원으로 함수 구현

라이브러리의 예를 사용해 보겠습니다. 내가 책의 데이터베이스를 가지고 있고 나의 수업을 User라고 부르면. 사용자에게 name이라는 멤버가 있습니다. 사용자는 라이브러리에서 빌린 모든 책을 포함하는 오브젝트 (목록)를 가지고 있습니다. 멤버 목록 "booksBorrowed"에 채울 함수는 "name"멤버 개체의 책으로 어디에서 처리해야합니까?

사용자 클래스 유형을 허용하는 getBooks (...) 클래스 외부에서 도우미 함수를 구현해야합니까? 클래스에 멤버로 함수를 구현합니까? 분명히 유틸리티 함수로 구현한다면 분명히 사용자 클래스 내에 목록 객체를 채우기위한 래퍼 (wrapper)를 제공해야 할 것입니다.

감사합니다, 토마스

답변

0

는 도서관과 모든 사용자되었는지 확인하기 어려울 것이기 때문에 나는 모든 사용자의 구성원 목록 "booksBorrowed"을 가지고 선택하기 전에 하드 생각할 것 항상 일치, 예를 들어, 둘 이상의 사용자의 "booksBorrowed"목록에 같은 책이 동시에 나타나지 않도록합니다.

필자는 모든 도서 (대여 여부와 상관없이)가 포함 된 "bookList"와 각 도서 개체의 "위치"필드가 특정 사용자를 참조하거나 라이브러리 (또는 아마도 후자의 경우 null). "위치"필드는 하나의 값만 가질 수 있기 때문에 책이 한 번에 두 위치에있을 수 없습니다.

주어진 시간에 주어진 사용자에 대해 그러한 목록을 반환하는 라이브러리의 멤버 함수를 호출하여 주어진 사용자에 대해 "booksBorrowed"목록을 얻을 수 있습니다.

"booksBorrowed"멤버 함수가 매번 목록을 만들기 위해 수백만 권의 책을 검색해야하기 때문에 효율성 문제가 발생하면 각 사용자의 라이브러리 개체에 "booksBorrowed"목록을 라이브러리가 업데이트하도록하여 최적화 할 수 있습니다 , 책을 빌리거나 돌려 보낼 때마다. 그러나 그것은 내가 요약 한 사용자 인터페이스를 변경시키지 않을 것이므로 성능 고려 사항이 필요할 때까지이 최적화를 수행하지 않을 것입니다.