Modüller, Yapılar ve Sınıflar

click fraud protection

Bir organizasyonu organize etmenin sadece üç yolu vardır VB.NET uygulama.

  • Modüller
  • Yapılar
  • Sınıflar

Ancak çoğu teknik makale zaten onlar hakkında her şeyi bildiğinizi varsayar. Hala birkaç soruya sahip olanlardan biriyseniz, kafa karıştırıcı bitleri okuyabilir ve yine de anlamaya çalışabilirsiniz. Ve eğer bir çok zaman içinde aramaya başlayabilirsiniz Microsoft'un belgeleri:

  • "A Module, type.dll ya da application.exe gibi bir veya daha fazla sınıf ve arabirimden oluşan taşınabilir bir dosya dosyası."
  • "Sınıf ifadesi yeni bir veri türü tanımlar."
  • "Structure deyimi, özelleştirebileceğiniz bir bileşik değer türü tanımlar."

Tamam öyleyse. Sorusu olan?

Microsoft'a karşı biraz daha adil olmak için, bunlarla ilgili olarak kullanabileceğiniz sayfalar ve sayfalar (ve daha fazla sayfa) var. Ve standardı belirledikleri için mümkün olduğunca kesin olmalıdırlar. Başka bir deyişle, Microsoft'un belgeleri bazen bir kanun kitabı gibi okunur çünkü dır-dir bir kanun kitabı.

Ama sadece .NET öğreniyorsanız, çok kafa karıştırıcı olabilir! Bir yerden başlamalısın. VB.NET'te kod yazmanın üç temel yolunu anlamak iyi bir başlangıç ​​noktasıdır.

instagram viewer

Yazabilirsin VB.NET bu üç formdan herhangi birini kullanarak kodlayın. Başka bir deyişle, bir Konsol uygulaması VB.NET Express'te yazın ve şunu yazın:

Modül Modülü1
Alt Ana ()
MsgBox ("Bu bir Modül!")
End Sub
Bitiş Modülü
Sınıf Sınıf1
Alt Ana ()
MsgBox ("Bu bir Sınıf")
End Sub
Bitiş Sınıfı
Yapı Yapısı1
MyString As String
Alt Ana ()
MsgBox ("Bu bir Yapıdır")
End Sub
Son Yapı

Bu yapmaz hiç elbette bir program olarak hissetmek. Mesele şu ki bir sözdizimi hatası almıyorsunuz, bu yüzden "yasal" VB.NET kodu.

Bu üç form, tüm .NET'in kraliçe arı kökünü kodlamanın tek yoludur: nesne. Üç formun simetrisini kesintiye uğratan tek unsur ifadedir: MyString As String. Bu, Microsoft'un tanımlarında belirttiği gibi bir Yapının "bileşik veri türü" olmasıyla ilgilidir.

Dikkat edilmesi gereken başka bir şey, her üç bloğun da Alt Ana () onlara. OOP'un en temel ilkelerinden biri genellikle kapsülleme. Bu "kara kutu" etkisidir. Başka bir deyişle, her nesneyi bağımsız olarak ele alabilmelisiniz ve isterseniz aynı adlı alt yordamları da içermelidir.

Sınıflar

Sınıflar başlamak için 'doğru' yerdir, çünkü Microsoft, "Sınıf, nesne yönelimli programlamanın (OOP) temel yapı taşıdır." Aslında, bazı yazarlar modüllere ve yapılara sadece özel sınıflar gibi davranırlar. Sınıf, bir modülden daha nesneye yöneliktir, çünkü örneklendirmek (kopyasını oluştur) sınıf değil modül.

Başka bir deyişle, kodlayabilirsiniz ...

Genel Sınıf Formu1
Özel Alt Form1_Load (_
ByVal gönderici As System. Nesne, _
ByVal e As Sistemi. EventArgs) _
MyBase'i işler. Yük
Dim myNewClass As Class1 = Yeni Class1
myNewClass. ClassSub ()
End Sub
Bitiş Sınıfı

(Sınıf örneği vurgulanır.)

Gerçek sınıfın kendisinin, bu durumda ...

Genel Sınıf Class1
Alt ClassSub ()
MsgBox ("Bu bir sınıftır")
End Sub
Bitiş Sınıfı

... tek başına bir dosyada veya ile aynı dosyanın bir parçası Form1 kodu. Program tamamen aynı şekilde çalışır. (Dikkat edin Form1 aynı zamanda bir sınıftır.)

Bir modül gibi davranan, yani somutlaştırmadan sınıf kodu da yazabilirsiniz. Buna bir Paylaşılan sınıf. VB.NET'teki Dinamik Türlere karşı "Statik" ("Paylaşılan") makalesi bunu daha ayrıntılı olarak açıklamaktadır.

Sınıflarla ilgili bir başka gerçek de akılda tutulmalıdır. Üyeler sınıfın (özellikler ve yöntemler) yalnızca sınıfın örneği varken vardır. Bunun adı kapsam. Yani dürbün bir sınıf örneği sınırlıdır. Yukarıdaki kod bu noktayı şu şekilde göstermek için değiştirilebilir:

Genel Sınıf Formu1
Özel Alt Form1_Load (_
ByVal gönderici As System. Nesne, _
ByVal e As Sistemi. EventArgs) _
MyBase'i işler. Yük
Dim myNewClass As Class1 = Yeni Class1
myNewClass. ClassSub ()
myNewClass = Hiçbir şey
myNewClass. ClassSub ()
End Sub
Bitiş Sınıfı

