Moduly, struktury a třídy

click fraud protection

Existují pouze tři způsoby, jak uspořádat VB.NET aplikace.

  • Moduly
  • Struktury
  • Třídy

Většina technických článků však předpokládá, že o nich již víte všechno. Pokud jste jedním z mnoha, kteří mají stále několik otázek, mohli byste si jen přečíst ty matoucí kousky a pokusit se na to přijít. A pokud máte hodně času, můžete začít hledat Microsoft dokumentace:

  • "A Module je přenosný spustitelný soubor, jako je type.dll nebo application.exe, sestávající z jedné nebo více tříd a rozhraní."
  • "Příkaz Třída definuje nový datový typ."
  • "Příkaz Struktura definuje typ složené hodnoty, kterou můžete přizpůsobit."

Dobře. Nějaké otázky?

Aby byli společnosti Microsoft trochu spravedlivější, mají stránky a stránky (a další stránky) s informacemi o všech z nich, kterými se můžete projít. A musí být co nejpřesnější, protože stanovují standard. Jinými slovy, dokumentace společnosti Microsoft někdy vypadá jako kniha zákonů, protože to je právní kniha.

Ale pokud se právě učíte .NET, může to být velmi matoucí! Musíte někde začít. Pochopení tří základních způsobů, jak můžete psát kód ve VB.NET, je dobré začít.

instagram viewer

Můžeš psát VB.NET pomocí některého z těchto tří formulářů. Jinými slovy, můžete vytvořit Konzolová aplikace ve VB.NET Express a napište:

Modul Modul1
Sub Main ()
MsgBox („Toto je modul!“)
End Sub
Koncový modul
Třída Třída1
Sub Main ()
MsgBox („Toto je třída“)
End Sub
Koncová třída
Struktura Struktura1
Dim myString jako řetězec
Sub Main ()
MsgBox („Toto je struktura“)
End Sub
Koncová struktura

To nedělá žádný smysl jako program, samozřejmě. Jde o to, že vám nedojde k syntaktické chybě, takže je to „legální“ VB.NET kód.

Tyto tři formy jsou jediným způsobem, jak kódovat kořen královny včel všech .NET: objektu. Jediným prvkem, který přerušuje symetrii těchto tří forem, je prohlášení: Dim myString jako řetězec. To souvisí s tím, že struktura je „typem složených dat“, jak uvádí Microsoft ve své definici.

Další věc, kterou si všimněte, je, že všechny tři bloky mají Sub Main () v nich. Jeden z nejzákladnějších principů OOP se obvykle nazývá zapouzdření. Toto je efekt „černé skříňky“. Jinými slovy, měli byste být schopni zacházet s každým objektem nezávisle a to zahrnuje použití identicky pojmenovaných podprogramů, pokud chcete.

Třídy

Třídy jsou „správné“ místo pro zahájení, protože jako Microsoft poznamenává: „Třída je základní stavební blok objektově orientovaného programování (OOP).“ Ve skutečnosti někteří autoři považují moduly a struktury za speciální druhy tříd. Třída je více objektově orientovaná než modul, protože je to možné instance (vytvořit kopii) třídy, ale ne modul.

Jinými slovy, můžete kódovat ...

Formulář veřejné třídy1
Private Sub Form1_Load (_
Odesílatel ByVal jako systém. Objekt, _
ByVal e As System. EventArgs) _
Popisuje MyBase. Zatížení
Dim myNewClass As Class1 = Nová Class1
myNewClass. ClassSub ()
End Sub
Koncová třída

(Je zdůrazněna instance třídy.)

Nezáleží na tom, zda samotná skutečná třída, v tomto případě ...

Veřejná třída1
Sub ClassSub ()
MsgBox ("Toto je třída")
End Sub
Koncová třída

... je v souboru sám nebo je součástí stejného souboru jako Form1 kód. Program běží přesně stejným způsobem. (Všimněte si toho Form1 je také třída.)

Můžete také psát kód třídy, který se chová podobně jako modul, tj. Bez okamžitého spuštění. Tomu se říká a Sdíleno třída. Článek „Statický“ (tj. „Sdílený“) versus dynamické typy ve VB.NET to vysvětluje mnohem podrobněji.

Je třeba mít na paměti i další skutečnost o třídách. Členové (vlastnosti a metody) třídy existují, pouze pokud instance třídy existuje. Název toho je rozsah. Toto je rozsah instance třídy je omezená. Výše uvedený kód lze tímto způsobem ilustrovat tímto způsobem:

Formulář veřejné třídy1
Private Sub Form1_Load (_
Odesílatel ByVal jako systém. Objekt, _
ByVal e As System. EventArgs) _
Popisuje MyBase. Zatížení
Dim myNewClass As Class1 = Nová Class1
myNewClass. ClassSub ()
myNewClass = Nic
myNewClass. ClassSub ()
End Sub
Koncová třída

