Değerli Okurlarım, Merhabalar.
Bugünkü makalemizde ADO.NET kavramı içerisinde sınıfları nasıl kullanabileceğimizi incelemeye çalışacak ve sınıf kavramına kısa bir giriş yapıcağız. Nitekim C# dili tam anlamıyla nesne yönelimli bir dildir. Bu dil içerisinde sınıf kavramının önemli bir yeri vardır. Bu kavramı iyi anlamak, her türlü teknikte, sınıfların avantajlarından yararlanmanızı ve kendinize özgü nesnelere sahip olabilmenizi sağlar. Zaten .net teknolojisinde yer alan her nesne, mutlaka sınıflardan türetilmektedir.
Çevremize baktığımız zaman, çok çeşitli canlılar görürüz. Örneğin çiçekler. Dünya üzerinde kaç tür(cins) çiçek olduğunu bileniniz var mı ? Ama biz bir çiçek gördüğümüzde ona çoğunlukla “Çiçek” diye hitap ederiz özellikle adını bilmiyorsak. Sonra ise bu çiçeğin renginden, yapraklarının şeklinden, ait olduğu türden, adından bahsederiz. Çiçek tüm bu çiçekler için temel bir sınıf olarak kabul edilebilir. Dünya üzerindeki tüm çiçekler için ortak nitelikleri vardır.
Her çiçeğin bir renginin(renklerinin) olması gibi. İşte nesne yönelimli programlama kavramında bahsedilen ve her şeyin temelini oluşturan sınıf kavramı bu benzetme ile tamamen aynıdır. Çiçek bir sınıf olarak algılanırken, sokakta gördüğümüz her çiçek bu sınıfın ortak özelliklerine sahip birer nesne olarak nitelendirilebilir. Ancak tabiki çiçekler arasında da türler mevcuttur. Bu türler ise, Çiçek temel sınıfından türeyen kendi belirli özellikleri dışında Çiçek sınıfının özelliklerinide kalıtsal olarak alan başka sınıflardır. Bu yaklaşım inheritance (kalıtım) kavramı olarak ele alınır ve nesne yönelimli programlamanın temel üç öğesinden biridir. Kalıtım konusuna ve diğerlerine ilerliyen makalelerimizde değinmeye çalışacağız.
Bugün yapacağımız bir sınıfın temel yapı taşlarına kısaca değinmek ve kendimize ait işimize yarayabiliecek bir sınıf tasarlamak. Çiçek sınıfından gerçek C# ortamına geçtiğimizde, her şeyin bir nesne olduğunu görürüz. Ancak her nesne temel olarak Object sınıfından türemektedir. Yani herşeyin üstünde bir sınıf kavramı vardır. Sınıflar, bir takım üyelere sahiptir. Bu üyeler, bu sınıftan örneklendirilen nesneler için farklı değerlere sahip olurlar. Yani bir sınıf varken, bu sınıftan örneklendirilmiş n sayıda nesne oluşturabiliriz. Kaldıki bu nesnelerin her biri, tanımlandığı sınıf için ayrı ayrı özelliklere sahip olabilirler.

Şekil 1. Sınıf (Class) ve Nesne (Object) Kavramı
Bir sınıf kendisinden oluşturulacak nesneler için bir takım üyeler içermelidir. Bu üyeler, alanlar (fields), metodlar (methods), yapıcılar (constructor), özellikler (properties), olaylar(events), delegeler (delegates) vb… dır. Alanlar verileri sınıf içerisinde tutmak amacıyla kullanılırlar. Bir takım işlevleri veya fonksiyonellikleri gerçekleştirmek için metodları kullanırız. Çoğunlukla sınıf içinde yer alan alanların veya özelliklerin ilk değerlerin atanması gibi hazırlık işlemlerinde ise yapıcıları kullanırız. Özellikler kapsülleme dediğimiz Encapsulating kavramının bir parçasıdır. Çoğunlukla, sınıf içersinden tanımladığımız alanlara, dışarıdan doğrudan erişilmesini istemeyiz. Bunun yerine bu alanlara erişen özellikleri kullanırız. İşte bu sınıf içindeki verileri dış dünyadan soyutlamaktır yani kapsüllemektir. Bir sınıfın genel hatları ile içereceği üyeleri aşağıdaki şekilde de görebilirsiniz.

