Moduļi, struktūras un klases

Ir tikai trīs veidi, kā organizēt a VB.NET pieteikums.

  • Moduļi
  • Konstrukcijas
  • Klases

Bet vairumā tehnisko rakstu tiek pieņemts, ka jūs par tiem jau zināt visus. Ja jūs esat viens no daudzajiem, kam joprojām ir daži jautājumi, jūs varētu vienkārši izlasīt garām neskaidros bitus un mēģināt to izdomāt. Un, ja jums ir daudz laika gaitā jūs varat sākt meklēt Microsoft dokumentācija:

  • "Modulis ir pārnēsājams izpildāms fails, piemēram, type.dll vai application.exe, kas sastāv no vienas vai vairākām klasēm un saskarnēm."
  • "Klases paziņojums definē jaunu datu tipu."
  • "Paziņojums Struktūra definē salikto vērtību tipu, kuru varat pielāgot."

Tieši tad. Kādi jautājumi?

Lai būtu mazliet taisnīgāk pret Microsoft, viņiem ir lapas un lapas (un vairāk lapu) informācijas par visām šīm lietām, kuras varat iziet cauri. Un tiem jābūt pēc iespējas precīzākiem, jo ​​tie nosaka standartu. Citiem vārdiem sakot, Microsoft dokumentācija dažkārt skan kā likumu grāmata, jo tā ir likumu grāmata.

Bet, ja jūs tikai mācāties .NET, tas var būt ļoti mulsinoši! Jums kaut kur jāsāk. Izpratne par trim pamatveidiem, kā VB.NET var rakstīt kodu, ir laba vieta, kur sākt.

instagram viewer

Jūs varat rakstīt VB.NET kodu, izmantojot jebkuru no šīm trim formām. Citiem vārdiem sakot, jūs varat izveidot Konsoles lietojumprogramma VB.NET Express un ierakstiet:

1. modulis
Apakšgalds ()
MsgBox ("Šis ir modulis!")
Beigas apakš
Beigu modulis
Klase 1. klase
Apakšgalds ()
MsgBox ("Šī ir klase")
Beigas apakš
Beigu klase
Struktūra Struct1
Dim myString kā stīgu
Apakšgalds ()
MsgBox ("Šī ir struktūra")
Beigas apakš
Beigu uzbūve

Tas nepadara jebkura jēga kā programma, protams. Lieta ir tāda, ka jūs nesaņemat sintakses kļūdu, tāpēc tā ir "likumīga" VB.NET kods.

Šīs trīs formas ir vienīgais veids, kā kodēt visu .NET objekta bišu saknes. Vienīgais elements, kas pārtrauc triju formu simetriju, ir paziņojums: Dim myString kā stīgu. Tas ir saistīts ar struktūru, kas ir "salikts datu tips", kā to definīcijā norāda Microsoft.

Vēl viena lieta, kas jāņem vērā, ir tā, ka visiem trim blokiem ir a Apakšgalds () viņos. Parasti tiek saukts viens no OOP pamatprincipiem iekapsulēšana. Tas ir "melnās kastes" efekts. Citiem vārdiem sakot, jums vajadzētu būt iespējai izturēties pret katru objektu neatkarīgi, un tas ietver identiski nosauktu apakšprogrammu izmantošanu, ja vēlaties.

Klases

Klases ir “īstā” vieta, kur sākt, jo, kā Microsoft atzīmē: "Klase ir būtiska objektorientētas programmēšanas (OOP) sastāvdaļa." Faktiski daži autori moduļus un struktūras traktē kā tikai īpaša veida nodarbības. Klase ir vairāk orientēta uz objektiem nekā modulis, jo tas ir iespējams instantiate (izveidot kopiju) klasei, bet ne modulim.

Citiem vārdiem sakot, jūs varat kodēt ...

Sabiedriskās klases forma1
Privāta apakšforma1_lodze (_
ByVal sūtītājs kā sistēma. Objekts, _
ByVal e As System. EventArgs) _
Rokturi MyBase. Slodze
Dim myNewClass As Class1 = New1 Class
myNewClass. ClassSub ()
Beigas apakš
Beigu klase

(Tiek uzsvērta klases aktualitāte.)

Nav svarīgi, vai faktiskā klase šajā gadījumā ...

Sabiedriskās klases klase1
Sub ClassSub ()
MsgBox ("Šī ir klase")
Beigas apakš
Beigu klase

... atrodas failā pats par sevi vai ir daļa no tā paša faila ar 1. veidlapa kods. Programma darbojas tieši tāpat. (Ievērojiet to 1. veidlapa ir arī klase.)

Varat arī uzrakstīt klases kodu, kas līdzinās modulim, tas ir, to uzreiz neatkārtojot. To sauc par a Dalīts klase. VB.NET rakstā "Static" (tas ir, "Shared") pret dinamiskajiem tipiem tas ir izskaidrots daudz sīkāk.

Jāpatur prātā arī cits fakts par nodarbībām. Locekļi klases (īpašības un metodes) pastāv tikai tad, kad klases piemērs pastāv. Nosaukums tam ir apjoma noteikšana. Tas ir darbības joma klases gadījumu skaits ir ierobežots. Iepriekš minēto kodu var mainīt, lai ilustrētu šo punktu šādā veidā:

Sabiedriskās klases forma1
Privāta apakšforma1_lodze (_
ByVal sūtītājs kā sistēma. Objekts, _
ByVal e As System. EventArgs) _
Rokturi MyBase. Slodze
Dim myNewClass As Class1 = New1 Class
myNewClass. ClassSub ()
myNewClass = Nekas
myNewClass. ClassSub ()
Beigas apakš
Beigu klase

