Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Nesne, birim olarak ele alınabilen 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'te 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. 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 önceden oluşturulmuş yapı taşları gibi davranır; bir kez kod yazmanıza ve tekrar tekrar yeniden kullanmanıza olanak sağlar.
Bu konu başlığında nesneler ayrıntılı olarak açıklanmaktadır.
Nesneler ve sınıflar
Visual Basic'teki 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 kalıpları ve kurabiyeleri düşünün. Kurabiye kesici sınıfıdır. Her tanımlama bilgisinin özelliklerini tanımlar, örneğin boyut ve şekil. sınıfı nesneleri oluşturmak için kullanılır. Nesneler çerezlerdir.
Üyelerine erişebilmek için önce bir nesne oluşturmanız gerekir, ancak Shared
üyeleri sınıfın nesnesi olmadan da erişilebilir.
Sınıftan nesne oluşturma
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
Sınıf örneğini 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
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
Artık nesne değişkeni aracılığıyla sınıfın üyelerine erişebilirsiniz.
nextCustomer.AccountNumber = lastAccountNumber + 1
Uyarı
Mümkün olduğunda, değişkeni 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 var olduktan 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 birinin kendi adı vardır, 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
Bir nesnenin üyesine, sırasıyla nesne değişkeninin adını, nokta (.
) ve üyenin adını belirterek erişebilirsiniz. Aşağıdaki örnek bir Text nesnenin Label özelliğini ayarlar.
warningLabel.Text = "Data not saved"
Üyelerin IntelliSense listesi
IntelliSense, ü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. Bir sınıfın örneği olarak bildirilen bir değişken adının ardından nokta yazarsanız, IntelliSense yalnızca örnek üyelerini listeler ve hiçbir paylaşılan üyeyi göstermez. Sınıf adının sonuna bir nokta koyarsanız, IntelliSense tüm paylaşılan üyeleri listeler, ancak hiçbir örnek üye listelenmez. Daha fazla bilgi için bkz . IntelliSense kullanma.
Alanlar ve özellikler
Alanlar ve özellikler bir nesnede depolanan bilgileri gösterir. Atama deyimleriyle değerlerini, yordamdaki yerel değişkenleri aldığınız ve ayarladığınız gibi alır ve ayarlarsınız. Aşağıdaki örnek Width özelliğini alır ve bir ForeColor nesnesinin Label ö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 önce bir dizi adım gerçekleştirilmesi gerekir.
Şu durumlarda alanları kullanın:
Değer, kendi kendini doğrulayıcı türdedir. Örneğin,
True
değişkenineFalse
veyaBoolean
dışındaki bir değer atandığında hata veya otomatik veri dönüştürme gerçekleşir.Veri türü tarafından desteklenen aralıktaki tüm değerler geçerlidir. Bu,
Single
veyaDouble
türünün 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ı.
Tavsiye
Sabit olmayan alanları her zaman özel tutun. Bunu genel yapmak istediğinizde, bunun yerine bir özellik tanımlayın.
Yöntemler
Yöntem, bir nesnenin gerçekleştirebileceği bir eylemdir. Örneğin, Add bir açılır kutuya yeni bir giriş ekleyen ComboBox nesnesinin yöntemidir.
Aşağıdaki örnekte bir Start nesnenin Timer 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.
Etkinlikler
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 oluşabilir veya sistemden kaynaklanabilir. Bir olayı tetikleyen koda ve olayı yanıtlayan koda işleyen koda denir.
Ayrıca, nesneleriniz tarafından oluşturulacak ve diğer nesneler tarafından işlenecek kendi özel olaylarınızı 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 söz konusu ö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 üye 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
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
Üye erişim ifadesinde, nesne değişkeni adından sonra member-access operatörü (
.
) ve ardından üye adını belirtin.secondForm.Show()
Paylaşılan üyelere erişme
Sınıf adını üye erişim operatörüyle (
.
) takip edin ve ardından üye adını girin. Nesnenin birShared
ü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 bir
Shared
üyeye 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 diğer 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ı ayrı bulunur. Diğer bir fark, standart modüllerden farklı olarak sınıfların arabirimler 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 hala farklıdır.
Uyarı
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 doğrudan sınıf adı kullanılarak erişilir ve modül üyelerine de aynı şekilde 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 mevcuttur. Sınıf üyelerine 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 mevcut 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 bir 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 kendinize biraz çalışma tasarruf edebilirsiniz.
.NET, kullanılabilecek birçok bileşen örneği sağlar. Aşağıdaki örnek, TimeZone ad alanında System sınıfını kullanır. TimeZone, geçerli bilgisayar sisteminin saat dilimi hakkında bilgi almanıza olanak tanıyan üyeler sunar.
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, birinci Dim Deyimi türünde TimeZone olarak bir nesne değişkeni tanımlar ve özellikten TimeZone döndürülen bir CurrentTimeZone nesneyi atar.
Nesneler arasındaki ilişkiler
Nesneler birbiriyle çeşitli yollarla ilişkilendirilebilir. İlişkinin temel türleri hiyerarşik 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 kullanışlı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üretilmiş bir sınıf tanımlama
İhtiyacınız olan nesneyi oluşturacağınız sınıfı tanımlamak için Sınıf Deyimi kullanın.
Public Class ReversibleButton
Bir
End Class
deyiminin sınıfınızdaki son kod satırını izlediğinden emin olun. Varsayılan olarak, tümleşik geliştirme ortamı (IDE), birEnd Class
komutunu girdiğinizde otomatik olarak birClass
oluşturur.Class
deyimini hemen Bir Inherits Deyimi ile 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.
Türetilmiş sınıfınızın ortaya koyduğu ilave üyelerin kodunu 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öntemineReverseColors
ve içindeReversibleButton
tanımladığınız diğer yeni üyelere erişebilir.
Türetilmiş sınıflar, üyeleri temel aldıkları sınıftan devralarak sınıf hiyerarşisinde ilerledikçe 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şebile olduğundan emin olun. Bu, önceki örnekte olduğu gibi adını tam olarak niteleme veya imports deyiminde (.NET Ad Alanı ve Tür) ad alanını tanımlama anlamına gelebilir. Sınıf farklı bir projede bulunuyorsa, o projeye bir referans 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, özelliklerinden Version aracılığıyla döndürülen mantıksal olarak 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, bir koleksiyonun öğeleri arasında yineleme yapmanıza olanak tanıyan For Each...Next Deyimi için belirli bir sözdizimini destekler. Buna ek olarak, koleksiyonlar, öğeleri dizinlerine göre veya benzersiz bir dizeyle ilişkilendirerek almak için bir Item[] kullanmanıza genellikle 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.
İlgili konular
İ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, yöntemleri ve özellikleri, MyClass'ı ve MyBase'i geçersiz kılmayı kapsar.
Nesne Ömrü: Nesnelerin Oluşturulma ve Yok Edilme Şekli
Sınıf örneklerini oluşturma ve yok etme konularını açıklar.
Anonim Tipler
Veri türü için bir sınıf tanımı yazmadan nesne oluşturmanızı sağlayan 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 Tür Bildirimlerinde Özellik Adlarını 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.