2013-05-24 4 views
0

저는 객체 지향 디자인을 처음 사용합니다. 객체를 사용하여 아래에 언급 된 요구 사항을 모델링하는 방법에 대한 몇 가지 팁을 기다리고 있습니다.객체 지향 디자인 입문

요구 사항 : 프로그램은 많은 학생들이 있습니다. 프로그램이 응용 프로그램에 로그인합니다. 첫 번째 페이지에는 프로그램에 속한 모든 학생의 표가 표시됩니다 (표 열 - 성, 이름, 성, 나이, 성별 등). 이드는 링크입니다. 이드를 클릭하면 개별 학생 페이지가 표시됩니다. 이 페이지에서 개별 학생과 관련된 활동을 수행 할 수 있습니다 (예 : 편집 주소 변경 이름 등의 의견을 추가

내 솔루션 : 두 클래스

프로그램 - 하나의 프로그램 모델이 관련된 모든 활동을 수행하고 모든 프로그램 관련 DB 테이블을 캡슐화됩니다.

학생 - 하나의 학생 모델과 관련된 모든 활동을 수행하고 모든 학생이 특정 DB 테이블을 캡슐화됩니다.

지금까지 그렇게 좋았습니다.

프로그램과 관련된 모든 학생의 세부 정보를 가져 오려면 프로그램 개체에서 'fetch_student_details'이라는 메서드를 호출해야합니다.

질문은이 방법을 어디에 써야합니까? 학생 클래스 메소드 또는 프로그램 클래스 메소드 여야합니다.

나는 프로그램 클래스에서이 방법을 쓰면 어떻게 프로그램 클래스가 그것을 처리 할 것인가?

(A) 우선 학생 클래스의 인스턴스를, 여기에 각 아이디에 대한 속하는 student_ids의 목록을 확인하고 그것에서 특정 학생 관련 정보를 얻을 수 있습니다. DB : 인스턴스화 된 각 학생 객체는 정보를 가져 오기 위해 쿼리를 실행합니다. 그래서 100 명의 학생, 100 개의 질문.

또는

(B) 프로그램에 관련된 학생 ID의 목록을 가져 오기 모든 학생들이 직접 학생 정보를 가져옵니다. Db : 필요한 모든 정보를 가져 오는 단일 쿼리. 이 경우

+0

단일 쿼리에서이 작업을 수행 할 수 있다면 꼭해야합니다. API는 효율적인 구현이 가능하도록 설계되어야합니다. –

답변

0

, 당신이 솔루션을 갈 수있는 경우 (B). 사실, 학생과 프로그램은 독립적으로 존재할 수있는 두 가지 상이한 존재이며, 당신은 캡슐화를 깨뜨리지 않습니다. 당신이 학생에서 얻을하려는 각 가능한 정보에 대한 방법을 추가하여 프로그램의 인터페이스를 오염 할 필요 (가) 솔루션을

.

마지막 제안으로, OO 디자인을 배우고 싶다면 Erich Gamma, Richard Helm, Ralph Johnson 및 John Vlissides의 "디자인 패턴 - 재사용 가능한 객체 지향 소프트웨어 요소"(AKA "The Gang 4의 ").

관련 문제