Nesne odaklı programlama (Visual Basic)

Visual Basic kapsülleme, devralma ve çok biçimlilik gibi nesne odaklı programlama için tam destek sağlar.

Kapsülleme, bir grup ilgili özellik, yöntem ve diğer üyenin tek bir birim veya nesne olarak kabul edilir.

Devralma, var olan bir sınıfı temel alan yeni sınıflar oluşturma yeteneğini açıklar.

Çok biçimlilik, her sınıf farklı şekillerde aynı özellikleri veya yöntemleri uygulaysa bile birbirinin yerine değiştirilebilir birden çok sınıfa sahip olacağınız anlamına gelir.

Bu bölümde aşağıdaki kavramlar açıkmaktadır:

Sınıflar ve nesneler

sınıf ve nesne terimleri bazen birbirinin yerine kullanılır, ancak aslında sınıflar nesnelerin türünü tanımlarken, nesneler sınıfların kullanılabilir örnekleridir. Bu nedenle, nesne oluşturma eylemine örnek oluşturma denir. Şema benzetmesini kullanarak sınıf bir şemadır ve nesne de bu şemadan yapılan bir binadır.

Bir sınıf tanımlamak için:

Class SampleClass
End Class

Visual Basic, büyük nesne dizisi oluşturmanız ve bunun için çok fazla bellek tüketmek istemeyebilirsiniz.

Bir yapı tanımlamak için:

Structure SampleStructure
End Structure

Daha fazla bilgi için bkz.

Sınıf üyeleri

Her sınıfın sınıf verilerini tanımlayan özellikleri, sınıf davranışını tanımlayan yöntemleri ve farklı sınıflar ve nesneler arasında iletişim sağlayan olayları içeren farklı sınıf üyeleri olabilir.

Özellikler ve alanlar

Alanlar ve özellikler, bir nesnenin içerdiği bilgileri temsil eder. Alanlar doğrudan okunana veya ayarlanana kadar değişkenlere benzer.

Bir alan tanımlamak için:

Class SampleClass
    Public SampleField As String
End Class

Özelliklerin, değerlerin nasıl ayarlandır veya döndürüldükleri üzerinde daha fazla denetim sağlayan get ve set yordamları vardır.

Visual Basic, özellik değerini depolamak için özel bir alan oluşturmanıza veya bu alanı arka arkalarında otomatik olarak oluşturan ve özellik yordamları için temel mantığı sağlayan otomatik olarak uygulanan özellikler olarak adlandırılan özellikleri kullanmanızı sağlar.

Otomatik uygulanan bir özellik tanımlamak için:

Class SampleClass
    Public Property SampleProperty as String
End Class

Özellik değerini okumak ve yazmak için bazı ek işlemler gerçekleştirmeniz gerekirse, özellik değerini depolamak için bir alan tanımlayın ve bunu depolamak ve almak için temel mantığı girin:

Class SampleClass
    Private m_Sample As String
    Public Property Sample() As String
        Get
            ' Return the value stored in the field.
            Return m_Sample
        End Get
        Set(ByVal Value As String)
            ' Store the value in the field.
            m_Sample = Value
        End Set
    End Property
End Class

Özelliklerin çoğunda özellik değerini ayarlamak ve almak için yöntemler veya yordamlar vardır. Ancak, değiştirilmelerini veya okunmalarını kısıtlamak için salt okunur veya salt yazma özellikleri oluşturabilirsiniz. Bu Visual Basic ve anahtar sözcükleri ReadOnly WriteOnly kullanabilirsiniz. Ancak, otomatik uygulanan özellikler salt okunur veya salt okunur olamaz.

Daha fazla bilgi için bkz.

Yöntemler

Yöntem, bir nesnenin gerçekleştirebilirsiniz bir eylemdir.

Not

Bu Visual Basic yöntemi oluşturmanın iki yolu vardır: yöntemi bir değer döndürene deyim kullanılır; yöntem bir değer döndürürse Sub Function deyimi kullanılır.

Bir sınıfın yöntemini tanımlamak için:

