Visual Basic'deki nesneler ve sınıflar

Nesne, birim olarak ele alınabilecek kod ve verilerin birleşimidir. Nesne, denetim veya form gibi bir uygulamanın parçası olabilir. Uygulamanın tamamı bir nesne de olabilir.

Visual Basic'de bir uygulama oluşturduğunuzda, nesnelerle sürekli çalışırsınız. denetimler, formlar ve veri erişim nesneleri gibi Visual Basic tarafından sağlanan nesneleri kullanabilirsiniz. Ayrıca, Visual Basic uygulamanızdaki diğer uygulamalardaki nesneleri de kullanabilirsiniz. Hatta kendi nesnelerinizi oluşturabilir ve bunlar için ek özellikler ve yöntemler tanımlayabilirsiniz. Nesneler programlar için prefabrik yapı taşları gibi davranır; bir kez kod yazmanızı ve tekrar tekrar yeniden kullanmanıza olanak sağlar.

Bu konu başlığında nesneler ayrıntılı olarak ele alınmaktadır.

Nesneler ve sınıflar

Visual Basic içindeki her nesne bir sınıf tarafından tanımlanır. Sınıf, bir nesnenin değişkenlerini, özelliklerini, yordamlarını ve olaylarını açıklar. Nesneler sınıfların örnekleridir; bir sınıf tanımladıktan sonra ihtiyacınız olan sayıda nesne oluşturabilirsiniz.

Bir nesne ile sınıfı arasındaki ilişkiyi anlamak için kurabiye kesicileri ve tanımlama bilgilerini düşünün. Kurabiye kesici sınıfıdır. Her tanımlama bilgisinin boyut ve şekil gibi özelliklerini tanımlar. sınıfı nesneleri oluşturmak için kullanılır. Nesneler tanımlama bilgileridir.

Sınıfın bir nesnesi olmadan erişilebilen üyeler dışında, üyelerine erişebilmek için Shared önce bir nesne oluşturmanız gerekir.

Sınıftan nesne oluşturma

  1. Nesne oluşturmak istediğiniz sınıfı belirleyin veya kendi sınıfınızı tanımlayın. Örneğin:

    Public Class Customer
        Public Property AccountNumber As Integer
    End Class
    
  2. Sınıf örneği atayabileceğiniz bir değişken oluşturmak için bir Dim Deyimi yazın. değişkeni istenen sınıfın türünde olmalıdır.

    Dim nextCustomer As Customer
    
  3. Değişkeni sınıfın yeni bir örneğine başlatmak için New Operator anahtar sözcüğünü ekleyin.

    Dim nextCustomer As New Customer
    
  4. Artık nesne değişkeni aracılığıyla sınıfın üyelerine erişebilirsiniz.

    nextCustomer.AccountNumber = lastAccountNumber + 1
    

Not

Mümkün olduğunda, değişkeni ona atamak istediğiniz sınıf türünde olacak şekilde bildirmeniz gerekir. Buna erken bağlama denir. Derleme zamanında sınıf türünü bilmiyorsanız, değişkenini Nesne Veri Türünde olarak bildirerek geç bağlamayı çağırabilirsiniz. Ancak geç bağlama performansı yavaşlatabilir ve çalışma zamanı nesnesinin üyelerine erişimi sınırlayabilir. Daha fazla bilgi için bkz . Nesne Değişkeni Bildirimi.

Birden çok örnek

Bir sınıftan yeni oluşturulan nesneler genellikle birbiriyle aynıdır. Ancak bağımsız nesneler olarak varolduktan sonra değişkenleri ve özellikleri diğer örneklerden bağımsız olarak değiştirilebilir. Örneğin, bir forma üç onay kutusu eklerseniz, her onay kutusu nesnesi sınıfın CheckBox bir örneğidir. Tek tek CheckBox nesneler, sınıfı tarafından tanımlanan ortak bir özellik ve özellik kümesini (özellikler, değişkenler, yordamlar ve olaylar) paylaşır. Ancak, her biri kendi adına sahiptir, ayrı olarak etkinleştirilebilir ve devre dışı bırakılabilir ve formda farklı bir konuma yerleştirilebilir.

