C# Hiyerarşi Örneği
Sizinde bildiğiniz gibi Nesnel Programlama da programlama birimi olarak
Sınıflar (class) kullanılıyor. Bu nedenle üzerinde durulması gereken
önemli bir konu. Bu makalede veritabanı uygulamaların da sıkça
kullanığımız bir sınıf'ın yapısını inceleyerek kendi sınıfımızı
yaratacağız.
SqlCommand cmd =
new
SqlCommand();
cmd.Parameters.Add(
"@deger"
, SqlDbType.VarChar).Value =
"Önemi Yok"
;
Bu yapıyı kendimiz oluşturarak class'lar arasındaki hiyerarşinin daha iyi anlaşılacağını düşünüyorum.
Öncelikle burada dikkat etmeniz gereken kodun ne işe yaradığı değil. Bizim yapmak istediğimiz “SqlCommand” nesnesine parametre eklerken kullandığımız yazım şekli. Bu yüzden SqlCommand nesnesinin Constructure parametrelerini yazmadım. Şimdilik bizim için hiçbir önemi yok.
Kodu inceleyecek olursak, "cmd" SqlCommand nesnesinden türetilmiş bir değişken ve "cmd" nin türetildiği sınıfa (class) ait "Parameters" özelliği (property) çağrılmış. Bu özelliğin ise üzerinde işlem yapılan yine bir sınıf mecvut ve o sınıfın "Add" isminde bir fonksiyonu var. Daha bitmedi, bu fonksiyonda return edilen yine bir sınıf ve bu sınıfa ait "Value" özelliği (property) mecvut.
Öncelikle yapmamız gereken yukarıdaki örnekteki “Add” fonksiyonunun return ettiği sınıfı (SqlParameter) oluşturmak. En içten dışa doğru tüm sınıfları yazalım.
class
TekParametre
{
string
deger;
public
string
Degerim
{
get
{
return
deger; }
set
{ deger = value; }
}
}
Sınıfa TekParametre ismini verdik tabiki siz farklı isimde verebilirsiniz. Dikkat edin yukarıdaki örnekde “Add” fonksiyonunun return ettiği sınıfın birde “Value” isminde özelliği vardı. İşte “TekParametre” sınıfında da bu ana benzer “Degerim” isminde bir özellik tanımladık.
Bir sonraki adımda “Parameters” özelliğinin return ettiği class’ın “Add” özelliğini oluşturalım. Tabiki bunun için ilk önce “Parametrem” isminde bir class oluşturmamız gerekli.
class
Parametrem {
public
TekParametre Ekle(
string
deger1,
string
deger2)
{
TekParametre yeni=
new
TekParametre();
return
yeni;
}
}
Yazdığımız kodu inceliyecek olursak, Sınıf içerisinde “Ekle” isminde bir fonksiyon var ve bu fonksiyon “TekParametre” tipinde bir değer return ediyor.
Tekrar hatırlatmak isterimki, amacımız örnekteki kodun yaptığı işi yapan bir yapı oluşturmak değil. Sadece aynı yazım şekline sahip bir class hiyerarşisi oluşturmak. Bu yüzden “Ekle” methodunun parametreleri ve içerisinde yapılan işlem bizim için önemli değil.
Son olarak yapmamız gereken, örnekteki “cmd” değişkeninin yaptığı işi yapan bir sınıf oluşturmak.
class
Uygula {
public
Parametrem UygulaParametresi
{
get
{
return
new
Parametrem(); }
}
}
“Uygula” isminde bir class daha oluşturalım ve içerisine, örneğimizde olduğu gibi, “Parametrem” isminde bir özellik tanımlayalım.
Sonucu görmek istersek farklı bir class’tan “Uygula” sınıfını çağıralım.
public
partial
class
Form1 : Form {
public
Form1()
{
InitializeComponent();
}
private
void
Form1_Load(
object
sender, EventArgs e)
{
Uygula cmd =
new
Uygula();
cmd.UygulaParametresi.Ekle(
"deneme"
,
"deneme"
).Degerim =
"işte oldu"
;
}
}
Yazım şekline dikkat edin ilk verdiğimiz örnekteki yazım şeklini elde etmiş olduk.
Kodun Tamamı;
class
Uygula {
public
Parametrem UygulaParametresi
{
get
{
return
new
Parametrem(); }
}
}
class
Parametrem {
public
TekParametre Ekle(
string
deger1,
string
deger2)
{
TekParametre yeni=
new
TekParametre();
return
yeni;
}
}
class
TekParametre {
string
deger;
public
string
Degerim
{
get
{
return
deger; }
set
{ deger = value; }
}
}