Makale Özeti

Nesneye yönelik programlama deyince aklınıza hemen C,C++ gibi yüksek düzeyli diller geliyor.

Makale

Nesneye yönelik programlama ve VB.NET NESNE TABANLI PROGRAMLAMA VE VB.NET

Nesneye yönelik programlama deyince aklınıza hemen C,C++ gibi yüksek düzeyli diller geliyor. Bu dilleri incelediğimizde bu diller çok katı yazım kurallarına sahip ve aynı zamanda çok güçlü bir sistem konfigürasyonuna sahip diller olduğu görülmektedir. VB 6.0ın Nesneye yönelik programlamanın bazı özelliklerini taşımasına rağmen otoritelerce tam bir OOPL olarak yani nesne tabanlı programlama dili olarak kabul görmediğini görüyoruz. Ancak Microsoft Net teknolojisinin çıkmasıyla ve bu dillerin geliştirilmesinde VB üzerindeki OOPL ihtiyacının giderilmesi ile VB.NET tam bir nesneye yönelik programlama dili özelliği kazandı.

Nesneye yönelik Programlama dilleri hakkında hiçbir bilgisi olmayan okuyucularımız için nesneye yönelik programlama hakkında biraz bilgi vermek istiyorum. Nesneye yönelik programlamada her şey bir nesnedir. Yani bir nesnenin temel varlıklarını bulundurur. Bir nesnenin olması gereken üç önemli argümanı şunlardır.


1- Bir Nesnenin Özellikleri vardır.
2- Bir nesnenin metotları vardır
3- Bir nesnenin olayları vardır.

Örneğin bir form bir nesnedir. Bu nesnenin özellikleri metotları ve olayları vardır. Nesneler VB.NET içinde görsel nesnelerde olabilir. Sanal olarak kodlarla temsil edilen nesneler de olabilir.

Nesneye yönelik programlamanın bir diğer özelliği ise programların sınıflardan oluşuyor olmasıdır. Bunu şöyle açıklamak istiyorum.

Bilim varlıkları sınıflandırır. Bunun sebebi varlıkları anlamak e ayırt edici özelliklerini ortaya koymaktır. İşte OOPL de kodların sınıflandırılmasını ister. Mesela "System.Draw" sınıfı tümüyle çizim argümanlarının bulundurur. Sınıf yani "Class" kavramının dışında başka bir açıklanması gereken kavramda "Namespace" kavramıdır. Bu kavramı ben kategori olarak Türkçeleştirmek istiyorum. Bu kavramda terim olarak "Class" kavramlarını sınıflandırır. Yani kategoriler içinden sınıflar seçilir. Peki sınıflar nasıl kullanılır? Sınıflar nesneleri oluşturur. Bir örnek vermek gerekirse; Ben bir nesneyim. Memeliler kategorisinde insan sınıfına aitim. Tüm insanların ortak özelliklerini taşıdığım gibi bende har insana ait ayırt edici özelliklere sahibim. Mesela benim kendime ait bir boyum yaşım kilom ve karakterim var. Tüm bunları anlatan sembolik bir kod topluluğu içinde düzenledim.

Namespace memeli
Class insan
Public boy As Integer
Public yas As Integer
Public isim As String
Function yürü()
Return MsgBox("Yürüyorum")
End Function
Function uyu()
Return MsgBox("uyuyorum")
End Function
End Class
End Namespace
Public Class Form1
Inherits System.Windows.Forms.Form
Dim tarik As New memeli.insan()
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
tarik.isim = "Tarık"
tarik.yas = 23
tarik.boy = 1.75
End Sub

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
tarik.yürü()
tarik.uyu()
End Sub
End Class

Gördüğünüz gibi memeli adında bir kategori oluşturdum. Bunun içine İnsan adında bir sınıf yazdım. Bu sınıfa ait çeşitli özellikler ve metotlar ekledim. Daha sonra tarik adında bir nesne tanımladım. İşte nesne tanımlamanın esası da bu kodda yatıyor. Daha sonra bu nesnenin özelliklerini atadım. Ve daha sonra bu nesnenin metotlar Çalıştırılıyor.

Nesne tabanlı programlama ve nesneler hakkında bu kadar bilgi verdikten sonra Nesne tabanlı programlamanın olmazsa olmaz özelliklerinden bahsetmek istiyorum.

Nesne tabanlı programlamanın 4 temel Özelliği vardır.

1-Depolama(Paketleme)
2-Soyutlama
3-Çok biçimlilik
4-Miras
İsterseniz gelin bunları biraz açalım

1- Depolama:

Depolama kodu ve kodu meydana getiren verileri bir araya getiren bir mekanizmadır. Bu mekanizma nesneyi dış etkilerden korumak için kullanılır. Veriler ve metotlar nesneyi oluşturur. Yani sınıfı kullanan kişi Metotların nasıl yazıldığını görmez. Buna depolama yada paketleme denir.

2-Soyutlama:

Soyutlama nesneyi karakteristikleri olan ve eylemleri olan veri tipi olarak anlaşılmalıdır.

3-Çok biçimlilik:

Çok biçimlilik deyince aklımıza gelen bir fonksiyon birden çok biçimde kullanılmalıdır. Bu durumda fonksiyonların aşırı yüklenmesi gündeme gelir. Yani bir fonksiyon birden fazla biçimde deklare edilir. Kullanılırken hangi türde veri içeriyorsa o tür kullanım çağırılır. Bunu bir örnekle açıklayalım.


Örnek:
Public Class ekle
Overloads Function hesapla(ByVal a As Integer, ByVal b As Integer)
Return a + b
End Function
Overloads Function hesapla(ByVal a As Double, ByVal b As Double)
Return a + b
End Function
Overloads Function hesapla(ByVal a As String, ByVal b As String)
Return a + b
End Function
End Class

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim a As New ekle()
Me.Text = a.hesapla(2, 3)
End Sub
Butona basıldığında görülecektir ki 2 ve 3 ü toplar ve formun başlığına "5" yazar. Eğer Sadece 2 ve 3 yerine "Tarık" ve "Gökhan" yazarsanız başlıkta TarıkGökhan yazacaktır.
4-Miras

Miras denilince akla gelen kavram aslından farklı değildir. Diyelim ki bir sınıf oluşturmak istiyoruz. Bu sınıfın bazı metotlarının sitemde var olan sınıflardan faydalanarak oluşturmak istiyoruz bu durumda bu sınıfı bu ana sınıfın bir alt sınıfı olarak tanımlar ve ana sınıfın özelliklerini alt sınıfa miras olarak aktarırız. Böylece alt sınıf ana özelliklerini ve metotlarını kazanmış olur.

Public Class sınıf1
Public a As Integer
Public b As Integer
Public Function hesapla()
Return a + b
End Function
Public Class sınıf2 : Inherits sınıf1
Public Function hesapla2()
Return a * b
End Function
End Class
End Class
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim a As New sınıf1()
Dim b As New sınıf1.sınıf2()
Dim c As New Net.Cookie()
End Sub

Bunları incelerseniz sınıf 2 sınıf1 in alt sınıfıdır. Ve Inherits deyimi ile sınıf1in özelliklerini sınıf2 ye miras olarak aktarmaktadır.

Tarık Gökhan Kızılırmak
tarikgokhan@hotmail.com