Özet - Generic temelleri
Generic sınıf ve metotları birleştirerek bir Stack<T> yazarsın.
Özet: Generic araç seti
Bu grupta generic sınıfları, generic metotları, tür kısıtlarını, çok parametreli generic yapıları ve generic-object farkını öğrendin. Şimdi bunları birleştirerek kendi Stack<T> sınıfını yazacaksın.
Stack, son giren ilk çıkar (LIFO) prensibiyle çalışır. Push ile öğe eklersin, Pop ile son eklenen öğeyi alırsın. Stack<int> ve Stack<string> aynı şablondan üretilir ama farklı türleri tip güvenli biçimde tutar. Generic sınıf tasarımı, gerçek bir veri yapısı üzerinde anlamlıdır.
Uygulama Stack<T> sınıfını tanımla
Stack<T> generic sınıfını tanımla. Özel alan: private List<T> _items = new List<T>();. Metotlar: public void Push(T item) çağırınca _items.Add(item); yapsın; public T Pop() son öğeyi alıp _items.RemoveAt(_items.Count - 1); ile silsin ve return last; yapsın. Main içinde Stack<int> üret; Push(10), Push(20) çağır; Pop()'u yazdır.
Örnek çözümü göster
class Stack<T> { private List<T> _items = new List<T>(); public void Push(T item) { _items.Add(item); } public T Pop() { T last = _items[_items.Count - 1]; _items.RemoveAt(_items.Count - 1); return last; } } yaz. Main'de var s = new Stack<int>(); s.Push(10); s.Push(20); Console.WriteLine(s.Pop()); ekle.
Örnek çözüm:
using System;
using System.Collections.Generic;
class Stack<T>
{
private List<T> _items = new List<T>();
public void Push(T item) { _items.Add(item); }
public T Pop()
{
T last = _items[_items.Count - 1];
_items.RemoveAt(_items.Count - 1);
return last;
}
}
class Program
{
static void Main()
{
var s = new Stack<int>();
s.Push(10);
s.Push(20);
Console.WriteLine(s.Pop());
}
}
Uygulama Stack<string> ile de dene
Yukarıdaki Stack<T> sınıfını kullan. Main içinde ayrıca Stack<string> örneği üret; Push("Ayşe") ve Push("Ali") çağır; Pop()'u Console.WriteLine ile yaz.
Örnek çözümü göster
Main'e var names = new Stack<string>(); names.Push("Ayşe"); names.Push("Ali"); Console.WriteLine(names.Pop()); ekle.
Örnek çözüm:
using System;
using System.Collections.Generic;
class Stack<T>
{
private List<T> _items = new List<T>();
public void Push(T item) { _items.Add(item); }
public T Pop()
{
T last = _items[_items.Count - 1];
_items.RemoveAt(_items.Count - 1);
return last;
}
}
class Program
{
static void Main()
{
var s = new Stack<int>();
s.Push(10);
s.Push(20);
Console.WriteLine(s.Pop());
var names = new Stack<string>();
names.Push("Ayşe");
names.Push("Ali");
Console.WriteLine(names.Pop());
}
}
Generic temelleri tamam
Tebrikler! Artık generic sınıf ve metotları, tür kısıtlarını ve generic-object farkını biliyorsun. Kendi Stack<T>'ini yazdın; aynı şablon hem int hem string ile tip güvenli biçimde çalıştı.
Sonraki grupta generic koleksiyonları derinlemesine inceleyeceğiz: List<T>'nin kapasite mekaniğini, Dictionary<K, V>'nin hash yapısını ve Queue/Stack'in FIFO/LIFO davranışını öğreneceksin. Generic temelleri, bu koleksiyonların nasıl çalıştığını anlamanın anahtarıdır.
Kendini test et
-
Stack<T> hangi prensiple çalışır?
- FIFO (ilk giren ilk çıkar)
- LIFO (son giren ilk çıkar)
- Alfabetik sıra
- Rastgele sıra
Cevabı göster
LIFO (son giren ilk çıkar) — Doğru. Stack LIFO prensibiyle çalışır.
-
Stack tür parametresi
class Stack<____> { }Cevabı göster
class Stack<T> { }