Generičke klase
Completion requirements
Uvod:
Generičke klase u C# omogućavaju kreiranje objekata koji mogu raditi sa različitim tipovima podataka. Ovaj koncept povećava fleksibilnost koda i omogućava ponovnu upotrebu, jer omogućava kreiranje jedne klase koja može raditi sa različitim tipovima.
Ključni pojmovi:
- Generički tip: Tip koji je definisan sa parametrima koji se mogu koristiti sa bilo kojim tipom podataka.
- Generička klasa: Klasa koja koristi generičke tipove kao parametre, što joj omogućava da radi sa različitim tipovima podataka bez ponavljanja koda.
Sintaksa definisanja generičke klase:
public class Box<T>
{
private T value;
public void SetValue(T value)
{
this.value = value;
}
public T GetValue()
{
return value;
}
}
Tje generički tip parametra koji omogućava klasiBoxda radi sa različitim tipovima podataka.
Primer upotrebe generičke klase:
-
Korišćenje sa različitim tipovima podataka:
class Program
{
static void Main(string[] args)
{
Box<int> intBox = new Box<int>();
intBox.SetValue(123);
Console.WriteLine(intBox.GetValue()); // Output: 123
Box<string> stringBox = new Box<string>();
stringBox.SetValue("Hello, World!");
Console.WriteLine(stringBox.GetValue()); // Output: Hello, World!
}
}
- U ovom primeru, klasa
Boxse koristi sa različitim tipovima podataka (intistring), što pokazuje njenu fleksibilnost.
Primer sa više generičkih tipova:
public class Pair<T1, T2>
{
public T1 First { get; set; }
public T2 Second { get; set; }
public Pair(T1 first, T2 second)
{
First = first;
Second = second;
}
}
class Program
{
static void Main(string[] args)
{
Pair<int, string> pair = new Pair<int, string>(1, "One");
Console.WriteLine("Prvi deo: " + pair.First+" , Drugi deo: "+pair.Second);
// Output: Prvi deo: 1, Drugi deo: One
}
}
- U ovom primeru, klasa
Pairkoristi dva generička tipa, omogućavajući rad sa parovima različitih tipova podataka.
Prednosti korišćenja generičkih klasa:
- Ponovna upotrebljivost koda: Jednom napisana generička klasa može se koristiti sa bilo kojim tipom podataka.
- Smanjena duplikacija koda: Generičke klase eliminišu potrebu za pisanjem posebnog koda za svaki tip podataka.
- Sigurnost tipova: Generički kod omogućava rano otkrivanje grešaka u vezi sa tipovima podataka, jer se proverava tokom kompajliranja.
Za one koji žele da znaju malo više:
Generičke klase mogu imati ograničenja koja specifikuju da tip parametar mora implementirati određeni interfejs ili nasleđivati određenu klasu:
public class Repository<T> where T : IEntity
{
private List<T> items = new List<T>();
public void Add(T item)
{
items.Add(item);
}
public T Get(int id)
{
return items.FirstOrDefault(item => item.Id == id);
}
}
U ovom primeru, Repository klasa može raditi samo sa tipovima koji implementiraju IEntity interfejs.
Zadaci za vežbu:
- Kreiranje generičke klase: Kreirati generičku klasu
Storage<T>koja može da čuva i vraća elemente različitih tipova. - Kreiranje generičke klase sa više tipova: Kreirati klasu
Triplet<T1, T2, T3>koja može da čuva tri elementa različitih tipova.
Opciono:
Iza dugmeta su sakrivena
- Kada bi bilo korisno koristiti generičku klasu umesto tradicionalne klase?
- Koje su potencijalne zamke prilikom korišćenja generičkih klasa u C#?
- Kako bi se generičke klase mogle koristiti u stvarnim aplikacijama koje učenici poznaju?
Last modified: Tuesday, 2 December 2025, 4:52 AM