Nesne üyeleri

Nesne, bir sınıfın örneğini temsil eden bir uygulamanın öğesidir. Alanlar, özellikler, yöntemler ve olaylar nesnelerin yapı taşlarıdır ve üyelerini oluşturur.

Üye Erişimi

Sırasıyla nesne değişkeninin adını, nokta. () ve üyenin adını belirterek bir nesnenin üyesine erişebilirsiniz. Aşağıdaki örnek bir Label nesnenin Text özelliğini ayarlar.

warningLabel.Text = "Data not saved"

Üyelerin IntelliSense listesi

IntelliSense, örneğin üye erişim işleci olarak nokta (.) yazdığınızda, Liste Üyeleri seçeneğini çağırdığınızda sınıfın üyelerini listeler. Bu sınıfın bir örneği olarak bildirilen değişkenin adını izleyen dönemi yazarsanız, IntelliSense tüm örnek üyelerini listeler ve paylaşılan üyelerin hiçbirini listelemiyor. Sınıf adının kendisini izleyen dönemi yazarsanız, IntelliSense tüm paylaşılan üyeleri listeler ve örnek üyelerin hiçbirini listeler. Daha fazla bilgi için bkz. IntelliSense kullanma.

Alanlar ve özellikler

Alanlar ve özellikler bir nesnede depolanan bilgileri temsil eden özelliklerdir. Atama deyimleriyle değerlerini bir yordamda yerel değişkenleri aldığınız ve ayarladığınız gibi alır ve ayarlarsınız. Aşağıdaki örnek özelliğini alır Width ve bir Label nesnenin ForeColor özelliğini ayarlar.

Dim warningWidth As Integer = warningLabel.Width
warningLabel.ForeColor = System.Drawing.Color.Red

Bir alanın üye değişkeni olarak da adlandırıldığını unutmayın.

Aşağıdaki durumlarda özellik yordamlarını kullanın:

  • Bir değerin ne zaman ve nasıl ayarlandığını veya alınıp alınyacağını denetlemeniz gerekir.

  • özelliği, doğrulanması gereken iyi tanımlanmış bir değer kümesine sahiptir.

  • Değerin ayarlanması, nesnenin durumunda bir özellik gibi algılanabilir bir IsVisible değişikliğe neden olur.

  • özelliğinin ayarlanması, diğer iç değişkenlerde veya diğer özelliklerin değerlerinde değişikliklere neden olur.

  • Özelliğin ayarlanabilmesi veya alınabilmesi için bir dizi adımın gerçekleştirilmesi gerekir.

Şu durumlarda alanları kullanın:

  • Değer, kendi kendini doğrulayıcı türdedir. Örneğin, veya dışında True bir değer bir değişkene atandığında hata Boolean veya False otomatik veri dönüştürme oluşur.

  • Aralıktaki veri türü tarafından desteklenen herhangi bir değer geçerlidir. Bu, veya Doubletürünün Single birçok özelliği için geçerlidir.

  • özelliği bir String veri türüdür ve dizenin boyutu veya değeri üzerinde bir kısıtlama yoktur.

  • Daha fazla bilgi için bkz . Özellik Yordamları.

İpucu

Sabit olmayan alanları her zaman özel tutun. Bunu genel yapmak istediğinizde, bunun yerine bir özellik kullanın.

Yöntemler

Yöntem, bir nesnenin gerçekleştirebileceği bir eylemdir. Örneğin, Add birleşik giriş kutusuna ComboBox yeni bir giriş ekleyen nesnenin yöntemidir.

Aşağıdaki örnekte bir Timer nesnenin Start yöntemi gösterilmektedir.

Dim safetyTimer As New System.Windows.Forms.Timer
safetyTimer.Start()

Bir yöntemin yalnızca bir nesne tarafından kullanıma sunulan bir yordam olduğunu unutmayın.

Daha fazla bilgi için bkz . Yordamlar.

