Moduli, strukture in razredi

Obstajajo samo trije načini organizacije VB.NET prijava.

  • Moduli
  • Strukture
  • Razredi

Toda večina tehničnih člankov predvideva, da o njih že veste. Če ste eden od mnogih, ki imate še vedno nekaj vprašanj, lahko preprosto preberete mimo zmedenih bitov in vseeno poskusite ugotoviti. In če imaš veliko lahko začnete iskati Microsoftovih dokumentacija:

  • "Modul je prenosna izvedljiva datoteka, kot sta type.dll ali application.exe, sestavljena iz enega ali več razredov in vmesnikov."
  • "Stavek razreda določa novo vrsto podatkov."
  • "Stavek Struktura definira sestavljeno vrsto vrednosti, ki jo lahko prilagodite."

Ravno takrat. Kakšno vprašanje?

Če želite biti malce bolj pošteni do Microsofta, imajo strani in strani (in več strani) informacije o vsem tem, do katerih lahko preletite. In biti morajo čim bolj natančni, ker postavljajo standard. Z drugimi besedami, Microsoftova dokumentacija se včasih bere kot pravna knjiga, ker je je pravna knjiga.

Če pa se samo učite .NET, je lahko zelo nejasno! Nekje moraš začeti. Razumevanje treh temeljnih načinov za zapisovanje kode v VB.NET je dobro mesto za začetek.

instagram viewer

Lahko pišete VB.NET kodo z uporabo katerega koli od teh treh oblik. Z drugimi besedami, lahko ustvarite Aplikacija konzole v VB.NET Express in napišite:

Modul Modul1
Sub Main ()
MsgBox ("To je modul!")
Končni pod
Končni modul
Razred Razred1
Sub Main ()
MsgBox ("To je razred")
Končni pod
Končni razred
Struktura strukture1
Zatemni myString kot niz
Sub Main ()
MsgBox ("To je struktura")
Končni pod
Končna struktura

To ne pomeni kaj smisel kot program, seveda. Bistvo je, da ne dobite napake v sintaksi, zato je "zakonito" Koda VB.NET.

Te tri oblike so edini način kodiranja korenine matice vseh .NET: objekta. Edini element, ki prekine simetrijo treh oblik, je izjava: Zatemni myString kot niz. To je povezano s strukturo, ki je "sestavljena vrsta podatkov", kot Microsoft navaja v svoji definiciji.

Še nekaj je treba opozoriti, da imajo vsi trije bloki a Sub Main () v njih. Običajno se imenuje eden najbolj temeljnih načel OOP kapsulacija. To je učinek "črne škatle". Z drugimi besedami, morali bi imeti možnost, da vsak predmet obravnavate neodvisno, kar vključuje uporabo istoimenovanih podprogramov, če želite.

Razredi

Razredi so pravi kraj za začetek, ker, kot Microsoft ugotavlja, "Razred je temeljni gradnik objektno usmerjenega programiranja (OOP)." V resnici nekateri avtorji module in strukture obravnavajo kot le posebne vrste razredov. Razred je bolj objektno orientiran kot modul, ker je to mogoče trenutek (naredite kopijo) razreda, vendar ne modula.

Z drugimi besedami, lahko kodirate ...

Oblika javnega razreda1
Zasebni podoblik1_Load (_
ByVal pošiljatelj kot sistem. Predmet, _
ByVal e As System. EventArgs) _
Rokuje MyBase. Obremenite
Zatemni myNewClass As Class1 = Nov razred1
myNewClass. ClassSub ()
Končni pod
Končni razred

(Pouk razreda je poudarjen.)

Ni pomembno, ali je dejanski razred v tem primeru ...

Javni razred 1. razred
PodrazredSub ()
MsgBox ("To je razred")
Končni pod
Končni razred

... je v datoteki sam ali je del iste datoteke z Obrazec1 Koda. Program teče povsem enako. (Opazite to Obrazec1 je tudi razred.)

Lahko napišete tudi kodo razreda, ki se ponaša podobno kot modul, torej ne da bi ga sprožil. To se imenuje a V skupni rabi razred. Članek "Static" (torej "Shared") v primerjavi z Dynamic Types v VB.NET to razloži veliko bolj podrobno.

Upoštevati je treba še eno dejstvo o pouku. Člani (lastnosti in metode) razreda obstajajo le, ko obstaja primerek razreda. Ime za to je zajemanje. Se pravi Obseg primera razreda je omejeno. Zgornjo kodo lahko spremenite, da to točko ponazorimo na naslednji način:

Oblika javnega razreda1
Zasebni podoblik1_Load (_
ByVal pošiljatelj kot sistem. Predmet, _
ByVal e As System. EventArgs) _
Rokuje MyBase. Obremenite
Zatemni myNewClass As Class1 = Nov razred1
myNewClass. ClassSub ()
myNewClass = Nič
myNewClass. ClassSub ()
Končni pod
Končni razred

