2011-12-07 1 views
2

나는 항목의 해시를 보유하는 클래스 Form을 가지고 있습니다. 대답은 1 "결혼", 디스플레이 질문 2 질문 경우 사이클 참조 피하기

class Form 
{ 
    Dictionary < int , Answer> listOfQuestions; 
} 

class Question 
{ 
    int questionId = 2; 
    int dependsOnQuestion = 1; 
    string answer; 
    public bool IsDependancyMet() {/*problem*/} 
} 

나는 그것을 표시되지 않습니다, 그렇지 않으면, 하나의 질문은 다른 질문, 말의 대답에 의존합니다.

구현 방법은 무엇입니까?

Question 인스턴스에 대한 참조를 나중에 추가하여 에 질문의에 대한 액세스 권한을 부여 할 수 있습니까? 나는 그것을 좋아하지 않지만.

다른 방법은 Form 클래스에 메서드를 추가하는 것입니다.이 메서드는 질문 ID를 받으면 모든 종속성이 충족되었는지 확인하지만 다시 양식 인스턴스를 인식해야합니다.

최종 줄에 : 누가 시스템을 모듈화하고 각 클래스는 가능한 한 환경을 잘 모르는 채로 유지해야합니까? 또는 최소한 순환 참조를 피하십시오.

미리 감사드립니다. 개별 질문은 직접적인 의존성의 지식을 가지고있는 동안

class Form 
{ 
    Dictionary < int , Answer> listOfQuestions; 
    int firstQuestion; 

    public void NextQuestion() { 
     // ... cycle through `listOfQuestions` looking for a question 
     // whose dependencies are fullfilled and ask it. 
    } 
} 

class Question 
{ 
    // ... 
    public List<int> GetDependencies(); 
    public void Ask(); 
    // ... 
} 

Form의 라인을 따라 뭔가에 대해, 글로벌 '질문'상태를 추적 무엇

답변

0

. 나에게 이것은 비교적 깨끗한 접근법처럼 보인다.

+0

답변 해 주셔서 감사합니다. 어쨌든 나는 가지고있는 질문 목록을 반복하고 각 질문에 .Ask() 또는 .Render()를 호출하는 Form.Display()가 있습니다. 문제는 질문이 반드시 같은 순서로 나타나지 않는다는 것입니다. 질문 12는 질문 4에 대한 대답에 달려 있습니다. 두 경우 모두 솔루션의 양식의 Render 메서드는 질문의 대답 또는 종속성에 대한 액세스 권한이 있으므로 질문의 표시 여부를 결정해야합니다. 답변을 이해했습니다. 감사. – Alex