Class SampleClass
    Public Function SampleFunc(ByVal SampleParam As String)
        ' Add code here
    End Function
End Class

Bir sınıfın, parametre veya parametre türü sayısından farklı olan aynı yöntemin çeşitli uygulamaları veya aşırı yüklemeleri olabilir.

Bir yöntemi aşırı yükleme:

Overloads Sub Display(ByVal theChar As Char)
    ' Add code that displays Char data.
End Sub
Overloads Sub Display(ByVal theInteger As Integer)
    ' Add code that displays Integer data.
End Sub

Çoğu durumda bir sınıf tanımı içinde bir yöntem bildirebilirsiniz. Ancak Visual Basic, mevcut bir sınıfa sınıfın gerçek tanımının dışında yöntemler eklemenize olanak sağlayan uzantı yöntemlerini de destekler.

Daha fazla bilgi için bkz.

Oluşturucular

Oluşturucular, verilen türde bir nesne oluşturulduğunda otomatik olarak yürütülen sınıf yöntemleridir. Oluşturucular genellikle yeni nesnenin veri üyelerini başlatılır. Oluşturucu bir sınıf oluşturulduğunda yalnızca bir kez çalışmasına neden olabilir. Ayrıca, oluşturucusundaki kod her zaman bir sınıftaki diğer kodlardan önce çalışır. Ancak, diğer yöntemlerle aynı şekilde birden çok oluşturucu aşırı yüklemesi oluşturabilirsiniz.

Bir sınıfın oluşturucusu tanımlamak için:

Class SampleClass
    Sub New(ByVal s As String)
        // Add code here.
    End Sub
End Class

Daha fazla bilgi için bkz. Nesne Ömrü: Nesnelerin Oluşturulma ve Yok Oluşturulduğunda.

Yıkıcılar

Yıkıcılar sınıfların örneklerini yok etmek için kullanılır. Bu .NET Framework atık toplayıcı, uygulamanıza yönetilen nesneler için bellek ayırmayı ve serbest bırakmayı otomatik olarak yönetir. Ancak, yine de, uygulamanın oluşturduğu tüm unmanaged kaynaklarını temizlemek için yıkıcılara ihtiyacınız olabilir. Bir sınıf için yalnızca bir yıkıcı olabilir.

Derlemede yıkıcılar ve atık toplama hakkında daha fazla bilgi .NET Framework bkz. Çöp Toplama.

Ekinlikler

Olaylar, bir sınıf veya nesnenin ilgiyle ilgili bir durum oluştuğunda diğer sınıflara veya nesnelere bildirmelerini sağlar. Olayı gönderen (veya gönderen) sınıf yayımcı olarak, olayı alan (veya işleen) sınıflar ise abone olarak çağrılır. Olaylar, bunların nasıl yükseltildikleri ve işlenleri hakkında daha fazla bilgi için bkz. Olaylar.

İç içe geçmiş sınıflar

Başka bir sınıf içinde tanımlanan bir sınıf iç içe geçmiş olarak çağrılır. Varsayılan olarak, iç içe geçmiş sınıf özeldir.

Class Container
    Class Nested
    ' Add code here.
    End Class
End Class

İç içe geçmiş sınıfın bir örneğini oluşturmak için, kapsayıcı sınıfının adını ve ardından nokta ve ardından iç içe geçmiş sınıfın adını kullanın:

Dim nestedInstance As Container.Nested = New Container.Nested()

Erişim değiştiricileri ve erişim düzeyleri

Tüm sınıflar ve sınıf üyeleri, erişim değiştiricilerini kullanarak diğer sınıflara hangi erişim düzeyini sağ olduklarını belirterek.

Aşağıdaki erişim değiştiricileri kullanılabilir:

