Садржај
2 Класе и објекти
2.1 Основни појмови о класама и објектима
3 Генеричке класе
4 Наслеђивање и полиморфизам
5 Примери пројеката са решењима
5.1 Различита кретања
5.2 Квиз
5.4 Приказ рада алгоритама сортирања

Квиз

У овом примеру представљамо апликацију Квиз. То је конзолна апликација, која омогућава кориснику да одговара на питања из учитаног квиза, а када заврши са одговарањем да види свој резултат.

Апликација приликом покретања нуди корисника да зада путању до фајла са питањима, а затим учитава садржај квиза и приказује прво питање. Корисник у сваком тренутку може да пређе на претходно или следеће питање притиском на тастере PageUp и PageDown. На текућем питању корисник може да зада, или да промени претходно дати одговор.

  • У питањима са више понуђених одговора, корисник се креће кроз одговоре стрелицама горе/доле. Избор одговора се врши притиском на тастер Space. Постоје две подврсте овог типа питања, а то су питања у којима треба изабрати тачно један одговор и питања у којима треба изабрати нула или више понуђених одговора.

  • У питањима у којима треба да се упише реч, корисник може да користи тастере Backspace, Delete, стрелице лево и десно, као и слова и цифре.

  • У питањима у којима треба да се одреди редослед датих појмова, корисник такође може да користи тастере Backspace, Delete, стрелице лево/десно и почетна слова енглеске абецеде (онолико слова колико има појмова).

Притиском на тастер Enter корисник завршава са одговарањем и програм исписује број освојених поена.


Свака врста питања има своје специфичности, тако да се намеће формирање апстрактне класе Question, из које ће бити изведене класе за појединачне врсте питања. Те класе су:

  • ABCQuestion за питања са више понуђених одговора од којих је један тачан,

  • MultipleAnswersQuestion за питања са више понуђених одговора, од којих може бити било који број тачних,

  • FillInTheBlanksQuestion за питања у којима треба да се упише реч, и

  • ParsonsQuestion за питања у којима треба да се одреди редослед датих појмова.

Свака од ових класа на свој начин приказује питање, тумачи улаз корисника, бодује одговор, учитава питање из фајла и претвара га у специјално форматиран текст ради уписа у фајл. Ове радње се најједноставније остварују помоћу метода који су у базној класи апстрактни, а у изведеним класама имплементирани на одговарајући начин. Детаљи имплементације могу да се виде у изворном коду.

Садржај фајла Question.cs

Потребна нам је и једна централна класа, која садржи колекцију питања, омогућава учитавање квиза из фајла, чување квиза у фајлу (мада не садржи едитор питања), кретање кроз питања, сабирање и приказ поена. Ту класу смо назвали Quiz.

У класи Quiz се не помињу класе које представљају појединачне врсте питања, већ се користи само апстрактна базна класа Question, преко које се позивају методи за приказ, руковање улазом корисника, бодовање итд. Пошто не мора да води рачуна о врстама питања, класа Quiz је прилично једноставна.

Садржај фајла Quiz.cs

На крају, ево и класе Program, од које почиње извршавање. У методу Main се само учитава и покреће квиз.

Садржај фајла Program.cs

Апликација би могла да се допуни на разне начине (нпр. да након бодовања прикаже и тачне одговоре, да понуди отварање новог квиза и слично), али и без тога има минималну заокружену функционалност и потпуно је употребљива. Мада као целина није сасвим једноставна, у њој нема нарочито сложених делова – свака класа је довољно мала и може да се детаљно разуме.

Класе нису направљене тако да могу у потпуности да се уклопе у апликацију са другачијим корисничким интерфејсом, али би њихов значајан део (методи Sample, FromStream, ToText, Evaluate) могао да се искористи и у другим апликацијама.

(Created using Swinx, RunestoneComponents and PetljaDoc)
© 2022 Petlja
A- A+