Kad otrais myNewClass. ClassSub () paziņojums tiek izpildīts, a NullReferenceException kļūda tiek izmesta, jo ClassSub loceklis neeksistē.

Moduļi

VB 6 bija ierasts redzēt programmas, kurās lielākā daļa koda bija modulī (A .BAS, failu, nevis, piemēram, a Forma failu, piemēram, Forma1.frm.) Vietnē VB.NET ir gan moduļi, gan klases .VB failus. Galvenais iemesls, kāpēc moduļi ir iekļauti VB.NET, ir dot programmētājiem iespēju organizēt savas sistēmas, ievietojot kodu dažādās vietās, lai precīzi noregulētu viņu darbības jomu un piekļuvi kods. (Tas ir, cik ilgi moduļa locekļi pastāv un kāds cits kods var atsaukties un izmantot tos.) Dažreiz jūs varat ievietot kodu atsevišķos moduļos tikai tāpēc, lai būtu vieglāk strādāt.

Visi VB.NET moduļi ir Dalīts jo tos nevar uzreiz realizēt (skat. iepriekš) un tos var marķēt Draugs vai Publisks lai tiem varētu piekļūt vai nu tajā pašā montāžā, vai vienmēr, kad uz tiem ir norādes.

Konstrukcijas

No trim objektu formām struktūras ir vismazāk saprotamas. Ja mēs runātu par “dzīvniekiem”, nevis “objektiem”, struktūra būtu tāda Aardvark.

Liela atšķirība starp struktūru un klasi ir tā, ka struktūra ir a vērtības tips un klase ir a atsauces tips.

Ko tas nozīmē? Es esmu tik priecīgs, ka jautājāt.

Vērtības tips ir objekts, kas tiek tieši saglabāts atmiņā. An Vesels skaitlis ir labs vērtības veida piemērs. Ja jūs deklarējāt Vesels skaitlis savā programmā kā šis ...

Dim myInt kā vesels skaitlis = 10

... un jūs pārbaudījāt atmiņā saglabāto vietu myInt, jūs atradīsit vērtību 10. Jūs to redzat arī kā "sadalītu kaudzē".

Kaudze un kaudze ir vienkārši dažādi veidi, kā pārvaldīt datora atmiņas izmantošanu.

Atsauces tips ir objekts, kura atmiņā tiek saglabāta objekta atrašanās vieta. Tātad atsauces veida vērtības atrašana vienmēr ir divpakāpju meklēšana. A Stīgu ir labs atsauces tipa piemērs. Ja jūs deklarējāt Stīgu kā šis ...

Dim myString as string = "Šī ir myString"

... un jūs pārbaudījāt atmiņā saglabāto vietu myString, jūs varētu atrast citu atmiņas vietu (sauktu par rādītājs - šis lietu veikšanas veids ir C stila valodu būtība). Jums vajadzētu doties uz šo vietu, lai atrastu vērtību “This is myString”. To bieži sauc par "sadalīšanu uz kaudzes". Kaudze un kaudze

Daži autori saka, ka vērtību tipi nav pat objekti un objektus var veidot tikai atsauces tipi. Tā noteikti ir taisnība, ka tādas sarežģītas objekta īpašības kā mantojums un iekapsulēšana ir iespējami tikai ar atsauces veidiem. Bet mēs sākām visu šo rakstu, sakot, ka objektiem ir trīs formas, tāpēc man jāpiekrīt, ka struktūras ir kaut kādi objekti, pat ja tie ir nestandarta objekti.

Struktūru programmēšanas pirmsākumi meklējami failos orientētās valodās, piemēram, Kobolā. Šajās valodās dati parasti tika apstrādāti kā secīgi vienkāršie faili. Faila ierakstā esošie "lauki" tika aprakstīti ar sadaļu "datu definīcija" (dažreiz sauktu par "ieraksta izkārtojumu" vai "kopiju grāmatas"). Tātad, ja failā ir ieraksts:

1234567890ABCDEF9876

Vienīgais veids, kā jūs zināt, ka "1234567890" bija tālruņa numurs, "ABCDEF" bija ID un 9876 bija 98,76 USD, izmantojot datu definīciju. Struktūras palīdz to paveikt vietnē VB.NET.

Struktūra Struktūra1
Dim myPhone kā stīgu
Dim myID kā stīgu
Dim myAmount As String
Beigu uzbūve

Jo a Stīgu ir atsauces tips, ir nepieciešams saglabāt garumu vienādu ar VBFixedString atribūts fiksēta garuma ierakstiem. Plašāku šī atribūta un atribūtu skaidrojumu varat atrast rakstā Atribūti VB .NET.

Lai arī struktūras ir nestandarta objekti, tām ir daudz iespēju VB.NET. Jūs varat kodēt metodes, rekvizītus un pat notikumus, kā arī notikumu apstrādātājus struktūrās, taču varat izmantot arī vienkāršotāku kodu, un, tā kā tie ir vērtību veidi, apstrāde var būt ātrāka. Piemēram, jūs varētu pārkodēt iepriekšminēto struktūru šādi:

Struktūra Struktūra1
Dim myPhone kā stīgu
Dim myID kā stīgu
Dim myAmount As String
Sub mySub ()
MsgBox ("Šī ir mana tālruņa vērtība:" un myPhone)
Beigas apakš
Beigu uzbūve

Un izmantojiet to šādi:

Dim myStruct As Struktūra1
myStruct.myPhone = "7894560123"
myStruct.mySub ()

Ir vērts savu laiku, lai mazliet paspēlētos ar struktūrām un uzzinātu, ko viņi var darīt. Viņi ir viens no nepāra VB.NET stūriem, kas var būt burvju lode, kad jums tā nepieciešama.

instagram story viewer