Bu yazıda Asp.NET ‘te sınıf, nesne, ad alanı kavramlarını ele alacağız ve web form elemanlarının çalışma mantığını anlatmaya çalışacağız.
Sınıf (Class)Kavramı
Asp.NET ‘te sayfamızda olan her kod ve kontrol bir sınıftan türetilmektedir. Sınıf kavramını biraz daha açarsak; Eski programlama dillerinde metin alanı oluşturmak için satırlarca kod yazılırdı. Bir ikincisini oluşturmak için aynı kodlar tekrar yazılırdı. Günümüzdeki programlama dillerinde sayfamıza textbox eklerken sadece sürükle bırak yaparız. Yani textbox kontrolü için daha önceden kodlar programlama diline eklenmiştir , tüm tanımlamaları yapılmıştır. Bu tanımlamaların bulunduğu yapıya sınıf diyoruz. Sınıflar sayesinde sayfamıza bir kontrol eklemek için satırlarca kod yazmıyoruz. Böylece program yazarken esas önemli konular üzerine yoğunlaşabiliryoruz.
Sınıf kavramını biraz daha basitleştirelim. Anlaması daha kolay olsun.
Textbox sınıfı
{
dikdörtgen şeklindedir.
varsayılan genişliği 100 px dir.
textmode özelliğinde singleline,multiline,password değerleri vardır.
sayfaya <asp:tetxbox> yazılması gerekmektedir.
runat=”server” eklenmelidir.
etiketi kapatılmalıdır.
Vs.
}
Yukarıda ki tanımlamayı textbox kontrolünün sınıfı gibi düşünelim. Tabi bu tanımlamada böyle türkçe kodlar anlatımlar yok. Tamamen kodlarla oluşturuluyor. Yukarıdaki tanımlama bir kere yazılıyor ve ben textbox kullanmak istiyorsam bu tanımlamaları tekrar tekrar yazmıyorum. Sayfama sedece <asp:tetxbox id=”tetxbox1″ runat=”server”></asp:tetxbox> kodunu ekliyorum.
Asp.NET te form kontrollerinin bulunduğu sınıflar programa otomatik olarak dahil edilir. Eğer otomatik dahil edilmeseydi bu dahil etme işlemini kodla yapmamız gerekecekti. <Bu sayfa da form kontrolleri sınıfı kullanılacak> gibi. Bir örnek daha vermek istiyorum. Belki tamam anladık diyorsunuz ama… Hazır köfteleri bilirsiniz. Önceden yoğrulmuş hazırlanmış bize sadece kızartması kalan. Onun gibi düşünebiliriz.
Form elemanlarından button kontrolünün olayları vardır. tıklandığında(onclick), yüklendiğinde(onload) gibi. bunlara programlama dilinde event (olay) adı verilir. Ayrıca tüm butonlar ortak bir sınıftan türediği için ortak özellikleri vardır. rengi, arkaplan rengi,genişlik yüksekli gibi. Bunlarada property denir. Bu gibi tanımlamaların ingilizcesini bilmek program yazarken işlerinizi hızlandırır.
Nesne (Object) Kavramı
Programlama dilinde nesneler sınıflardan türetilir. Örneğin textbox yani metin alanı bir nesnedir. Metin alanının belli özellikleri vardır. Sayfamıza sınıftan türetilen istediğimiz kadar tetxbox ekleyebiliriz. Tüm textboxlar bir sınıftan türetildiği için ortak özellikleri vardır ve birbirilerinden bağımsızdırlar.
Ad Alanı (Namespace)
Ad alanları ortak özellikteki sınıfların gruplanmasından oluşur. Örneğin her form elemanı için ayrı bir sınıf vardır. Tüm bu sınıflar ortak özellikler barındırdıkları için System.Windows.Controls adlı bir sınıfın içinde toplanmıştır. bu sınıf sayfamıza otomatik dahil edilmektedir. Ama diğer sınıfları kullanmak için sayfamızın başına bir bildirim bloğu eklemeliyiz. Aşağıdaki gibi.
<%@ Import Namespace=”System.Drawing” %>
Bu bildirimle Asp.Net in bize sunduğu resim işleme kodlarını kullanabiliriz.
Post Olayı
Sayfamızdaki formlara girilen bilgileri sunucuya yollama işine post etme denir. Yani butona tıklandığında bilgilerin sunucuya postalanması anlamındadır. Verilerin sunucuya postalanması bir olaydan sonra gerçekleşir. Butona tıklandığında, checkbox işaretlendiğinde, tetxbox a veri girişi yapıldığında gibi. Örneğin üye kaydı yapan bir sayfada bilgilerimizi gireriz ve kaydet butonuna tıkladığımızda girdiğimiz bütün bilgiler sunucuya postalanır. Bu postalama işine kısaca post adı verilmekte.
IsPostBack Olayı
Verileri sunucuya postalarken butona tıklandığımızda kodlar çalışır ve eğer başka bir sayfaya yönlendirme yapılmadıysa sayfa tekrar yüklenir(Page_Load). Bu durumda Page_Load kod bloğunda bulunan kodlar tekrar çalışır. Sayfanın ilk defamı yüklendiğini yoksa sayfanın post mu edildiğini anlamak için ispostback kodu kullanılır. Bunu bir örnekle açıklayalım.
<script runat="server"> sub Page_Load(source as object, e as eventargs) if not page.ispostback then label1.text="0" end if end sub sub arttir(sender as object, e as eventargs) label1.text=cint(Label1.Text) + 1) end sub </script> <html><body> <form runat="server"> <asp:button id="button1" text="Artır" onClick="arttir" runat="server"/><br> <asp:label id="label1" runat="server"/> </form></body></html>
Bu örnekte sayfada bir buton bulunmakta. Sayfa yüklendiğinde label sıfıra eşit. butona tıklandığında arttir adlı kod bloğuna gidiliyor ve label bir arttırılıyor. Burda * olan satırlara dikkat edin.
sub Page_Load(source as object, e as eventargs)
*if not page.ispostback then
label1.text=”0″
*end if
end sub
Eğer bu satırlar olmazsa şöyle olacaktı; Label sayfa yüklendiğinde sıfıra eşit. Butona tıklandığına bir attırılacak fakat tıklama işleminden sonra post olayı olacak ve sayfa tekrar yüklenecektir. Sayfa tekrar yüklendiği için label yine sıfıra eşit olacak. yani label hiç artmayacak. * bulunan satırlar sayfanın ilk kez mi yoksa post olayıyla mı yüklendiğini belirlemeye yarar. if not page.ispostback eğer sayfa postalanmadıysa anlamına gelir. Umarım karışık olmamıştır. Bu kodları bilgisayarınızda denemenizde fayda var. Önce tamamını yazarak daha sonrada * bulunan satırları kaldırarak deneyin. Farkı daha iyi anlayacaksınız.






