Употреба сопствених интерфејса¶
Писање интерфејса¶
Писање интерфејса је једноставније од писања апстрактне класе. Као прво, није потребно писати реч
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()
из интерфејса имплементиран и да можемо да га позовемо и добијемо следећи број.