Visual Basic Interface Oluşturma ve Kalıtım Verme
Visual Basic meraklısı yazılımcılara yeniden selamlar olsun :)
VB.Net dünyasında yep yeni bir konuyla yine birlikteyiz ve bugün Visual Basic Interface (arayüz) konusunu öğreneceğiz.Interface konusunu Java ve C# makalelerimde anlattığım için teorik bilgi edinebilmeniz adına biraz incelemenizi öneririm,böylece interface konusunu daha rahat anlayabileceğinizi düşünüyorum :)
Interface'in Türkçe anlamı her ne kadar "arayüz" olarak çevrilsede aslında programlama konusunda ilk duyulduğunda programın görsel kısmı gibi bir algı yaratabilir ancak buradaki arayüz kavramı class (sınıf) konusuyla doğrudan ilişkilidir.
Interface bir sınıfın içeriğinde yer alacak üyelerin, daha doğrusu sınıfın ana hatlarının belirlendiği ancak detaylarının varolmadığı bir yapıdır.Detaycı bir yapı olmamasına karşın nesne yönelimli programlamanın can damarı olan inheritance (kalıtım) konusunda oldukça avantajlar sunmaktadır,bunlardan birisi de çoklu kalıtım sunabilmesidir.
Önceki makalemizden hatırlarsanız bir sınıf yalnızca en çok bir sınıftan üye alabiliyor,tabi interface kavramı ile artık bu tabu yıkılıyor ve bir sınıf sonsuz sayıdaki interface'den kalıtım alabilme şansına sahip oldu.
Çoklu kalıtım konusuna geçmeden önce VB.Net ile interface nasıl oluşturulur ve nasıl kullanılır görelim.Örnek olarak canlılar dünyasını programsal olarak modelleyelim ve temel 3 canlı türü (insan,hayvan,bitki) için üçünün temel fonksiyonları olan doğma,büyüme,ölme olaylarını tek bir interface'de oluşturalım.
Interface ile bilmemiz gereken bir genel kültür konusu olan interface'lerin adı ne olursa olsun baş harfinin büyük Isparta'nın I'sı olması gerektiğidir.
Aslında bu bir zorunluluk değildir ancak genişleyen projelerde bir dosyayı açmadan onun interface olduğu bir bakışta anlamamızı sağlar ve bu da yazılımcıya kolaylıklar sunar.
O halde canlı isimli interface'imiz için "ICanli" isminde bir interface oluşturalım:
Canlılar için temel fonksiyonlarımızı yazalım:
Ayrıca canlılar için tip isminde bir property oluşturalım,yani canlının insan-bitki-hayvan'mı olduğunu sınıfımızda tutmamız gerekiyor:
Gördüğünüz gibi basit anlamda bir interface oluşturduk ve interface'imiz içerisinde çok yüzeysel bilgiler içerdi.Mesela fonksiyonların içerisine herhangi bir kod yazmadık...
Artık interface'imiz kullanıma hazır..Şimdi interface içerisine yazdığımız kodları tıpkı sınıftan sınıfa kalıtım verir gibi interface'den sınıfa kalıtım vereceğiz,bunun için "implements" (kodları devralır-kalıtım alır) anahtar sözcüğünü sınıfımızın adının yanına yazmamız yeterlidir.
Şimdi meşe ağacı ile ilgili bir sınıf oluşturalım ve sınıfımızın hemen altına "implements ICanli" yazarak kalıtım alalım:
Dikkat ederseniz ICanli interface'inden kalıtım almak istediğimizde Visual Studio Dogmak() metodunun bu sınıf
içerisinde kalıtım alınması gerektiğini vurguluyor.
Aslen bir C# geliştiricisi olarak tıpkı C# projelerinde buna benzer bir ifade ortaya çıktığında basit bir seçimle kodların devralındığını yüzlerce kez gördüm ve uygularım,maalesef VB.Net'te öyle birşey olmayacağından olsa gerek devralınacak her metod ve property'yi elle yazmak zorunda kalıyoruz:
Ne diyeyim VB.Net'çilere Allah sabır versin :)
Şimdi geldik VB.Net çoklu kalıtım konusuna..Visual Basic.Net ile bir sınıf birden çok sınıftan kalıtım alarak interface'lerin metot ve property'lerini devralabilir demiştik,o halde meşe ağacımız bitki sınıfından kalıtım alabildiği gibi özel nitelik ve fonksiyonlarını içerecek olan "IOzel" adında bir interface oluşturalım:
IOzel isimli interface'imiz ile ICanli isimli interface'lerimizi karşılaştırdığımızda çokta fazla bir fark olduğunu söyleyemeyiz :)
Bir Visual Basic sınıfı birden çok interface'den kalıtım almak istediğinde sınıf adının altına her interface için implments sözcüğünü kullanırız.Meşe ağacı sınıf örneğimizde uygulayalım:
Böylece birden fazla interface'den kalıtım almayı da öğrenmiş olduk,tabi ben kanser olmadan önce :)
Şimdi meşe ağacı sınıfımızı Windows formumuzun load eventinde instance alıp metot ve property'lerini listeleyelim:
Visual Basic interface konusunun artık sonuna gelmiş bulunuyoruz,bir sonraki makalemizde görüşünceye dek hoşçakalın
esen kalın :)
VB.Net dünyasında yep yeni bir konuyla yine birlikteyiz ve bugün Visual Basic Interface (arayüz) konusunu öğreneceğiz.Interface konusunu Java ve C# makalelerimde anlattığım için teorik bilgi edinebilmeniz adına biraz incelemenizi öneririm,böylece interface konusunu daha rahat anlayabileceğinizi düşünüyorum :)
Interface'in Türkçe anlamı her ne kadar "arayüz" olarak çevrilsede aslında programlama konusunda ilk duyulduğunda programın görsel kısmı gibi bir algı yaratabilir ancak buradaki arayüz kavramı class (sınıf) konusuyla doğrudan ilişkilidir.
Interface bir sınıfın içeriğinde yer alacak üyelerin, daha doğrusu sınıfın ana hatlarının belirlendiği ancak detaylarının varolmadığı bir yapıdır.Detaycı bir yapı olmamasına karşın nesne yönelimli programlamanın can damarı olan inheritance (kalıtım) konusunda oldukça avantajlar sunmaktadır,bunlardan birisi de çoklu kalıtım sunabilmesidir.
Önceki makalemizden hatırlarsanız bir sınıf yalnızca en çok bir sınıftan üye alabiliyor,tabi interface kavramı ile artık bu tabu yıkılıyor ve bir sınıf sonsuz sayıdaki interface'den kalıtım alabilme şansına sahip oldu.
Çoklu kalıtım konusuna geçmeden önce VB.Net ile interface nasıl oluşturulur ve nasıl kullanılır görelim.Örnek olarak canlılar dünyasını programsal olarak modelleyelim ve temel 3 canlı türü (insan,hayvan,bitki) için üçünün temel fonksiyonları olan doğma,büyüme,ölme olaylarını tek bir interface'de oluşturalım.
Interface ile bilmemiz gereken bir genel kültür konusu olan interface'lerin adı ne olursa olsun baş harfinin büyük Isparta'nın I'sı olması gerektiğidir.
Aslında bu bir zorunluluk değildir ancak genişleyen projelerde bir dosyayı açmadan onun interface olduğu bir bakışta anlamamızı sağlar ve bu da yazılımcıya kolaylıklar sunar.
O halde canlı isimli interface'imiz için "ICanli" isminde bir interface oluşturalım:
Canlılar için temel fonksiyonlarımızı yazalım:
Ayrıca canlılar için tip isminde bir property oluşturalım,yani canlının insan-bitki-hayvan'mı olduğunu sınıfımızda tutmamız gerekiyor:
Gördüğünüz gibi basit anlamda bir interface oluşturduk ve interface'imiz içerisinde çok yüzeysel bilgiler içerdi.Mesela fonksiyonların içerisine herhangi bir kod yazmadık...
Artık interface'imiz kullanıma hazır..Şimdi interface içerisine yazdığımız kodları tıpkı sınıftan sınıfa kalıtım verir gibi interface'den sınıfa kalıtım vereceğiz,bunun için "implements" (kodları devralır-kalıtım alır) anahtar sözcüğünü sınıfımızın adının yanına yazmamız yeterlidir.
Şimdi meşe ağacı ile ilgili bir sınıf oluşturalım ve sınıfımızın hemen altına "implements ICanli" yazarak kalıtım alalım:
Dikkat ederseniz ICanli interface'inden kalıtım almak istediğimizde Visual Studio Dogmak() metodunun bu sınıf
içerisinde kalıtım alınması gerektiğini vurguluyor.
Aslen bir C# geliştiricisi olarak tıpkı C# projelerinde buna benzer bir ifade ortaya çıktığında basit bir seçimle kodların devralındığını yüzlerce kez gördüm ve uygularım,maalesef VB.Net'te öyle birşey olmayacağından olsa gerek devralınacak her metod ve property'yi elle yazmak zorunda kalıyoruz:
Ne diyeyim VB.Net'çilere Allah sabır versin :)
Şimdi geldik VB.Net çoklu kalıtım konusuna..Visual Basic.Net ile bir sınıf birden çok sınıftan kalıtım alarak interface'lerin metot ve property'lerini devralabilir demiştik,o halde meşe ağacımız bitki sınıfından kalıtım alabildiği gibi özel nitelik ve fonksiyonlarını içerecek olan "IOzel" adında bir interface oluşturalım:
IOzel isimli interface'imiz ile ICanli isimli interface'lerimizi karşılaştırdığımızda çokta fazla bir fark olduğunu söyleyemeyiz :)
Bir Visual Basic sınıfı birden çok interface'den kalıtım almak istediğinde sınıf adının altına her interface için implments sözcüğünü kullanırız.Meşe ağacı sınıf örneğimizde uygulayalım:
Böylece birden fazla interface'den kalıtım almayı da öğrenmiş olduk,tabi ben kanser olmadan önce :)
Şimdi meşe ağacı sınıfımızı Windows formumuzun load eventinde instance alıp metot ve property'lerini listeleyelim:
Visual Basic interface konusunun artık sonuna gelmiş bulunuyoruz,bir sonraki makalemizde görüşünceye dek hoşçakalın
esen kalın :)