Konu: java
Tekil Mesaj gösterimi
Alt 16/05/09, 23:41 PM   #6 (permalink)
yesil
Araş. Görevlisi
yesil - ait Kullanıcı Resmi (Avatar)
Ruh Halim:
Durum: Offline
Üyelik tarihi: Apr 2009
Bulunduğu yer: İstanbul
Yaş: 23
Konular: 159
Mesajlar: 234
Blog Başlıkları: 1
Tecrübe Gücü: 5
Tecrübe Puanı: 164
yesil has a spectacular aura aboutyesil has a spectacular aura about
Arrow Cevap: java



Automatic Properties (otomatik özellikler), uygulamalarımızda kullandığımız sınıfların
(class) tanımlamalarında bize kolaylık sağlayan bir geliştirmedir. Bu geliştirme sayesinde private
field'lar tanımlamadan property'lerimizi tanımlayabilir ve kullanabiliriz. Hemen örnekle
açıklayalım. .Net 2.0 altında yazılmış bir Student sınıfımız olsun :


public class Student
{
private string name;
private string surname;
private int age;
private string studentNumber;

public string Name
{
get { return name; }
set { name = value; }
}

public string Surname
{
get { return surname; }
set { surname = value; }
}

public int Age
{
get { return age; }
set { age = value; }
}

public string StudentNumber
{
get { return studentNumber; }
set { studentNumber = value; }
}
}


Görüldüğü gibi dört farklı property tanımlayabilmek için boşlukları saymazsak tam 27 satır kod
yazdık. Bu sınıf .Net 3.5 altında Automatic Properties sayesinde şöyle yazılabilir :


public class Student
{
public string Name { get; set; }
public string Surname { get; set; }
public int Age { get; set; }
public string StudentNumber { get; set; }
}



Aynı sınıfı sadece 7 satır kod ile yeniden yazdık. Satır sayısının 27'den 7'ye indiğine dikkat edin.
.Net 3.5 C# derleyicisi bu şekilde tanımlanmış bir sınıf gördüğünde private field'leri bizim için
otomatik olarak tanımlamakta ve ilgili public property'ler ile ilişkilendirmektedir. Yani kısaca,
bir sınıf tanımlarken artık sadece property'leri tanımlamak yeterlidir. 30 küsur property
içeren bir sınıf tanımladığınızda Automatic Property özelliğini çok seveceksiniz.


Bu özellik sadece C# derleyicisinde geçerlidir.

2. Object Initializers

Bir önceki örneğimizde tanımladığımız Student sınıfımızı kullanarak yeni bir Student objesi
yaratalım. .NET 2.0 altında ilgili kod aşağıdaki gibi olmalıdır :

Student std1 = new Student();
std1.Name = "Ahmet";
std1.Surname = "Demir";
std1.Age = 19;
std1.StudentNumber = "8935";

Student std2 = new Student();
std2.Name = "Mehmet";
std2.Surname = "Yılmaz";
std2.Age = 18;
std2.StudentNumber = "3252";


Aynı işlevi gören kodu .NET 3.5 altında şöyle yazabiliriz:

Student std1 = new Student {Name="Ahmet", Surname = "Demir", Age = 19, StudentNumber = "8935"};
Student std2 = new Student {Name="Mehmet", Surname = "Yılmaz", Age = 18, StudentNumber = "3252"};


Bu özellik hem C# hem de VB derleyicilerinde geçerlidir.

3. Collection Initializers

Yine Student sınıfımızdan yola çıkarak şöyle bir senaryo geliştirelim. İki farklı öğrencinin
bilgilerini tutan bir Generic List oluşturalım. Oluşturduğumuz bu List<Student>'i öğrenci
bilgilerini kaydetmek veya güncellemek için kullanabiliriz.


.Net 2.0 altında List<Student> generic listemizi oluşturalım :

Student std1 = new Student();
std1.Name = "Ahmet";
std1.Surname = "Demir";
std1.Age = 19;
std1.StudentNumber = "8935";

Student std2 = new Student();
std2.Name = "Mehmet";
std2.Surname = "Yılmaz";
std2.Age = 18;
std2.StudentNumber = "3252";

List<Student> studentList = new List<Student>();
studentList.Add(std1);
studentList.Add(std2);
.....


.Net 3.5 altında aynı işlevi gerçekleştirelim :

List<Student> studentList = new List<Student> {
new Student {Name="Ahmet", Surname = "Demir", Age = 19, StudentNumber = "8935"},
new Student {Name="Mehmet", Surname = "Yılmaz", Age = 18, StudentNumber = "3252"}
};


Bu özellik hem C# hem de VB derleyicilerinde geçerlidir.

4. Extension Methods

Extension Methods, mevcut bir sınıfımızı, sınıfı oluşturan kod üzerinde hiçbir değişiklik
yapmadan extend etmemize (geliştirmemize) yarayan çok kullanışlı bir geliştirmedir. Bir
Extension method, mevcut bir CLR tipi üzerinde işlem yapmaya yarayan static bir metotdur.
Ayrıca tüm extension metotları yine static tanımlanan bir sınıf içerisinde olmalıdır.



Hemen bir örnekle açıklayalım: Uygulamamız içinde vergi hesaplamaları yaptığımızı varsayalım. GetTaxNumber adında bir metodumuz olsun ve bu metot kendi içinde özel hesaplamalar yaparak aylık vergi tutarını döndürsün.

public static class CustomExtensionMethods
{
public static decimal GetTaxNumber(this int number)
{
decimal tax = 0.18M;
return (number * tax / 12);
}
}


Tanımladığımız metodumuzu kullanalım :

using CustomExtensionMethods;

public partial class testclass()
{
private void test()
{
int salary = 1000;
decimal taxMonthly = salary.GetTaxNumber();
}
}


Bu özellik hem C# hem de VB derleyicilerinde geçerlidir.

Bu yazıda Microsoft Net Framework 3.5'un yazılım dünyasına getirdiği yenilikleri ele aldık.
Şüphesiz geliştirmeler sadece bunlarla sınırlı değil. Implicitly typed local variables, Anonymous
Types, Lambda expressions, Query expressions, Expression Trees gibi diğer önemli
geliştirmeleri başka bir yazıda inceleyeceğiz.
  Alıntı ile Cevapla
 
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171