Ko drugi myNewClass. ClassSub () izjava se izvrši, a NullReferenceException napaka je vržena, ker ClassSub član ne obstaja.

Moduli

V VB 6 je bilo običajno videti programe, kjer je večina kode v modulu (A .BAS, datoteko namesto v na primer v Oblika datoteka, kot je Form1.frm.) V VB.NET sta vgrajena oba modula in razreda .VB datoteke. Glavni razlog, da so moduli vključeni v VB.NET je ta, da programerjem omogočijo način, da organizirajo svoje sisteme tako, da na različne kraje postavijo kodo, da natančno prilagodijo obseg in dostop do svojih Koda. (To je, kako dolgo člani modula obstajajo in katera druga koda lahko navaja in uporablja člane.) Včasih boste morda želeli kodo vstaviti v ločene module, da bi olajšali delo.

Vsi moduli VB.NET so V skupni rabi ker jih ni mogoče instancirati (glej zgoraj) in jih je mogoče označiti Prijatelj ali Javno do njih lahko dostopate bodisi znotraj istega sklopa bodisi kadar koli se na njih sklicuje.

Strukture

Od treh oblik objektov so strukture najmanj razvite. Če bi govorili o "živalih" namesto o "objektih", bi bila struktura an Aardvark.

Velika razlika med strukturo in razredom je, da je struktura a vrednost vrednosti in razred je a referenčna vrsta.

Kaj to pomeni? Tako sem vesel, da ste vprašali.

Vrednostni tip je predmet, ki je shranjen neposredno v pomnilniku. An Integer je dober primer vrste vrednosti. Če ste razglasili za Integer v vašem programu takole ...

Zatemni kot celo število = 10

... in preverili ste shranjeno pomnilniško mesto vse, našli bi vrednost 10. To vidite tudi kot "dodeljevanje na kupu".

Kopica in kup sta preprosto različna načina upravljanja uporabe računalniškega pomnilnika.

Referenčni tip je objekt, v katerem je lokacija predmeta shranjena v pomnilniku. Torej iskanje vrednosti za referenčni tip je vedno iskanje v dveh korakih. A Vrvica je dober primer referenčne vrste. Če ste razglasili za Vrvica Všečkaj to ...

Dim myString as String = "To je myString"

... in preverili ste shranjeno pomnilniško mesto myString, bi našli drugo pomnilniško mesto (imenovano a kazalec - tak način dela je bistvo jezikov v slogu C). Na to lokacijo morate poiskati vrednost "This is myString". To se pogosto imenuje "dodelitev na hrbtu". Kopica in kup

Nekateri avtorji pravijo, da vrste vrednosti niso niti predmeti in so lahko samo referenčni tipi. Vsekakor drži, da so prefinjene značilnosti predmeta, kot so dedovanje in kapsulacija so možne samo z referenčnimi vrstami. Toda ves ta članek smo začeli z besedami, da obstajajo tri oblike za objekte, zato moram sprejeti, da so strukture nekakšen predmet, čeprav so nestandardni predmeti.

Programsko poreklo struktur sega v datoteke, usmerjene v datoteke, kot je Cobol. V teh jezikih so bili podatki običajno obdelani kot zaporedne ploščate datoteke. "Polja" v zapisu iz datoteke so bila opisana v razdelku "opredelitev podatkov" (včasih imenovanem "postavitev zapisa" ali "kopij"). Če je zapis iz datoteke vseboval:

1234567890ABCDEF9876

Edini način, kako bi vedeli, da je bila "1234567890" telefonska številka, "ABCDEF" je bila ID in 9876 je znašala 98,76 USD prek opredelitve podatkov. Strukture vam pomagajo, da to dosežete v VB.NET.

Struktura strukture1
Zatemni telefon kot niz
Zatemni myID kot struno
Zatemni mojo količino kot niz
Končna struktura

Ker a Vrvica je referenčna vrsta, dolžina mora biti enaka kot VBFixedString atribut za zapise s fiksno dolžino. Razširjeno razlago tega atributa in atributov na splošno najdete v članku Atributi v VB .NET.

Čeprav so strukture nestandardni objekti, imajo v VB.NET veliko zmogljivosti. V strukture lahko kodirate metode, lastnosti in celo dogodke ter obdelovalce dogodkov, lahko pa uporabite tudi bolj poenostavljeno kodo in ker so vrste vrednosti, je obdelava lahko hitrejša. Na primer, lahko zgoraj zberete strukturo takole:

Struktura strukture1
Zatemni telefon kot niz
Zatemni myID kot struno
Zatemni mojo količino kot niz
Pod mySub ()
MsgBox ("To je vrednost myPhone:" & myPhone)
Končni pod
Končna struktura

In uporabite takole:

Zatemni myStruct kot strukturo1
myStruct.myPhone = "7894560123"
myStruct.mySub ()

Vredno je, da se malo poigrate s strukturami in se naučite, kaj lahko naredijo. So eden od nenavadnih kotičkov VB.NET-a, ki je lahko čarobna krogla, ko jo potrebujete.