Şekil 2 . Bir sınıfın üyeleri.
Sınıflar ile ilgili bu kısa bilgilerden sonra dilerseniz sınıf kavramını daha iyi anlamamızı sağlıyacak basit bir örnek geliştirelim. Sınıflar ve üyeleri ile ilgili diğer kavramları kodlar içerisinde yer alan yorum satırlarında açıklamaya devam edeceğiz. Bu örnek çalışmamızda, Sql Suncusuna bağlanırken, bağlantı işlemlerini kolaylaştıracak birtakım üyeler sağlıyan bir sınıf geliştirmeye çalışacağız. Kodları yazdıkça bunu çok daha iyi anlayacaksınız. İşte bu uygulama için geliştirdiğimiz, veri isimli sınıfımızın kodları.
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 | using System;
using System.Data.SqlClient;
namespace Veriler
{
public class Veri
{
private string SunucuAdi;
private string VeritabaniAdi;
private string Kullanici;
private string Parola;
private SqlConnection Kon;
private bool BaglantiDurumu;
private string HataDurumu;
public string sunucu
{
get
{
return SunucuAdi;
}
set
{
SunucuAdi = value;
}
}
public string veritabani
{
get
{
return VeritabaniAdi;
}
set
{
VeritabaniAdi =value;
}
}
public string kullanici
{
set
{
Kullanici =value;
}
}
public string parola
{
set
{
Parola =value;
}
}
public SqlConnection con
{
get
{
return Kon;
}
}
public bool baglantiDurumu
{
get
{
return BaglantiDurumu;
}
set
{
BaglantiDurumu =value;
if (value == true )
{
BaglantiAc();
}
else
{
BaglantiKapat();
}
}
}
public string hataDurumu
{
get
{
return HataDurumu;
}
}
public Veri()
{
}
public Veri( string sunucuAdi, string veritabaniAdi, string kullaniciAdi, string sifre)
{
SunucuAdi = sunucuAdi;
VeritabaniAdi = veritabaniAdi;
Kullanici = kullaniciAdi;
Parola = sifre;
Baglan();
}
private void Baglan()
{
SqlConnection con = new SqlConnection( "data source=" + SunucuAdi + ";initial catalog=" + VeritabaniAdi + ";user id=" + Kullanici + ";password=" + Parola);
Kon = con;
}
private void BaglantiAc()
{
Kon.Open();
try
{
BaglantiDurumu = true ;
HataDurumu = "Baglanti sağlandi" ;
}
catch (Exception h)
{
HataDurumu = "Baglanti Sağlanamdı. " + h.Message.ToString();
}
}
private void BaglantiKapat()
{
Kon.Close();
BaglantiDurumu = false ;
}
}
}
|
Şimdi ise sınıfımızı kullandığımız örnek uygulama formunu tasarlayalım . Bu uygulamamız aşağıdaki form ve kontrollerinden oluşuyor.

Şekil 3. Form Tasarımımız.
Formumuza ait kodlar ise şöyle.
1 2 3 4 5 | Veriler.Veri v;
private void btnBaglan_Click( object sender, System.EventArgs e)
{
v= new Veri(txtSunucu.Text,txtVeritabani.Text,txtKullanici.Text,txtParola.Text);
|

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | }
private void btnAc_Click( object sender, System.EventArgs e)
{
v.baglantiDurumu= true ;
stbDurum.Text= "Sunucu Bağlantısı Açık? " +v.baglantiDurumu.ToString();
}
private void btnKapat_Click( object sender, System.EventArgs e)
{
v.baglantiDurumu= false ;
stbDurum.Text= "Sunucu Bağlantısı Açık? " +v.baglantiDurumu.ToString();
}
|
Şimdi uygulamamızı bir çalıştıralım.

Şekil 5. Bağlantıyı açmamız halinde.

Şekil 6. Bağlantıyı kapatmamız halinde.
Değerli okurlarım, ben bu sınıfın geliştirilmesini size bırakıyorum. Umarım sınıf kavramı ile ilgili bilgilerimizi hatırlamış ve yeni ufuklara yelken açmaya hazır hale gelmişsinizdir. Bir sonraki makalemizde sınıflar arasında kalıtım kavramına bakıcak ve böylece nesneye dayalı programlama terminolojisinin en önemli kavramlarından birini incelemeye çalışsacağız. Hepinize mutlu günler dilerim.