NESNEYE DAYALI PROGRAMLAMA 11. HAFTA UYGULAMA DERSİ
JENERİKLER VE KOLEKSİYONLAR
Jenerikler (parametreleştirilmiş tip) Jenerikler ile birlikte farklı tiplerde verilerle tip güvenlikli bir biçimde çalışılabilecek sınıf, arabirim ve metotlar oluşturmak mümkündür Jenerikler bir algoritmanın veri tipinden bağımsız olarak tanımlanmasını sağlar ve uygulamada farklı tiplerle çalışmayı destekler Object referansı ile de farklı tiplerle çalışılabilir fakat bu tip güvenlikli bir şekilde gerçekleşmez (boxing&unboxing)
class Program int[] sayilar1 = 1, 2, 3 ; int[] sayilar2 = new int[4]; Console.Write("sayılar1'in içeriği : "); foreach (int x in sayilar1) Console.Write(x + " "); Uygulama Jenerik metot class Dizi public static bool kopyala<t>(t yeni, int indeks, T[] kaynak, T[] hedef) if (hedef.length < kaynak.length + 1) return false; Dizi.kopyala(99, 2, sayilar1, sayilar2); Console.Write("sayılar2'in içeriği : "); foreach (int x in sayilar2) Console.Write(x + " "); string[] karakter1 = "Sakarya", "Bilgisayar", "Mühendisliği" ; string[] karakter2 = new string[4]; for (int i = 0, j = 0; i < kaynak.length; i++, j++) if (i == indeks) hedef[j] = yeni; j++; hedef[j] = kaynak[i]; return true; Console.Write("karakter1'in içeriği : "); foreach (string s in karakter1) Console.Write(s + " "); Dizi.kopyala("Üniversitesi", 1, karakter1, karakter2); Console.Write("karakter2'in içeriği : "); foreach (string s in karakter2) Console.Write(s + " ");
class Program Deneme<int> nesne_i = new Deneme<int>(10); Uygulama Jenerik sınıf nesne_i.tipgoster(); int deger = nesne_i.goster(); Console.WriteLine("Değer : " + deger); class Deneme<T> T nesne; public Deneme(T n) nesne = n; public T goster() return nesne; public void tipgoster() Console.WriteLine("Tip : " + typeof(t)); Deneme<string> nesne_s = new Deneme<string>("Merhaba"); nesne_s.tipgoster(); string str = nesne_s.goster(); Console.WriteLine("Değer : " + str);
for (int i = 0; i < a.count; i++) Console.Write(a[i] + " "); Uygulama ArrayList I using System; using System.Collections; class DinamikDizi ArrayList a = new ArrayList(); Console.WriteLine("Uzunluk = " + a.count); Console.WriteLine("\nEleman ekleniyor..."); a.add('c'); a.add('a'); a.add('e'); a.add('b'); a.add('d'); a.add('f'); Console.WriteLine("Uzunluk = " + a.count); Console.WriteLine("F ve A siliniyor..."); a.remove('f'); a.remove('a'); Console.WriteLine("Uzunluk = " + a.count); foreach (char c in a) Console.WriteLine("20 eleman daha ekleniyor..."); for (int i = 0; i < 20; i++) a.add((char)('a' + i)); Console.WriteLine("Uzunluk : " + a.count); foreach (char c in a) Console.WriteLine("İlk 3 eleman değiştiriliyor..."); a[0] = 'X'; a[1] = 'Y'; a[2] = 'Z'; foreach (char c in a)
foreach (int i in a) Console.Write(i + " "); a.sort(); Uygulama ArrayList II using System; using System.Collections; class Program ArrayList a = new ArrayList(); a.add(55); a.add(43); a.add(-4); a.add(88); a.add(3); a.add(19); Console.Write("Sıralama sonrası içerik : "); foreach (int i in a) Console.Write(i + " "); Console.WriteLine("43'ün indisi " + a.binarysearch(43)); int[] dizi = (int[])a.toarray(typeof(int)); int toplam = 0; for (int i = 0; i < dizi.length; i++) toplam += dizi[i]; Console.WriteLine("\nToplam = "+toplam);
Console.WriteLine("Eleman sayısı : " + l.count); for (int i = 0; i < l.count; i++) Console.Write(l[i] + " "); Console.WriteLine("2 eleman siliniyor..."); l.remove('f'); l.remove('a'); Console.WriteLine("Eleman sayısı : " + l.count); Uygulama List<T> foreach (char c in l) using System; using System.Collections.Generic; class Program List<char> l = new List<char>(); Console.WriteLine("Eleman sayısı : " + l.count); Console.WriteLine(«\n20 eleman daha ekleniyor..."); for (int i = 0; i < 20; i++) l.add((char)('a' + i)); Console.WriteLine("Eleman sayısı : " + l.count); foreach (char c in l) Console.WriteLine("Eleman ekleniyor..."); l.add('c'); l.add('a'); l.add('e'); l.add('b'); l.add('d'); l.add('f'); Console.WriteLine("İlk 3 eleman değiştiriliyor..."); l[0] = 'X'; l[1] = 'Y'; l[2] = 'Z'; foreach (char c in l)