A korraldamiseks on vaid kolm viisi VB.NET rakendus.
- Moodulid
- Konstruktsioonid
- Klassid
Kuid enamik tehnilisi artikleid eeldab, et teate neist juba kõike. Kui olete üks paljudest, kellel on veel vähe küsimusi, võiksite lihtsalt segastest bittidest mööda lugeda ja proovida seda niikuinii välja mõelda. Ja kui teil on palju aja jooksul võite alustada otsimist Microsofti oma dokumentatsioon:
- "Moodul on kaasaskantav käivitatav fail, näiteks type.dll või application.exe, mis koosneb ühest või mitmest klassist ja liidesest."
- "Klassi avaldus määratleb uue andmetüübi."
- "Struktuuri avaldus määratleb liitväärtuse tüübi, mida saate kohandada."
Just siis. Kas küsimusi on?
Microsofti suhtes pisut õiglasem on, et neil on kõigi nende kohta lehekülgi ja lehti (ja rohkem lehti) (ja rohkem lehti), millest saate mööda vaadata. Ja need peavad olema võimalikult täpsed, sest nad seavad normi. Teisisõnu, Microsofti dokumentatsioon loeb mõnikord nagu seaduseraamat, sest see on seaduseraamat.
Kuid kui õpite ainult .NET-i, võib see olla väga segane! Kuskilt peate alustama. VB.NET-is koodi kirjutamise kolme peamise viisi mõistmine on hea koht alustamiseks.
Võite kirjutada VB.NET koodi, kasutades mõnda neist kolmest vormist. Teisisõnu, saate luua a Konsoolirakendus VB.NET Expressis ja kirjuta:
Moodul Moodul1
Alam Main ()
MsgBox ("See on moodul!")
Lõpu alam
Lõppmoodul
Klass 1. klass
Alam Main ()
MsgBox ("See on klass")
Lõpu alam
Lõpuklass
Struktuuristruktuur1
Dim myString kui string
Alam Main ()
MsgBox ("See on struktuur")
Lõpu alam
Lõppstruktuur
See ei tee mis tahes mõttes muidugi saatena. Asi on selles, et te ei saa süntaksiviga, nii et see on "seaduslik" VB.NET-kood.
Need kolm vormi on ainus viis kõigi .NET-i objektide mesilasema juure koodimiseks. Ainus element, mis kolme vormi sümmeetriat segab, on lause: Dim myString kui string. See on seotud struktuuriga, mis on "liitandmete tüüp", nagu Microsoft nende määratluses väidab.
Veel tuleb tähele panna, et kõigil kolmel plokil on a Alam Main () neis. Tavaliselt nimetatakse OOP-i ühte kõige põhilisemat printsiipi kapseldamine. See on "musta kasti" efekt. Teisisõnu, teil peaks olema võimalus käsitleda igat objekti iseseisvalt ja see hõlmab soovi korral identselt nimetatud alamprogrammide kasutamist.
Klassid
Klassid on "õige" koht alustamiseks, sest, nagu Microsoft märgib: "Klass on objektorienteeritud programmeerimise (OOP) põhiosa." Tegelikult käsitlevad mõned autorid mooduleid ja struktuure lihtsalt spetsiaalsete klassidena. Klass on rohkem objektorienteeritud kui moodul, kuna see on võimalik silmapilk (tee koopia) klassist, kuid mitte moodulist.
Teisisõnu, saate kodeerida ...
Avaliku klassi vorm1
Privaatne alavorm1_koormus (_
ByVal saatja kui süsteem. Objekt, _
ByVal e As süsteem. EventArgs) _
Käsitseb MyBase'i. Koormus
Dim myNewClass As Class1 = New Class1
myNewClass. ClassSub ()
Lõpu alam
Lõpuklass
(Rõhutatakse klassi hetkeseisu.)
Pole tähtis, kas antud juhul tegelik klass ise ...
Avalik klass 1. klass
AlamklassSub ()
MsgBox ("See on klass")
Lõpu alam
Lõpuklass
... on failis eraldi või on osa samast failist Vorm1 kood. Programm töötab täpselt samamoodi. (Märka seda Vorm1 on ka klass.)
Võite kirjutada ka klassikoodi, mis käitub sarnaselt mooduliga, st seda ilma seda viivitamata kordama. Seda nimetatakse a-ks Jagatud klass. VB.NET-i artikkel "Staatiline" (see tähendab "Jagatud") võrreldes dünaamiliste tüüpidega selgitab seda palju üksikasjalikumalt.
Meeles tuleks pidada ka teist tõsiasja tundide kohta. Liikmed Klass (omadused ja meetodid) eksisteerivad ainult siis, kui klassi eksemplar on olemas. Selle nimi on ulatuse määramine. See tähendab, et ulatus klassi eksemplari arv on piiratud. Ülaltoodud koodi saab selle punkti illustreerimiseks muuta nii:
Avaliku klassi vorm1
Privaatne alavorm1_koormus (_
ByVal saatja kui süsteem. Objekt, _
ByVal e As süsteem. EventArgs) _
Käsitseb MyBase'i. Koormus
Dim myNewClass As Class1 = New Class1
myNewClass. ClassSub ()
myNewClass = Mitte midagi
myNewClass. ClassSub ()
Lõpu alam
Lõpuklass
Kui teine myNewClass. ClassSub () avaldus täidetakse, a NullReferenceException viga visatakse, kuna ClassSub liiget pole olemas.
Moodulid
VB 6-s oli tavaline näha programme, kus suurem osa koodist oli moodulis (A .BAS, faili, mitte näiteks a Vorm faili nagu Vorm1.frm.) VB.NET-is on nii moodulid kui ka klassid sees .VB faile. Peamine põhjus, miks moodulid VB.NET-i kaasatakse, on anda programmeerijatele võimalus oma süsteemide korraldamiseks, paigutades koodi erinevatesse kohtadesse, et täpsustada nende rakendusala ja juurdepääsu kood. (See tähendab, kui kaua mooduli liikmed eksisteerivad ja milline muu kood osutab liikmetele kasutamist ja kasutamist.) Mõnikord võiksite panna koodi eraldi moodulitesse lihtsalt selleks, et sellega oleks lihtsam töötada.
Kõik VB.NET moodulid on Jagatud kuna neid ei saa kohe realiseerida (vt eespool) ja neid saab tähistada Sõber või Avalik nii et neile pääseb juurde kas samast koosseisust või alati, kui neile viidatakse.
Konstruktsioonid
Objektide kolmest vormist on konstruktsioonid kõige vähem mõistetavad. Kui me räägiksime objektide asemel "loomadest", oleks struktuur selline Aardvark.
Suur erinevus struktuuri ja klassi vahel on see, et struktuur on a väärtuse tüüp ja klass on a viite tüüp.
Mida see tähendab? Mul on nii hea meel, et te küsisite.
Väärtuse tüüp on objekt, mis salvestatakse otse mällu. An Täisarv on hea näide väärtuse tüübist. Kui kuulutasite Täisarv oma programmis niimoodi ...
Hämardage minu väärtus täisarvuna = 10
... ja kontrollisite mällu salvestatud asukohta minu oma, leiate väärtuse 10. Samuti näete seda kirjeldavat kui "virnale eraldamist".
Virn ja hunnik on lihtsalt erinevad viisid arvutimälu kasutamise haldamiseks.
Viitetüüp on objekt, kus objekti asukoht salvestatakse mällu. Seega on võrdlustüübi jaoks väärtuse leidmine alati kaheastmeline otsing. A Keel on hea näide võrdlustüübist. Kui kuulutasite a Keel nagu nii ...
Tühjenda myString kui string = "See on myString"
... ja kontrollisite mällu salvestatud asukohta myString, leiate teise mälupesa (nn osuti - selline asjaajamine on C-stiili keelte süda. Väärtuse "See on myString" leidmiseks peate minema sellesse asukohta. Seda nimetatakse sageli "hunnikule eraldamiseks". Virn ja hunnik
Mõne autori sõnul pole väärtuse tüübid isegi objektid ja objektid võivad olla ainult viitetüübid. On tõsi, et keerukatel objektiomadustel nagu pärand ja kapseldamine on võimalikud ainult võrdlustüüpide korral. Kuid kogu selle artikli alustasime sellega, et objektidel oli kolm vormi, nii et ma pean leppima sellega, et struktuurid on mingi objekt, isegi kui need on mittestandardsed objektid.
Struktuuride programmeerimise päritolu ulatub tagasi failidele orienteeritud keeltesse, nagu Cobol. Nendes keeltes töödeldi andmeid tavaliselt järjestikuste failidena. Faili kirje "väljad" kirjeldati jaotisega "andmete määratlus" (mõnikord nimetatakse seda "kirje paigutuseks" või "tekstikirjeks"). Niisiis, kui faili kirje sisaldas:
1234567890ABCDEF9876
Ainus viis, nagu te teaksite, et "1234567890" oli telefoninumber, "ABCDEF" oli ID ja 9876 oli 98,76 dollarit. Struktuurid aitavad seda saavutada VB.NET-is.
Struktuur Struktuur1
Lõppstruktuur
Sest a Keel on võrdlustüüp, on vaja hoida pikkus sama VBFixedString atribuut fikseeritud pikkusega kirjetele. Selle atribuudi ja atribuutide üldisema selgituse leiate artiklist Atribuudid VB .NET.
Ehkki struktuurid on mittestandardsed objektid, on neil VB.NET-is palju võimalusi. Saate kodeerida struktuurides meetodeid, atribuute ja isegi sündmusi ning sündmuste käitlejaid, kuid võite kasutada ka lihtsustatud koodi ja kuna need on väärtuse tüübid, võib töötlemine olla kiirem. Näiteks võite ülaltoodud struktuuri ümber kodeerida järgmiselt:
Struktuur Struktuur1
Alam mySub ()
MsgBox ("See on myPhone väärtus:" & myPhone)
Lõpu alam
Lõppstruktuur
Ja kasutage seda nii:
Dim myStruct kui struktuur1
myStruct.myPhone = "7894560123"
myStruct.mySub ()
Tasub oma aega mängida, et natuke struktuuridega ringi mängida ja õppida, mida nad teha saavad. Nad on VB.NETi üks veidraid nurki, mis võib olla võluväli, kui seda vajate.