Sınıfların Ortak Metotları

 Overloading Methods

Aynı isimli fakat farklı parametreli methodların kullanılmasına imkan veren güçlü bir özelliktir. Overloads, Key(anahtar) ile kullanılabilir. Eğer bu key yazılmaz ise derleyici aynı isime sahip tüm methodları kontrol eder. Inherited Class kullanılmış ise muhakkak Overloads keyin kullanılmasını zorunlu kılar.

 Constructors

Visual Basic 6.0’da Initialization kodu Class’ın Class_Initialize Event’ına yazılır.

Visual Basic.NET içinde bu kodların yazıldığı yere Constructors adı verilir. Sub New Constructor ile Class_Initialize Event’ının yerini aldığında oluşan farklılıklar şunlardır.

Sub New bloğu; Kod Class içindeki tüm kodlardan önce çalışır. Form’un Load Event’ına benzetebiliriz. Bir obje oluşturulduğunda, sadece bir kez çalışacaktır. Diğer bir Constructor içindeki kodun ilk satırından, aynı veya farklı bir Class içinden MyBase Key’i kullanılarak çağrılabilir.

Örnek: Yeni bir Windows uygulaması oluşturup, içine Add New Item seçeneğini kullanarak “Zeytin” isimli bir Class ekleyelim.

Zeytin isimli Class içine aşağıdaki kodları yazınız.

Public Class Class1

Public Class zeytin

Private ad As String

Private kg As Integer

Private fiyat As Integer

Public Property gad() As String

Get

Return ad

End Get

Set(ByVal Value As String)

ad = value

End Set

End Property

Public Property gkg() As Integer

Get

Return kg

End Get

Set(ByVal Value As Integer)

kg = value

End Set

End Property

Public Property gfiyat() As Integer

Get

Return fiyat

End Get

Set(ByVal Value As Integer)

fiyat = value

End Set

End Property

End Class

End Class

Form’umuzu şekildeki gibi tasarlayalım.

Form veri giriş ekranı

 

Button1_Click Event’ına aşağıdaki kodu yazalım.

Dim b As New zeytin()

TextBox1.Text = b.gad

TextBox2.Text = b.gkg

TextBox3.Text = b.gfiyat

TextBox4.Text = b.gkg * b.gfiyat

Programı çalıştırınız. Sonuca hiçbir değer atanmayacak, neden?

Dördüncü adımdaki kodu aşağıdaki gibi değiştirdiğinizde, TextBoxlara değer

atanacaktır.

Dim b As New Class1.zeytin()

b.gad = “ali”

b.gkg = 4

b.gfiyat = 3000

TextBox1.Text = b.gad

TextBox2.Text = b.gkg

TextBox3.Text = b.gfiyat

TextBox4.Text = b.gkg * b.gfiyat

gad ( ) Property kısmını aşağıdaki şekilde değiştirelim.

Public ReadOnly Property gad() As String

Get

Return ad

End Get

End Property

Programı çalıştırdığımızda “getir” Button’daki kod içinde hata oluşturacaktır. Bunun

sebebi: ReadOnly Keyi kullanan bir Property için, başka bir yerden değer atanamaz

olmasıdır. Ancak Class içinde sabit bir değer verilebilir.

gkg ( ) Property kısmını aşağıdaki şekilde değiştirelim.

Public WriteOnly Property gkg() As Integer

Set(ByVal Value As Integer)

Kg = value

End Set

End Property

Programı çalıştırdığımızda “getir” butonundaki kod içinde hata oluşacaktır. Bunun

sebebi ise WriteOnly keyi kullanan bir Property’nin, bir değişkene atanamaz olmasıdır.

Ancak Class bünyesinde bir işlemiçinde kullanılabilir.

Bunu test etmek için “getir” Buttonun kodunu aşağıdaki şekilde yazalım.

Dim b As New Class1.zeytin()

TextBox1.Text = b.gad

TextBox3.Text = b.gfiyat

Daha sona “zeytin.vb” içine aşağıdaki kodu ilave edelim ve programı çalıştıralım. Bu

bir constructor’dır. Yani, tüm Class içindeki kodlardan önce çalışır. Bir Class’ı New ile

çağırmanız bu yapının devreye girmesi için yeterlidir.

Public Sub New()

ad = “Ahmet can”

kg = 3

fiyat = 5000 * kg

End Sub

Zeytin Class’ı içindeki kodu ikinci adımdaki hale, “getir” butonunun içindeki kodu

dördüncü adımlardaki hale getirelim.

Zeytin Class’ı içine aşağıdaki kodu ilave edelim. Programı çalıştıralım.

Public Sub New()

