Zaujímavý

Moduly, štruktúry a triedy

Moduly, štruktúry a triedy

Existujú iba tri spôsoby, ako usporiadať aplikáciu VB.NET.

  • moduly
  • štruktúry
  • vyučovanie

Väčšina technických článkov však predpokladá, že o nich už viete všetko. Ak ste jedným z mnohých, ktorí majú stále niekoľko otázok, môžete prečítať iba tie mätúce kúsky a napriek tomu sa na to pokúsiť prísť. A ak máte veľa času môžete začať vyhľadávať v dokumentácii spoločnosti Microsoft:

  • "Modul je prenosný spustiteľný súbor, ako je type.dll alebo application.exe, skladajúci sa z jednej alebo viacerých tried a rozhraní."
  • „Príkaz triedy definuje nový typ údajov.“
  • Msgstr "Príkaz Štruktúra definuje typ zloženej hodnoty, ktorú môžete prispôsobiť."

Dobre teda. Nejaké otázky?

Aby boli spoločnosti Microsoft trochu spravodlivejšie, majú stránky a stránky (a ďalšie stránky) informácií o všetkých z nich, ktorými sa môžete prebudiť. A musia byť čo najpresnejšie, pretože stanovujú štandard. Inými slovami, dokumentácia Microsoftu niekedy vyzerá ako kniha zákonov, pretože je to je právna kniha.

Ale ak sa práve učíte .NET, môže to byť veľmi mätúce! Musíte niekde začať. Pochopenie troch základných spôsobov, ako môžete písať kód vo VB.NET, je dobré začať.

Kód VB.NET môžete písať pomocou ktoréhokoľvek z týchto troch formulárov. Inými slovami, môžete vytvoriť Konzolová aplikácia vo VB.NET Express a napíšte:

Modul Modul1
Sub Main ()
MsgBox („Toto je modul!“)
End Sub
Koncový modul
Trieda Trieda1
Sub Main ()
MsgBox („Toto je trieda“)
End Sub
Koncová trieda
Štruktúra Štruktúra1
Dim myString ako reťazec
Sub Main ()
MsgBox („Toto je štruktúra“)
End Sub
Koncová štruktúra

Toto nerobí akýkoľvek zmysel ako program, samozrejme. Ide o to, že nedostanete chybu syntaxe, takže je to „legálny“ kód VB.NET.

Tieto tri formy sú jediným spôsobom, ako kódovať koreň včiel kráľovnej všetkých .NET: objektu. Jediným prvkom, ktorý prerušuje symetriu týchto troch foriem, je tvrdenie: Dim myString ako reťazec, To súvisí so štruktúrou, ktorá je „zloženým typom údajov“, ako uvádza Microsoft vo svojej definícii.

Ďalšou vecou, ​​ktorú si treba všimnúť, je, že všetky tri bloky majú Sub Main () v nich. Jeden z najzákladnejších princípov OOP sa zvyčajne nazýva zapuzdrenie, Toto je efekt „čiernej skrinky“. Inými slovami, mali by ste byť schopní zaobchádzať s každým objektom nezávisle a to zahŕňa použitie identicky pomenovaných podprogramov, ak chcete.

Vyučovanie

Triedy sú tým pravým miestom na začatie, pretože, ako poznamenáva Microsoft, „Trieda je základným stavebným kameňom objektovo orientovaného programovania (OOP).“ V skutočnosti niektorí autori považujú moduly a štruktúry za špeciálne triedy. Trieda je viac objektovo orientovaná ako modul, pretože je to možné vytvoriť inštanciu (vytvoriť kópiu) triedy, ale nie modul.

Inými slovami, môžete kódovať ...

Formulár verejnej triedy1
Súkromný podformulár1_Load (_
Odosielateľ ByVal ako System.Object, _
ByVal e As System.EventArgs) _
Rukoväte MyBase.Load
Dim myNewClass As Class1 = Nová Class1
myNewClass.ClassSub ()
End Sub
Koncová trieda

(Zdôrazňuje sa inštancia triedy.)

Nezáleží na tom, či samotná skutočná trieda, v tomto prípade,…

Verejná trieda1
PodtriedaSub ()
MsgBox („Toto je trieda“)
End Sub
Koncová trieda

... je v samotnom súbore alebo je súčasťou toho istého súboru s Form1 code. Program beží presne rovnakým spôsobom. (Všimni si Form1 je trieda.)

Môžete tiež napísať kód triedy, ktorý sa chová podobne ako modul, to znamená bez toho, aby ste ho okamžite spustili. Toto sa nazýva a zdieľané trieda. Článok „Statický“ (tj „zdieľaný“) verzus dynamické typy vo VB.NET to vysvetľuje oveľa podrobnejšie.

Mali by ste mať na pamäti aj ďalšiu skutočnosť o triedach. členovia (vlastnosti a metódy) triedy existujú iba vtedy, keď existuje inštancia triedy. Názov pre toto je určovania rozsahu, To znamená, že rozsah inštancie triedy je obmedzená. Vyššie uvedený kód je možné týmto spôsobom ilustrovať týmto spôsobom:

Formulár verejnej triedy1
Súkromný podformulár1_Load (_
Odosielateľ ByVal ako System.Object, _
ByVal e As System.EventArgs) _
Rukoväte MyBase.Load
Dim myNewClass As Class1 = Nová Class1
myNewClass.ClassSub ()
myNewClass = Nič
myNewClass.ClassSub ()
End Sub
Koncová trieda

