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

Употреба сопствених интерфејса

Писање интерфејса

Писање интерфејса је једноставније од писања апстрактне класе. Као прво, није потребно писати реч abstract ни испред имена интерфејса, ни испред имена метода, јер интерфејс је апстрактан по дефиницији. Такође, подразумева се да су методи јавни ако се не наведе другачије, па не мора да се пише ни реч public испред имена метода. У класи која имплементира интерфејс није потребно писати реч override испред имена метода, јер ако класа није апстрактна она свакако мора да имплементира све методе декларисане у интерфејсу.

Погледајмо ово на следећем примеру.

Пример – игра настави низ

Написати програм који омогућава кориснику да игра игру „настави низ”. Програм треба да изабере неку правилност по којој се ређају елементи низа и да приказује елементе један по један, а корисник програма може после сваког приказаног елемента да погађа следећи елемент, да тражи још један елемент, да тражи нови низ, или да напусти програм.

Правилности по којима се ређају елементи могу, на пример, да буду:

  • следећи број је за \(a\) већи од претходног (аритметичка прогресија),

  • следећи број је \(b\) пута већи од претходног (геометријска прогресија),

  • следећи број је збир претходна два (Фибоначијев низ),

  • низ се састоји од две аритметичке прогресије, чији елементи се наизменично појављују,

  • следећи број је наизменично за \(a\) већи и \(b\) пута већи од претходног

и слично.

За сваки од ових типова низа можемо да напишемо по једну малу класу. Објекту класе можемо у конструктору да проследимо параметре за генерисање елемената, а следећи елемент да добијамо позивом метода long Sledeci(). Да бисмо након формирања објекта једне од ових класа што једноставније користили тај објекат, генерализоваћемо класе и направићемо једноставан интерфејс, који ће оне да имплементирају. Ево како би могао да изгледа тај интерфејс и саме класе.

Пре него што пређемо на програмирање игре, можемо помоћу следеће класе Program да тестирамо написане класе за генерисање елемената низова.

Овај програм исписује

10     30     50     70     90    110    130    150    170    190
 3      6     12     24     48     96    192    384    768   1536
 1      1      2      3      5      8     13     21     34     55
 1    100      4     98      7     96     10     94     13     92
 2      5     10     13     26     29     58     61    122    125

Овим се уверавамо да свака класа враћа баш оне елементе које очекујемо. Ово би било теже проверити главним програмом, јер се у њему користи генератор случајних бројева, па не бисмо знали када је која класа инстанцирана. Чак и када бисмо препознавали тип низа током тестирања, било би потребно да сачекамо да се свака класа инстанцира бар по једном, чиме тестирање постаје спорије и неудобније.

На крају, ево и класе Program која омогућава играње игре.

Приметимо да објекат niz након формирања користимо сасвим једноставно, не знајући (у том делу програма) који тип низа је у питању. Све што нам је потребно да знамо је да је метод Sledeci() из интерфејса имплементиран и да можемо да га позовемо и добијемо следећи број.

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