Ekinlikler

Olay, fareye tıklama veya bir tuşa basma gibi nesne tarafından tanınan ve yanıt vermek üzere kod yazabileceğiniz bir eylemdir. Olaylar bir kullanıcı eyleminin veya program kodunun sonucu olarak gerçekleşebilir veya sistemden kaynaklanabilir. Olayı tetiklediğini belirten kod ve buna yanıt veren kodun olayı işlediği söylenir.

Nesneleriniz tarafından oluşturulacak ve diğer nesneler tarafından işlenecek kendi özel olaylarınızı da geliştirebilirsiniz. Daha fazla bilgi için bkz . Olaylar.

Örnek üyeleri ve paylaşılan üyeler

Bir sınıftan nesne oluşturduğunuzda, sonuç bu sınıfın bir örneğidir. Shared anahtar sözcüğüyle bildirilmeyen üyeler, kesinlikle bu örneğe ait olan örnek üyeleridir. Bir örnekteki örnek üyesi, aynı sınıfın başka bir örneğindeki aynı üyeden bağımsızdır. Örneğin bir örnek üyesi değişkeninin farklı örneklerde farklı değerleri olabilir.

anahtar sözcüğüyle Shared bildirilen üyeler, belirli bir örneğe değil, bir bütün olarak sınıfına ait olan paylaşılan üyelerdir. Paylaşılan üye, sınıfının kaç örneğini oluşturursanız oluşturun veya hiç örnek oluşturmasanız bile yalnızca bir kez bulunur. Örneğin, paylaşılan üye değişkeninin yalnızca bir değeri vardır ve bu değer sınıfa erişebilen tüm kodlar tarafından kullanılabilir.

Paylaşılmayan üyelere erişme

  1. Nesnesinin sınıfından oluşturulduğundan ve bir nesne değişkenine atandığından emin olun.

    Dim secondForm As New System.Windows.Forms.Form
    
  2. Üyeye erişen deyimde, üye erişim işleci (.) ve ardından üye adı ile nesne değişkeni adını izleyin.

    secondForm.Show()
    

Paylaşılan üyelere erişme

  • Sınıf adını üye erişim işleciyle (.) ve ardından üye adıyla izleyin. Nesnenin bir Shared üyesine her zaman doğrudan sınıf adı üzerinden erişmeniz gerekir.

    Console.WriteLine("This computer is called " & Environment.MachineName)
    
  • Sınıfından zaten bir nesne oluşturduysanız, alternatif olarak nesnenin değişkeni aracılığıyla üyeye Shared erişebilirsiniz.

Sınıflar ve modüller arasındaki farklar

Sınıflar ve modüller arasındaki temel fark, standart modüller oluşturulamazken sınıfların nesne olarak örneklenebilir olmasıdır. Standart modül verilerinin yalnızca bir kopyası olduğundan, programınızın bir bölümü standart modüldeki ortak değişkeni değiştirdiğinde, programın başka bir bölümü bu değişkeni okursa aynı değeri alır. Buna karşılık, her örnek nesne için nesne verileri ayrı olarak bulunur. Bir diğer fark, standart modüllerden farklı olarak sınıfların arabirimleri uygulayabilmesidir. Bir sınıf MustInherit değiştiricisi ile işaretlenmişse, doğrudan örneği oluşturulamaz. Ancak modüller devralınamazken devralınabileceği için modülden farklıdır.

Not

Shared Değiştirici bir sınıf üyesine uygulandığında, sınıfın belirli bir örneği yerine sınıfın kendisiyle ilişkilendirilir. Üyeye, modül üyelerine erişilirken olduğu gibi sınıf adı kullanılarak doğrudan erişilir.

Sınıflar ve modüller de üyeleri için farklı kapsamlar kullanır. Bir sınıf içinde tanımlanan üyelerin kapsamı, sınıfın belirli bir örneğinde yer alır ve yalnızca nesnenin ömrü boyunca bulunur. Sınıf üyelerine bir sınıfın dışından erişmek için , Nesne biçiminde tam adlar kullanmanız gerekir. Üye.