İkinci myNewClass. ClassSub () ifadesi yürütülür, NullReferenceException hata atılır çünkü ClassSub üye yok.

Modüller

VB 6'da, kodun çoğunun bir modülde olduğu programları görmek yaygındı (A .BAS, örneğin bir dosya yerine Form gibi dosya Form1.frm.) VB.NET'te, hem modüller hem de sınıflar .Vb Dosyalar. Modüllerin VB.NET'e dahil edilmesinin ana nedeni, programcılara kapsamlarını ve erişimine ince ayar yapmak için farklı yerlere kod koyarak sistemlerini organize etmeleri için bir yol sağlamaktır. kod. (Yani, modülün üyelerinin ne kadar süre var olduğunu ve diğer kodların üyelere başvurabileceği ve kullanabileceği.) Bazen, sadece çalışmayı kolaylaştırmak için kodu ayrı modüllere koymak isteyebilirsiniz.

Tüm VB.NET modülleri Paylaşılan çünkü somutlaştırılamazlar (yukarıya bakınız) ve işaretlenebilirler arkadaş veya halka açık böylece aynı derlemede veya başvuruda bulunduklarında erişilebilir.

Yapılar

Yapılar, nesnelerin üç biçiminden en az anlaşılır olanlardır. "Nesneler" yerine "hayvanlar" hakkında konuşsaydık, yapı bir yerdomuzu.

Bir yapı ve sınıf arasındaki en büyük fark, bir yapının değer türü ve bir sınıf bir referans türü.

Bu ne anlama geliyor? Sorduğun için çok memnunum.

Değer türü, doğrudan bellekte depolanan bir nesnedir. bir tamsayı bir değer türüne iyi bir örnektir. Eğer bir tamsayı programınızda böyle ...

MyInt'ı Tamsayı olarak loşla = 10

... ve içinde saklanan hafıza konumunu kontrol ettiniz myInt, 10 değerini bulacaksınız. Bunun "yığın üzerinde tahsis ediliyor" olarak da tanımlandığını görüyorsunuz.

Yığın ve yığın, bilgisayar belleği kullanımını yönetmenin farklı yollarıdır.

Referans türü, nesnenin konumunun bellekte saklandığı bir nesnedir. Dolayısıyla, bir referans türü için bir değer bulmak her zaman iki adımlı bir aramadır. bir sicim referans tipine iyi bir örnektir. Eğer bir sicim bunun gibi ...

Dim myString as String = "Bu myString"

... ve içinde saklanan hafıza konumunu kontrol ettiniz MyString, başka bir bellek konumu ( Işaretçi - bir şeyler yapmanın yolu C tarzı dillerin kalbidir). "This is myString" değerini bulmak için o konuma gitmeniz gerekir. Buna genellikle "öbekte tahsis ediliyor" denir. Yığın ve yığın

Bazı yazarlar değer türlerinin nesne olmadığını ve yalnızca referans türlerinin nesne olabileceğini söylüyor. Kalıtım gibi karmaşık nesne özelliklerinin kapsülleme yalnızca referans türleriyle mümkündür. Ancak bu makaleye nesneler için üç form olduğunu söyleyerek başladık, bu yüzden standart olmayan nesneler olsa bile yapıların bir tür nesne olduğunu kabul etmeliyim.

Yapıların programlama kökenleri Cobol gibi dosya odaklı dillere geri döner. Bu dillerde veriler normalde sıralı düz dosyalar olarak işlenir. Dosyadaki bir kayıttaki "alanlar" bir "veri tanımı" bölümü (bazen "kayıt düzeni" veya "defterini" olarak adlandırılır) ile tanımlanır. Yani, dosyadan bir kayıt içeriyorsa:

1234567890ABCDEF9876

"1234567890" bir telefon numarası, "ABCDEF" bir kimlik ve 9876 $ 98.76 veri tanımı ile olduğunu bilmek için tek yolu. Yapılar VB.NET'te bunu başarmanıza yardımcı olur.

Yapı Yapısı1
MyPhone'u Dize Olarak Karart
MyID As String
MyAmount As String
Son Yapı

Çünkü sicim bir referans türüdür, uzunluğu aynı tutmak için gereklidir VBFixedString sabit uzunluklu kayıtlar için öznitelik. Bu özelliğin ve niteliklerin genel bir açıklamasını Genel olarak şu makalede bulabilirsiniz: VB .NET.

Yapılar standart olmayan nesneler olmasına rağmen, VB.NET'te çok fazla kapasiteye sahiptirler. Yapılarda yöntemleri, özellikleri ve hatta olayları ve olay işleyicilerini kodlayabilirsiniz, ancak daha basitleştirilmiş kod da kullanabilirsiniz ve bunlar değer türleri olduğu için işlem daha hızlı olabilir. Örneğin, yukarıdaki yapıyı şu şekilde yeniden kodlayabilirsiniz:

Yapı Yapısı1
MyPhone'u Dize Olarak Karart
MyID As String
MyAmount As String
Alt mySub ()
MsgBox ("Bu myPhone'un değeri:" ve myPhone)
End Sub
Son Yapı

Ve şu şekilde kullanın:

MyStruct Yapısı Olarak Dim1
myStruct.myPhone = "7894560123"
myStruct.mySub ()

Yapılarla biraz oynamak ve ne yapabileceklerini öğrenmek için zaman ayırmaya değer. VB.NET'in ihtiyacınız olduğunda sihirli bir mermi olabilen tuhaf köşelerinden biridir.

instagram story viewer