Showing posts with label queue. Show all posts
Showing posts with label queue. Show all posts

Sunday, June 12, 2016

Generičke liste u C# programskom jeziku


Prvo sam vam objasnio šta su negeneričke kolekcije; pogledajte ovde; zatim sam vam pokazao šta su generici i kako se prave; pogledajte ovde; i sad su došle na red generičke liste s kojima možete sva tri posta zaokružiti u jednu veliku celinu o svim kolekcijama uopšteno. Sa poznavanjem kolekcija vaše programiranje ali i čitanje koda drugih programera će vam biti mnogo efikasnije. Mada i dalje ostajem pri tome da po pitanju pravljenja igrica, posebno za Windows Phone aplikacije ili UWP – Universal Window Platform aplikacije izbegavate kolekcije jer su skupe. U svakom slučaju testirajte. Ali za sve ostale vrste aplikacija, kolekcije jednostavno olakšavaju programerima kodiranje i smanjuju kod. Kolekcije su uglavnom povezane za rad sa podacima koji potiču iz baza podataka, klasa ili drugih datoteka; često su isprepletene sa drugim programerskim aktivnostima poput taskova, događaja, delegata ili jednostavno služe da ispune neku kontrolu u programima sa grafičkim okruženjem; poput ListBox-a ili ComboBox-a; ali u jedno možete biti sigurni; gde su kolekcije tu su i podaci i kad manipulišete sa podacima vi to jednostavno radite preko kolekcija.



( Generičke kolekcije olakšavaju programiranje )

Uglavnom, sve što važi za generike to važi i za generičke liste. Sve generičke liste se nalaze u imenskom prostoru System.Collection.Generic; sve su parametorizovane kako bi izbegle boxing i unboxing objekata i kad radite sa generičkim listama tada radite sa tipom podataka koje ste definisali; svi elementi u kolekciji moraju da imaju isti tip podataka; i sve generičke liste su takođe safe type. Tokom vašeg programiranja češće će te koristiti generičke liste nego što će te praviti svoje generike jer već postojeće generičke liste mogu da odrade mnogobrojne poslovne zahteve. I pored toga što neke generičke liste imaju isti naziv poput negenerički kolekcija; razlikuju se po tome što zahtevaju parametre pri samoj deklaraciji iste. Znači, generičke liste koristite kada znate koji tip podataka hoćete da koristi vaša lista i kad hoćete da svaki elemenat u kolekciji bude istog tipa.

Generička kolekcija List<>


Monday, May 30, 2016

Negeneričke kolekcije u C# programskom jeziku


Verovatno se sećate šta su nizovi iako sam nizove opisao među prvim postovima C# programskog jezika; pogledajte ovde. Za razliku od nizova kolekcije su vam veći progres od nizova i mnogo se više koriste u programiranju. Tačnije kolekcije predstavljaju skup objekata kojima je moguće pristupati elemenat po elemenat. To u praksi znači da je kolekcija set objekata kojima se pristupa korišćenjem petlje foreach. Razlika između nizova i kolekcija je pre svega u tome što u većini nizova unapred trebate odrediti veličinu, dok to sa kolekcijama nije slučaj. Kolekcije imaju mnogo više funkcionalnosti nego nizovi. Ali pogledajte prvo od čega se sastoji kolekcija.



( Grafički prikaz kolekcija u C# programskom jeziku )

Kolekcije se nalaze u imenskom prostoru System.Collection. Mogu da budu generičke i negeneričke. Generičke kolekcije su parametorizovane, znači moraju imati određen tip podataka i svi elementi u kolekciji moraju biti istog tipa. Generičke kolekcije se za razliku od negenerički kolekcija nalaze u imenskom prostoru System.Collections.Generic i omogućavaju vam type safe i nemate potrebe za konverzijom vaših podataka. Dok negeneričke kolekcije rade sa tipom podataka object. Na taj način vi negeneričke kolekcije možete koristiti da u njih smestite podatke različitog tipa podataka koje možete kasnije koristiti konverzijom istih kastingom. Negeneričke klase nisu type safe i retko se koriste. Svaka kolekcija da bi uopšte bila kolekcija pre svega mora da implementira enumerator koji može da prođe kroz sve elemente u kolekciji. To u prevodu znači da svaka kolekcija koristi interfejse IEnumerable ili interfejs ICollection koji je izveden iz interfejsa IEnumerable dok se obadva interfejsa nalaze u imenskom prostoru System.Collections. Interfejs ICollection koriste sofisticiranije kolekcije, dok vi takođe možete u vašim klasama koristiti koju hoćete. Međutim neke kolekcije koriste i interfejse IList, negeneričku kolekciju stavki kome se može pristupiti preko indeksa ili IDictionary negeneričku listu parova kojima se pristupa kroz ključ ili vrednost. Vi i sami možete da pravite čak vaše kolekcije ukoliko nasledite apstraktnu baznu klasu CollectionBase u vašu klasu. Kolekcije se deklarišu instanciranjem jer kolekcije jesu klase i isto se deklarišu:

Kolekcija MojaKolekcija = new Kolekcija ();


Posle deklaracije možete da vašoj kolekciji dodajete elemente, menjate, brišete i druge aktivnosti u zavisnosti kakvu kolekciju koristite. Negeneričke liste su vam ArrayList, Queue, Stack, Hashtable i SortedList. Pa krenimo redom.

ArrayList kolekcija