Öte yandan, modül içinde bildirilen üyelere varsayılan olarak genel erişim sağlanır ve modüle erişebilen tüm kodlar tarafından erişilebilir. Bu, standart modüldeki değişkenlerin projenizin herhangi bir yerinden görülebildiğinden ve programın ömrü boyunca var olduklarından etkili bir şekilde genel değişkenler olduğu anlamına gelir.

Sınıfları ve nesneleri yeniden kullanma

Nesneler, değişkenleri ve yordamları bir kez bildirmenize ve gerektiğinde bunları yeniden kullanmanıza olanak sağlar. Örneğin, bir uygulamaya yazım denetleyicisi eklemek istiyorsanız, yazım denetimi işlevselliği sağlamak için tüm değişkenleri ve destek işlevlerini tanımlayabilirsiniz. Yazım denetleyicisini sınıf olarak oluşturursanız, derlenmiş derlemeye başvuru ekleyerek bunu diğer uygulamalarda yeniden kullanabilirsiniz. Daha da iyisi, başka birinin daha önce geliştirmiş olduğu bir yazım denetleyicisi sınıfını kullanarak çalışmanızı kaydedebilirsiniz.

.NET, kullanılabilecek birçok bileşen örneği sağlar. Aşağıdaki örnek, ad alanında sınıfını System kullanırTimeZone. TimeZone , geçerli bilgisayar sisteminin saat dilimi hakkında bilgi almanıza olanak sağlayan üyeler sağlar.

Public Sub ExamineTimeZone()
    Dim tz As System.TimeZone = System.TimeZone.CurrentTimeZone
    Dim s As String = "Current time zone is "
    s &= CStr(tz.GetUtcOffset(Now).Hours) & " hours and "
    s &= CStr(tz.GetUtcOffset(Now).Minutes) & " minutes "
    s &= "different from UTC (coordinated universal time)"
    s &= vbCrLf & "and is currently "
    If tz.IsDaylightSavingTime(Now) = False Then s &= "not "
    s &= "on ""summer time""."
    Console.WriteLine(s)
End Sub

Yukarıdaki örnekte, ilk Dim Deyimi türünde TimeZone bir nesne değişkeni bildirir ve özelliği tarafından CurrentTimeZone döndürülen bir TimeZone nesne atar.

Nesneler arasındaki ilişkiler

Nesneler çeşitli yollarla birbiriyle ilişkilendirilebilir. İlişkinin temel türleri hiyerarşiktir ve kapsamadır.

Hiyerarşik ilişki

Sınıflar daha temel sınıflardan türetildiğinde hiyerarşik bir ilişkiye sahip oldukları söylenir. Sınıf hiyerarşileri, daha genel bir sınıfın alt türü olan öğeleri açıklarken yararlıdır.

Aşağıdaki örnekte, normal Button gibi davranan ancak ön plan ve arka plan renklerini tersine çeviren bir yöntemi de kullanıma sunan özel bir tür Button tanımlamak istediğinizi varsayalım.

Zaten var olan bir sınıftan türetilen bir sınıf tanımlama

  1. İhtiyacınız olan nesneyi oluşturacağınız bir sınıf tanımlamak için Sınıf Deyimi kullanın.

    Public Class ReversibleButton
    

    Deyiminin End Class sınıfınızdaki son kod satırını izlediğinden emin olun. Varsayılan olarak, tümleşik geliştirme ortamı (IDE) bir deyimi girdiğinizde otomatik olarak bir Class oluştururEnd Class.

  2. ClassBir Inherits Deyimi ile deyimini hemen izleyin. Yeni sınıfınızın türetildiği sınıfı belirtin.

    Inherits System.Windows.Forms.Button
    

    Yeni sınıfınız, temel sınıf tarafından tanımlanan tüm üyeleri devralır.

  3. Türetilmiş sınıfınızın kullanıma sunulan ek üyeler için kodu ekleyin. Örneğin, bir ReverseColors yöntem ekleyebilirsiniz ve türetilmiş sınıfınız aşağıdaki gibi görünebilir:

    Public Class ReversibleButton
        Inherits System.Windows.Forms.Button
            Public Sub ReverseColors()
                Dim saveColor As System.Drawing.Color = Me.BackColor
                Me.BackColor = Me.ForeColor
                Me.ForeColor = saveColor
           End Sub
    End Class
    

    sınıfından ReversibleButton bir nesne oluşturursanız, sınıfın tüm üyelerine Button , yöntemine ReverseColors ve içinde ReversibleButtontanımladığınız diğer tüm yeni üyelere erişebilir.