Visual Basic Değiştirici Tanım
Genel Türe veya üyeye aynı derlemedeki veya buna başvuran başka bir derlemede bir veya daha fazla kod tarafından erişilebilir.
Özel Türe veya üyeye yalnızca aynı sınıftaki kodla erişilebilir.
Korunamadı Türe veya üyeye yalnızca aynı sınıftaki veya türetilmiş bir sınıftaki kodla erişilebilir.
Arkadaş Türe veya üyeye aynı derlemedeki kod tarafından erişilebilir, ancak başka bir derlemeden erişilebilir.
Protected Friend Türe veya üyeye aynı derlemedeki herhangi bir kod ya da başka bir derlemedeki türetilmiş bir sınıf tarafından erişilebilir.

Daha fazla bilgi için bkz. Visual Basic erişim düzeyleri.

Sınıfları örnekleme

Bir nesne oluşturmak için bir sınıf örneği oluşturmanız veya bir sınıf örneği oluşturmanız gerekir.

Dim sampleObject as New SampleClass()

Bir sınıfı örnekledikten sonra, örneğin özelliklerine ve alanlarına değerler atayabilir ve sınıf yöntemlerini çağırabilirsiniz.

' Set a property value.
sampleObject.SampleProperty = "Sample String"
' Call a method.
sampleObject.SampleMethod()

Sınıf örnek oluşturma işlemi sırasında özelliklere değer atamak için, nesne başlatıcıları kullanın:

Dim sampleObject = New SampleClass With
    {.FirstProperty = "A", .SecondProperty = "B"}

Daha fazla bilgi için bkz.

Paylaşılan sınıflar ve Üyeler

Sınıfın paylaşılan bir üyesi bir sınıfın tüm örnekleri tarafından paylaşılan bir özellik, yordam veya alandır.

Paylaşılan bir üye tanımlamak için:

Class SampleClass
    Public Shared SampleString As String = "Sample String"
End Class

Paylaşılan üyeye erişmek için sınıfın adını bu sınıfın bir nesnesi oluşturmadan kullanın:

MsgBox(SampleClass.SampleString)

Visual Basic paylaşılan modüller yalnızca paylaşılan üyelere sahiptir ve örneklenemez. Paylaşılan Üyeler ayrıca paylaşılmayan özelliklere, alanlara veya yöntemlere erişemez

Daha fazla bilgi için bkz.

Anonim türler

Anonim türler, veri türü için bir sınıf tanımı yazmadan nesneler oluşturmanızı sağlar. Bunun yerine, derleyici sizin için bir sınıf oluşturur. Sınıfın kullanılabilir adı yok ve nesneyi bildirirken belirttiğiniz özellikleri içerir.

Anonim türün bir örneğini oluşturmak için:

' sampleObject is an instance of a simple anonymous type.
Dim sampleObject =
    New With {Key .FirstProperty = "A", .SecondProperty = "B"}

Daha fazla bilgi için bkz: anonim türler.

Devralma

Devralma, başka bir sınıfta tanımlanan davranışı yeniden kullanan, genişleten ve değiştiren yeni bir sınıf oluşturmanıza olanak sağlar. Üyeleri devralınmış olan sınıfa temel sınıf denir ve bu üyeleri devralan sınıfa türetilmiş sınıf denir. ancak Visual Basic içindeki tüm sınıflar, Object .net sınıf hiyerarşisini destekleyen sınıftan dolaylı olarak devralınır ve tüm sınıflara alt düzey hizmetler sağlar.

Not

Visual Basic birden çok devralmayı desteklemez. Diğer bir deyişle, türetilmiş bir sınıf için yalnızca bir temel sınıf belirtebilirsiniz.

Temel sınıftan devralması için:

Class DerivedClass
    Inherits BaseClass
End Class

Varsayılan olarak, tüm sınıflar devralınabilir. Ancak, bir sınıfın temel sınıf olarak kullanılması gerekip gerekmediğini belirtebilir veya yalnızca temel sınıf olarak kullanılabilecek bir sınıf oluşturmanız gerekir.

Bir sınıfın temel sınıf olarak kullanılamayacağını belirtmek için:

NotInheritable Class SampleClass
End Class

Bir sınıfın yalnızca temel sınıf olarak kullanılabileceğini ve örneklenemez olduğunu belirtmek için:

