2011-08-21 5 views
2

Je pense à développer un système de notation MCQ. Il y aura trois modes, facile, intermédiaire et dur. Tout nouveau mode peut être introduit plus tard. Le marquage pour chaque réponse correcte dépend du mode. Chaque mode aura propre mise en œuvre du système de marquage. Il y aura un système de marquage de bonus, par exemple pour trois réponses correctes à la fois, des points bonus seront ajoutés au score total. mode intermédiaire et dur aura un système de marquage négatif. Voilà donc ma structure de base. Je vais utiliser ce système dans une application android. Je suis confus au sujet du modèle de conception que l'on est parfait. Donc, si j'obtiens un échantillon de code ou une structure pour ça, ce sera sympa.Besoin d'aide pour développer un système de notation MCQ

Merci à l'avance.

Répondre

2

Hmm, il semble y avoir plusieurs facettes à cette question; Je vais répondre à votre premier et premier:

Chaque fois que j'entends les mots «Il y en aura X, plus à ajouter plus tard», mes pensées se tournent immédiatement vers le modèle de stratégie (GoF, google ... Facile à trouver un UML pour cela), qui définit principalement une interface pour un algorithme.

Dans ce cas, vous devez implémenter 3 instances de cette interface, et il ne sera pas difficile de définir et d'ajouter un autre algorithme plus tard - il utilisera simplement la même interface.

J'ai l'image de la méthode ressemblant à quelque chose comme: public int markPaper(DataStructure mcq), si cela vous aide de quelque façon.

EDIT: Oh, et jetez un coup d'œil à "Un choix unique pour le choix multiple" par Schwartzbach & Frandsen - c'est sur google - La façon la plus simple de faire un bon marquage MCQ, et celui que j'ai souffert l'année dernière;

EDIT2: Ok, donc pour rendre ceci un peu plus explicite; Dans votre flux de contrôle principal, vous pouvez avoir une méthode 'markPaper()'. Puisque nous voulons que ce soit modulaire, nous allons prendre toutes ces fonctionnalités, les déplacer dans une classe implémentant une interface pour les algorithmes de notation. Ce que vous pourriez être enclin à écrire est le suivant:

main(){ 
    ... 
    if (difficulty == 1){ 
     [elaborate easy algorithm here...] 
    else if(...){ 
     [slightly harder algorithm here...] 

et ainsi de suite. Au lieu de cela, faites une méthode d'assistance, disons marque, et passez-lui une instance de cet algorithme à la place:

private int mark(GradingAlgorithmInterface algorithm, DataStructure paper){ 
    algorithm.markPaper(paper); 
} 

main(){ 
    ... 
    if(difficulty == 1){ 
     mark(new ConcreteEasyAlgorithm(), paper); 
    } else if() {... 

Et ainsi de suite. J'espère que cela t'aides.

+0

J'ai été confondu avec la stratégie et le modèle composite. Bien que j'ai résolu ce problème avec le méchant si sinon. Un de mes amis me suggère de le faire avec une chaîne de responsabilité, même si je pense que c'est tout simplement inutile. – rokonoid

+0

@rokonoid Edité pour élaborer sur le modèle de stratégie – Kris

+0

merci, c'est bien maintenant. – rokonoid

Questions connexes