Türetilmiş sınıflar, temel aldıkları sınıftan üyeleri devralır ve bir sınıf hiyerarşisinde ilerlerken karmaşıklık eklemenize olanak sağlar. Daha fazla bilgi için bkz . Devralma Temelleri.

Kodu derleme

Derleyicinin, yeni sınıfınızı türetmek istediğiniz sınıfa erişebildiğinizden emin olun. Bu, önceki örnekte olduğu gibi adını tam olarak niteleme veya ad alanını imports deyiminde (.NET Ad Alanı ve Türü) tanımlamak anlamına gelebilir. Sınıf farklı bir projedeyse, bu projeye bir başvuru eklemeniz gerekebilir. Daha fazla bilgi için bkz. Projedeki başvuruları yönetme.

Kapsama ilişkisi

Nesnelerin ilişkilendirilebileceği bir diğer yol da kapsama ilişkisidir. Kapsayıcı nesneleri mantıksal olarak diğer nesneleri kapsüller. Örneğin, OperatingSystem nesnesi mantıksal olarak özelliği aracılığıyla Version döndürdüğü bir Version nesnesi içerir. Kapsayıcı nesnesinin fiziksel olarak başka bir nesne içermediğini unutmayın.

Koleksiyonlar

Belirli bir nesne kapsama türü koleksiyonlar tarafından temsil edilir. Koleksiyonlar, numaralandırılabilir benzer nesne gruplarıdır. Visual Basic, For Each... Bir koleksiyonun öğeleri arasında yineleme yapmanızı sağlayan Next Deyimi. Ayrıca, koleksiyonlar genellikle öğeleri dizinlerine göre veya benzersiz bir dizeyle ilişkilendirerek almak için bir kullanmanıza Item[] olanak sağlar. Dizinleri kullanmadan öğe eklemenize veya kaldırmanıza olanak sağladığından koleksiyonların kullanılması dizilerden daha kolay olabilir. Kullanım kolaylığı nedeniyle koleksiyonlar genellikle formları ve denetimleri depolamak için kullanılır.

İzlenecek Yol: Sınıfları Tanımlama
Sınıf oluşturma hakkında adım adım bir açıklama sağlar.

Aşırı Yüklenmiş Özellikler ve Yöntemler
Aşırı Yüklenmiş Özellikler ve Yöntemler

Devralma Temelleri
Devralma değiştiricilerini kapsar; yöntemleri ve özellikleri geçersiz kılma, MyClass ve MyBase.

Nesne Ömrü: Nesneleri Oluşturma ve Yok Etme
Sınıf örneklerinin oluşturulmasını ve yok sayılması ele alınmaktadır.

Anonim Türler
Veri türü için bir sınıf tanımı yazmadan nesne oluşturmanıza olanak tanıyan anonim türlerin nasıl oluşturulacağını ve kullanılacağını açıklar.

Nesne Başlatıcıları: Adlandırılmış ve Anonim Türler
Tek bir ifade kullanarak adlandırılmış ve anonim türlerin örneklerini oluşturmak için kullanılan nesne başlatıcılarını açıklar.

Nasıl yapılır: Anonim Tip Bildirimlerinden Özellik Adları ve Türlerini Çıkarma
Anonim tür bildirimlerinde özellik adlarının ve türlerinin nasıl çıkarileceğini açıklar. Başarılı ve başarısız çıkarım örnekleri sağlar.