MustInherit Class BaseClass
End Class

Daha fazla bilgi için bkz.

Üyeleri geçersiz kılma

Varsayılan olarak, türetilmiş bir sınıf kendi temel sınıfından tüm üyeleri devralır. Devralınan üyenin davranışını değiştirmek istiyorsanız, onu geçersiz kılmanız gerekir. Diğer bir deyişle, türetilmiş sınıfta yöntemin, özelliğin veya olayın yeni bir uygulamasını tanımlayabilirsiniz.

Özelliklerin ve yöntemlerin nasıl geçersiz kılınabileceğini denetlemek için aşağıdaki değiştiriciler kullanılır:

Visual Basic İcisi Tanım
Overridable Bir sınıf üyesinin türetilmiş bir sınıfta geçersiz kılınmasına izin verir.
Geçersiz Kılmalar Temel sınıfta tanımlanan bir sanal (geçersiz kılınabilir) üyeyi geçersiz kılar.
NotOverridable Devralan bir sınıfta üyenin geçersiz kılınmasını önler.
MustOverride Türetilmiş sınıfta bir sınıf üyesinin geçersiz kılınmasını gerektirir.
Shadows Temel sınıftan devralınan bir üyeyi gizler

Arabirimler

Sınıflar gibi arabirimler, özellikler, Yöntemler ve olaylar kümesi tanımlar. Ancak sınıfların aksine arabirimler uygulama sağlamaz. Sınıflar tarafından uygulanır ve sınıflardan ayrı varlıklar olarak tanımlanır. Arabirim, bir arabirimi uygulayan bir sınıfın, bu arabirimin her yönünü tam olarak tanımlandığı gibi uygulaması gerektiğini belirten bir sözleşmeyi temsil eder.

Bir arabirim tanımlamak için:

Public Interface ISampleInterface
    Sub DoSomething()
End Interface

Bir sınıfa bir arabirim uygulamak için:

Class SampleClass
    Implements ISampleInterface
    Sub DoSomething
        ' Method implementation.
    End Sub
End Class

Daha fazla bilgi için bkz.

Genel Türler

.NET 'teki sınıflar, yapılar, arabirimler ve Yöntemler, depolayabilecekleri veya kullanabileceği nesne türlerini tanımlayan tür parametreleri içerebilir. En yaygın genel türler örneği, bir koleksiyonda depolanacak nesne türlerini belirtebileceğiniz bir koleksiyondur.

Genel bir sınıf tanımlamak için:

Class SampleGeneric(Of T)
    Public Field As T
End Class

Genel sınıfın bir örneğini oluşturmak için:

Dim sampleObject As New SampleGeneric(Of String)
sampleObject.Field = "Sample string"

Daha fazla bilgi için bkz.

Temsilciler

Temsilci , yöntem imzasını tanımlayan bir türdür ve uyumlu imzaya sahip herhangi bir yönteme başvuru sağlayabilir. Yöntemi temsilci aracılığıyla çağırabilir (veya çağırabilirsiniz). Temsilciler, yöntemleri bağımsız değişkenler olarak diğer yöntemlere geçirmek için kullanılır.

Not

Olay işleyicileri, temsilciler aracılığıyla çağrılan yöntemlerden başka bir şey değildir. Olay İşlemede temsilciler kullanma hakkında daha fazla bilgi için bkz. Olaylar.

Bir temsilci oluşturmak için:

Delegate Sub SampleDelegate(ByVal str As String)

Temsilci tarafından belirtilen imzayla eşleşen bir yönteme başvuru oluşturmak için:

Class SampleClass
    ' Method that matches the SampleDelegate signature.
    Sub SampleSub(ByVal str As String)
        ' Add code here.
    End Sub
    ' Method that instantiates the delegate.
    Sub SampleDelegateSub()
        Dim sd As SampleDelegate = AddressOf SampleSub
        sd("Sample string")
    End Sub
End Class

Daha fazla bilgi için bkz.

Ayrıca bkz.