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

Генеричке класе

Генеричке класе су другачије од класа о којима је до сада било речи, јер су општије од њих. Зато оне представљају посебну тему и издвојене су у посебно поглавље, иако сасвим мало.


Са генеричким класама смо се већ сусретали, па ћемо поћи од познатих примера. Када користимо листу, по начину позивања њених метода:

List<int> b = new List<int>();
...

b.Add(x); // a ne List.Add(b, x);
b.Sort(); // a ne List.Sort(b);
...

…јасно је да је b објекат неке класе, јер има сопствене (нестатичке) методе. Према томе, List јесте класа, мада је другачија од класа које смо до сада научили да пишемо. Тип елемената листе очигледно није дефинисан у самој класи, јер имамо могућност да га задамо накнадно, тј. тек при декларацији листе. Сличну особину имају и друге класе, нпр:

HashSet<string> h = new HashSet<string>();

Dictionary<string, int> d = new Dictionary<string, int>();

Stack<double> st = new Stack<double>();

Queue<Tuple<int, int>> q = new Queue<Tuple<int, int>>();

...

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

Другим речима, генеричке класе користе типове података као параметре. Захваљујући томе, комплетна класа са свим својим методима, својствима итд. пише се само једном, а користи се без даљих измена као више различитих класа. На пример, класа List, коју сте вероватно већ користили у другом разреду као неку врсту „паметног” низа, може да се користи за креирање листе целих бројева, листе карактера, листе стрингова…

Најчешћа (мада не и једина) употреба генеричких класа је креирање класа колекције, па ћемо се овде бавити само таквим примерима. У именском простору System.Collections.Generic већ су дефинисане разне најчешће коришћене колекције као генеричке класе. Поред тих класа, од којих смо неке већ користили, ускоро ћемо видети како можемо да у облику генеричких класа направимо своје, сасвим специфичне колекције података типа који није унапред одређен, него се задаје тек приликом употребе колекције.

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