Bir öncekli yazimizda vb.net programlama dili kullanilarak Sinif (Class) ve bu siniflardan olusturulan Nesne (Object) hakkinda genel bir bilgi vererek, programlamada Sinif kullanmanin faydalarindan, neden programlama dillerinde sinif ve nesne yapisindan faydanilmasi gerekiyor bahsetmistik. Simdi ise sinif ve nesne tanimlamaya kisa bir göz atalim.
1.b Sinif ve Nesne Tanimlamak
Siniflar Class sözcügüyle tanimlanir ve her zamanki gibi kod blogunu temsil eden parantezler kullanilir.
'Class
' Sinif Uyeleri
'End Class
Tanimlamada geçen niteleyici ifadesi Public, Private gibi degerleri alip söz konusu sinifin disaridan nasil erisilebilecegini belirtir. Bir degiskeni, bir sinif türündenden tanimlamak için klasik degisken tanimlama formati kullanilir.
Dim As
Siniftan bir örnek (instance), yani bir nesne olusturmak için New anahtar sözcügü kullanilir.
Dim As
= New
Asagidaki örnekte Araba isminde bir sinif yazilmis ve bundan ford isminde bir nesne olusturulmustur.
Class Araba
End Class
Dim Ford As Araba
Ford = New Araba
Ford nesnesi iki satirda tanimlandi; önce Ford isminde Araba tipinde bir degisken tanimlanmistir. Bu degisken nesne tanimlayip Nothing degerini içerir. Bu da onun bir nesne ile iliskilendirilmedigi anlamina gelir. Ikinci satirda New anahtar sözcügüyle Araba türünde bir nesne olusturup Ford degiskeni bu nesneyle iliskilendirilmistir.
Bir siniftan ancak bir nesne olusturuldugu zaman, sinif bellege tasinmis olur. Yukaridaki örnekte new operatörü, Araba sinifinin bir kopyasini bellege tasir ve geriye döndürdügü bellek adresini Ford degiskeninde saklar. Böylece Ford, nesnesinin kendini degil nesnenin yerini gösteren referansi tasimis olur. Iki satirda yaptigimiz tanimlamayi asagidaki gibi tek satirda da yapabiliriz.
Dim ford as Araba = New Araba
Siniflar ve bundan türetilen nesneler, referans türleri olduklari için referanslari basla bir degiskene kopyalandigi zaman sinifin yeni bir kopyasini olusturmaz. Her iki degisken ayni nesneyi gösterir.
Dim Ford as Araba = New Araba
Dim Honda as Araba
Honda = Ford
Dim Ferrari as Araba = New Araba
Ford ve Honda degiskenleri ayni, Ferrari ise farkli bir nesne ile iliskilendirilmistir.
Net;in en önemli üstünlügü her seyin birer nesne olmasidir. Taninlanan tüm siniflar default olarak System.Object sinifindan türetilmistir.
Ayni isim-uzayinda (Namespace) olmak kosuluyla içiçe siniflar (nested classes) olusturabiliriz. Içteki siniflarin erisim belirleyicilerinin ifade edilmesi beklenir. Iç siniflara yine ayni sekilde '.' Kullanarak hiyerarsi yöntemiyle erisilir.
Imports System
Class HayvanAlemi
Class omurgalilar
Class Baliklar
Public SolunumTur As String = "Solungaç"
End Class
Class kuslar
Public SolunumTur As String = "Akciger"
End Class
End Class
Class omurgasizlar
Class Sungerler
End Class
Class Bocekler
End Class
End Class
End Class
Module Module1
Sub Main()
Dim ObjBalik As New HayvanAlemi.omurgalilar.Baliklar
Dim ObjKus As New HayvanAlemi.omurgalilar.kuslar
Console.WriteLine("Baliklar, {0} solunum yaparlar.", ObjBalik.SolunumTur)
Console.WriteLine("Kuslar, {0} solunumu yaparlar.", ObjKus.SolunumTur)
Console.ReadLine()
End Sub
End Module