যদি প্রতিটি উত্তরকে স্ট্রিং হিসাবে এনকোড করা যায় তবে আপনি এটি করতে পারেন:
interface Question {
int score(String answer);
void display(String answer);
void displayGraded(String answer);
}
যেখানে খালি স্ট্রিংটির কোনও প্রশ্নের উত্তর এখনও নেই। এটি প্রশ্নগুলি, উত্তরগুলি এবং জিইউআইকে পৃথক করার অনুমতি দেয় তবে বহুবিজ্ঞানের অনুমতি দেয়।
class MultipleChoice implements Question {
MultipleChoiceView mcv;
String question;
String answerKey;
String[] choices;
MultipleChoice(
MultipleChoiceView mcv,
String question,
String answerKey,
String... choices
) {
this.mcv = mcv;
this.question = question;
this.answerKey = answerKey;
this.choices = choices;
}
int score(String answer) {
return answer.equals(answerKey); //Or whatever scoring logic
}
void display(String answer) {
mcv.display(question, choices, answer);
}
void displayGraded(String answer) {
mcv.displayGraded(
question,
answerKey,
choices,
answer,
score(answer)
);
}
}
পাঠ্য বাক্স, ম্যাচিং এবং আরও একই ধরণের ডিজাইন থাকতে পারে, সমস্ত প্রশ্ন ইন্টারফেস প্রয়োগ করে। উত্তর স্ট্রিংয়ের নির্মাণটি ভিউতে ঘটে। উত্তর স্ট্রিং এর পরীক্ষার অবস্থার প্রতিনিধিত্ব করে। শিক্ষার্থীর অগ্রগতির সাথে সেগুলি সংরক্ষণ করা উচিত। প্রশ্নগুলিতে তাদের প্রয়োগ করা পরীক্ষাটি প্রদর্শনের অনুমতি দেয় এবং গ্রেড এবং অ গ্রেড উভয় ক্ষেত্রেই এটির অবস্থা।
মধ্যে আউটপুট আলাদা করে display()
এবং displayGraded()
দৃশ্য কোন মতেই বার করা প্রয়োজন হবে না এবং কোন শাখাবিন্যাস চাহিদা পরামিতি উপর কাজ করতে হবে। যাইহোক, প্রতিটি দৃশ্য প্রদর্শনের সময় এটি যতটা প্রদর্শন যুক্তিযুক্ত তা পুনরায় ব্যবহার করতে মুক্ত to এটি করার জন্য যা কিছু পরিকল্পনা তৈরি করা হয়েছে তা এই কোডটিতে ফাঁস হওয়ার দরকার নেই।
তবে, আপনি যদি প্রশ্নটি প্রদর্শিত হয় তার আরও গতিশীল নিয়ন্ত্রণ রাখতে চান তবে আপনি এটি করতে পারেন:
interface Question {
int score(String answer);
void display(MultipleChoiceView mcv, String answer);
}
এবং এই
class MultipleChoice implements Question {
String question;
String answerKey;
String[] choices;
MultipleChoice(
String question,
String answerKey,
String... choices
) {
this.question = question;
this.answerKey = answerKey;
this.choices = choices;
}
int score(String answer) {
return answer.equals(answerKey); //Or whatever scoring logic
}
void display(MultipleChoiceView mcv, String answer) {
mcv.display(
question,
answerKey,
choices,
answer,
score(answer)
);
}
}
এটির মধ্যে এমন একটি অপূর্ণতা রয়েছে যা এর জন্য এমন দৃষ্টিভঙ্গি প্রয়োজন যা সেগুলি প্রদর্শন করার প্রয়োজন হয় না score()
বা answerKey
তাদের যখন প্রয়োজন হয় না তখন তাদের উপর নির্ভর করে। তবে এর অর্থ হ'ল আপনি যে ধরণের ব্যবহার করতে চান তার জন্য পরীক্ষার প্রশ্নগুলি পুনরায় তৈরি করতে হবে না।