Když druhý myNewClass. ClassSub () příkaz je vykonán, NullReferenceException chyba je vyvolána, protože ClassSub člen neexistuje.

Moduly

Ve VB 6 bylo běžné vidět programy, kde byla většina kódu v modulu (A .BAS, spíše než například v a Formulář soubor jako Form1.frm.) Ve VB.NET jsou jak moduly, tak třídy v .VB soubory. Hlavním důvodem, proč jsou moduly součástí VB.NET, je poskytnout programátorům způsob, jak organizovat své systémy umístěním kódu na různá místa, aby bylo možné doladit rozsah a přístup k jejich kód. (To je, jak dlouho členové modulu existují a jaký jiný kód je může odkazovat a používat členy.) Někdy můžete chtít vložit kód do samostatných modulů, abyste s nimi snáze pracovali.

Všechny moduly VB.NET jsou Sdíleno protože nemohou být instancovány (viz výše) a mohou být označeny Příteli nebo Veřejnost takže k nim lze přistupovat buď ve stejné sestavě, nebo kdykoli se na ně odkazuje.

Struktury

Struktury jsou nejméně pochopeny ze tří forem objektů. Kdybychom mluvili o „zvířatech“ místo o „objektech“, struktura by byla Aardvark.

Velký rozdíl mezi strukturou a třídou je, že struktura je typ hodnoty a třída je referenční typ.

Co to znamená? Jsem tak rád, že jste se zeptal.

Typ hodnoty je objekt, který je uložen přímo v paměti. An Celé číslo je dobrým příkladem typu hodnoty. Pokud jste prohlásili Celé číslo ve vašem programu takhle ...

Dim myInt jako Integer = 10

... a zkontrolovali jste umístění paměti uložené v myInt, najdete hodnotu 10. Vidíte to také jako „přidělování na zásobníku“.

Zásobník a halda jsou jednoduše různé způsoby správy využití počítačové paměti.

Typ odkazu je objekt, kde je umístění objektu uloženo v paměti. Takže nalezení hodnoty pro typ odkazu je vždy dvoustupňové vyhledávání. A Tětiva je dobrým příkladem referenčního typu. Pokud jste prohlásili a Tětiva takhle ...

Dim myString as String = "Toto je myString"

... a zkontrolovali jste umístění paměti uložené v myString, najdete jiné umístění paměti (nazývá se ukazatel - tento způsob dělání věcí je srdcem jazyků ve stylu C). Musíte najít místo, kde najdete hodnotu „This is myString“. Toto se často nazývá „přidělování na hromadu“. Zásobník a hromada

Někteří autoři tvrdí, že typy hodnot nejsou ani objekty, a pouze referenční typy mohou být objekty. Určitě je pravda, že sofistikované vlastnosti objektu jako dědičnost a zapouzdření jsou možné pouze u referenčních typů. Celý tento článek jsme však začali tím, že jsme pro objekty existovali tři formy, takže musím akceptovat, že struktury jsou nějaký druh objektu, i když jsou to nestandardní objekty.

Původy struktur programování se vracejí k souborově orientovaným jazykům, jako je Cobol. V těchto jazycích byla data obvykle zpracována jako sekvenční ploché soubory. „Pole“ v záznamu ze souboru byla popsána v části „definice dat“ (někdy nazývané „rozvržení záznamu“ nebo „copybook“). Pokud tedy záznam ze souboru obsahoval:

1234567890ABCDEF9876

Jediným způsobem, jak byste věděli, že "1234567890" bylo telefonní číslo, "ABCDEF" bylo ID a 9876 bylo 98,76 $ prostřednictvím definice dat. Struktury vám to pomohou ve VB.NET.

Struktura Struktura1
Dim myPhone As String
Dim myID jako řetězec
Dim myAmount As String
Koncová struktura

Protože a Tětiva je referenční typ, je nutné udržovat stejnou délku jako VBFixedString atribut pro záznamy s pevnou délkou. Rozšířené vysvětlení tohoto atributu a atributů obecně najdete v článku Atributy v VB .NET.

I když jsou struktury nestandardními objekty, mají ve VB.NET mnoho schopností. Můžete strukturovat metody, vlastnosti a dokonce i události a obsluhy událostí ve strukturách, ale můžete také použít zjednodušený kód a protože jde o typy hodnot, zpracování může být rychlejší. Například výše uvedenou strukturu byste mohli převést takto:

Struktura Struktura1
Dim myPhone As String
Dim myID jako řetězec
Dim myAmount As String
Sub mySub ()
MsgBox („Toto je hodnota myPhone:“ & myPhone)
End Sub
Koncová struktura

A používejte to takto:

Dim myStruct As Structure1
myStruct.myPhone = "7894560123"
myStruct.mySub ()

Stojí za to si čas pohrát se strukturami a naučit se, co mohou dělat. Jsou jedním z lichých rohů VB.NET, který může být kouzelnou kulkou, když ji potřebujete.

instagram story viewer