Keď druhý myNewClass.ClassSub () príkaz sa vykoná, a NullReferenceException chyba je vyvolaná, pretože ClassSub člen neexistuje.

Moduly

Vo VB 6 bolo bežné vidieť programy, v ktorých bola väčšina kódu v module (A .BAS, radšej ako súbor v a formulár súbor ako Form1.frm.) Vo VB.NET sú moduly aj triedy v .vb Súbory. Hlavným dôvodom, prečo sú moduly obsiahnuté vo VB.NET, je poskytnúť programátorom spôsob, ako usporiadať svoje systémy umiestnením kódu na rôzne miesta, aby sa doladil rozsah a prístup k ich kódu. (To je, ako dlho členovia modulu existujú a aký iný kód môže odkazovať na členov a používať ich.) Niekedy môžete chcieť vložiť kód do samostatných modulov, aby ste uľahčili prácu s nimi.

Všetky moduly VB.NET sú zdieľané pretože nie je možné vytvoriť inštanciu (pozri vyššie) a môžu byť označené priateľ alebo verejnosť takže k nim možno pristupovať buď v rámci tej istej zostavy alebo kedykoľvek, keď sa na ne odkazuje.

Štruktúry

Štruktúry sú najmenej zrozumiteľné z troch foriem objektov. Keby sme hovorili o „zvieratách“ namiesto „objektov“, štruktúra by bola Aardvark.

Veľký rozdiel medzi štruktúrou a triedou je v tom, že štruktúra je a typ hodnoty a trieda je referenčný typ.

Čo to znamená? Som tak rád, že ste sa pýtali.

Typ hodnoty je objekt, ktorý je uložený priamo v pamäti. celé číslo je dobrým príkladom typu hodnoty. Ak ste vyhlásili celé číslo vo vašom programe, ako je tento ...

Dim myInt ako celé číslo = 10

… A skontrolovali ste miesto uloženia v pamäti Myint, našli by ste hodnotu 10. Túto hodnotu tiež vidíte ako „alokovanú v zásobníku“.

Zásobník a halda sú jednoducho rôzne spôsoby riadenia využívania počítačovej pamäte.

Typ odkazu je objekt, v ktorom je umiestnenie objektu uložené v pamäti. Takže nájdenie hodnoty pre referenčný typ je vždy dvojstupňové vyhľadávanie. povrázok je dobrým príkladom referenčného typu. Ak ste vyhlásili a povrázok ako toto…

Dim myString as String = "Toto je myString"

… A skontrolovali ste miesto uloženia v pamäti MyString, nájdete ďalšie miesto v pamäti (nazýva sa ukazovateľ - tento spôsob robenia vecí je samotným srdcom jazykov v štýle C). Mali by ste ísť na toto miesto, aby ste našli hodnotu „Toto je myString“. Toto sa často nazýva „prideľovanie na hromadu“. Zásobník a halda

Niektorí autori tvrdia, že typy hodnôt nie sú ani objektmi a iba referenčné typy môžu byť objektmi. Určite je pravda, že sofistikované charakteristiky objektu, ako je dedičnosť a zapuzdrenie, sú možné iba pri referenčných typoch. Celý tento článok sme však začali tým, že hovoríme, že pre objekty existujú tri formy, takže musím uznať, že štruktúry sú nejakým objektom, aj keď sú to neštandardné objekty.

Počiatky štruktúr programovania sa vracajú k súborovo orientovaným jazykom ako Cobol. V týchto jazykoch sa údaje zvyčajne spracovávali ako sekvenčné ploché súbory. „Polia“ v zázname zo súboru boli opísané v časti „definícia údajov“ (niekedy nazývané „rozloženie záznamu“ alebo „copybook“). Ak teda záznam zo súboru obsahoval:

1234567890ABCDEF9876

Jediným spôsobom, ako by ste vedeli, že „1234567890“ bolo telefónne číslo, „ABCDEF“ bolo ID a 9876 bolo 98,76 dolárov prostredníctvom definície údajov. Štruktúry vám to pomôžu dosiahnuť vo VB.NET.

Štruktúra Štruktúra1
Dim myPhone ako reťazec
Dim myID ako String
Dim myAmount As String
Koncová štruktúra

Pretože a povrázok je referenčný typ, je potrebné udržiavať rovnakú dĺžku s VBFixedString Atribút pre záznamy s pevnou dĺžkou. Rozšírené vysvetlenie tohto atribútu a atribútov všeobecne nájdete v článku Atribúty vo VB .NET.

Aj keď sú štruktúry neštandardné objekty, vo VB.NET majú veľa možností. Metódy, vlastnosti a dokonca udalosti a obsluhy udalostí môžete kódovať v štruktúrach, ale môžete použiť aj zjednodušený kód a pretože ide o typy hodnôt, spracovanie môže byť rýchlejšie. Napríklad by ste mohli prekódovať vyššie uvedenú štruktúru takto:

Štruktúra Štruktúra1
Dim myPhone ako reťazec
Dim myID ako String
Dim myAmount As String
Sub mySub ()
MsgBox („Toto je hodnota myPhone:“ & myPhone)
End Sub
Koncová štruktúra

A používaj to takto:

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

Stojí za to si čas na trochu pohrať so štruktúrami a dozvedieť sa, čo môžu robiť. Sú jedným z nepárnych rohov VB.NET, ktorý môže byť kúzelnou guľkou, keď ju potrebujete.