ad = “Ahmet can”

kg = 3

fiyat = 5000 * kg

End Sub

Program çalıştığında Text içindeki değerlerin, Button içinde tanımlanan değerler

olduğunu gördük. Şimdi button içindeki kodu aşağıdaki şekilde getirip programı tekrar

çalıştırdığımızda, Sub New’de tanımlanan değerlerin TextBox’lara atandığını göreceğiz.

Dim b As New zeytin()

TextBox1.Text = b.gad

TextBox2.Text = b.gkg

TextBox3.Text = b.gfiyat

TextBox4.Text = b.gkg * b.gfiyat

Zeytin Class’ı içine aşağıdaki kodu ilave edelim. Programı çalıştıralım.

Public Sub New(ByVal a As String, ByVal b As String, ByVal c As

Integer)

ad = a

kg = b

fiyat = c

End Sub

Hiçbir değişiklik olmadığını izledikten sonra “getir” Button’unun içindeki kodu

aşağıdaki gibi değiştirelim ve programı çalıştıralım.

Dim b As New Zeytin(“Dinçer GÜNDOĞDU”, 23, 6000)

TextBox1.Text = b.gad

TextBox2.Text = b.gkg

TextBox3.Text = b.gfiyat

TextBox4.Text = b.gkg * b.gfiyat

Bu sefer TextBoxlara atanan değerlerin, ikinci Sub New’den geldiğini izleyelim.

Son olarak “zeytin” Class’ı aşağıdaki kodu ilave edelim ve programı çalıştıralım.

Protected Overrides Sub Finalize()

MsgBox(“güle güle”)

End Sub

Programı kapattığımız zaman yukarıdaki kod devreye girerek, “güle güle” mesajının

karşımıza çıkmasını sağlar.

Instantiating – Initializing

Daha önceki versiyonlarda Dim a as New prestige ile başlayan tanımlamalar, Visual

Basic.NET içinde bazı değişikliklere uğramıştır. Bunlar;

Tanımlama ve hafızaya yüklemenin, ayrı ayrı zamanlarada gerçekleştirilmesi.

Dim c1 as Prestige Deklare edilmesi

C1 =New Prestige ( ) Instantiate

Bu yapıda ilk önce tanımla yapılıyor, daha sonra ise program yapısının herhangi bir

anında değişken hafızaya yükleniyor.

Default Constructor kullanılarak, tek bir satırda yapılması.

Dim c1 as Prestige = New Prestige ( )

Burada tanımlama ve hafızaya yükleme işlemi aynı anda yapılıyor.

Default Constructor kullanılara, tek bir satırda yapılması.

Dim c1 as New Prestige ( )

Burada tanımlama ve hafızaya yükleme işlemi aynı anda yapılıyor.

Alternatif Constructor kullanılması;

Dim c1 as New Prestige (5)

Dim c2 as New Prestige = New Prestige ( 5)

 Garabage Collection

Önceki sürümlerde referanslar, objelere Nothing Key’ini Set edince silinirdi. Bu etkili

bir uygulama idi ancak bazen ilişkili referanslar varsa bunlar yok edilmeden kalırlardı.

Visual Studio.NET içinde Nothing Key’i kullanıldığında, garabage collection aktif

duruma gelir ve ilişkili referansları da tarayarak, bulur ve yok eder. Hafıza için önemli bir

rahatlama özelliğidir. Devreye girdiğinde Finalize methodu’nu çalıştırır.

 Dispose

Birçok Visual Basic.NET objesi Dispose yöntemini kullanarak, kaynakları temizler.

Client programları direkt olarak objelerin kendi özelliğinde bulunan, Dispose methodu’nu

kullanabilir. Eğer Client; Garabage Collection meydana gelmeden önce Dispose Methodu’nu

çağırmaz ve ise Finalize Method Dispose method’unu çağırır. Onun için güvenli bir şekilde

Dispose methodu kullanılabilir. Dispose Method’u kullanıldığında Garabage Collection

Finalize methodu’nu Execute yapmaya ihtiyaç duymaz. İstenirse GC Obje method’u

üzerinde Suppress finalize çağırılarak, Execute olayı disable ettirilebilir. Finalize Execute

yapılacaksa GC.Collect method’u uygulanır.

 Public Interface

Bu sayede Class içindeki yapıları ayrı ayrı tutabilir ve gerektiği zaman Class içindeki

parçalardan sadece istediklerimizi değiştirebiliriz. Katman şeklinde program yazmak için,

tercih edilmesi gereken bir yapıdır.

Bir cevap yazın

E-posta hesabınız yayımlanmayacak.

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Close
Join me: