Moduli, strukture i klase

Postoje samo tri načina kako organizirati VB.NET primjena.

  • moduli
  • strukture
  • klase

Ali većina tehničkih članaka pretpostavlja da o njima već znate sve. Ako ste jedan od mnogih koji još uvijek ima nekoliko pitanja, samo možete pročitati zbunjujuće bitove i pokušati to shvatiti. A ako imaš mnogo vremena, možete početi pretraživati Microsoft dokumentacija:

  • "Modul je prijenosna izvršna datoteka, poput type.dll ili application.exe, koja se sastoji od jedne ili više klasa i sučelja."
  • "Izjava klase definira novu vrstu podataka."
  • "Izjava Struktura definira složeni tip vrijednosti koji možete prilagoditi."

U redu onda. Ima li pitanja?

Da bi bili malo pošteniji prema Microsoftu, oni imaju stranice i stranice (i više stranica) s informacijama o svima njima kroz koje možete proći. I moraju biti što precizniji jer postavljaju standard. Drugim riječima, Microsoftova se dokumentacija ponekad čita kao knjiga zakona jer je je knjiga zakona.

Ali ako samo učite .NET, to može biti vrlo zbunjujuće! Morate negdje započeti. Razumijevanje tri osnovna načina na koje možete pisati kod u VB.NET dobro je mjesto za početak.

instagram viewer

Možete napisati VB.NET kôd koristeći bilo koji od ova tri oblika. Drugim riječima, možete stvoriti Primjena konzole u VB.NET Express i napišite:

Modul modula1
Sub Main ()
MsgBox ("Ovo je modul!")
Kraj Sub
Krajnji modul
Klasa Klasa1
Sub Main ()
MsgBox ("Ovo je klasa")
Kraj Sub
Krajnja klasa
Struktura strukture1
Dim myString kao string
Sub Main ()
MsgBox ("Ovo je struktura")
Kraj Sub
Krajnja struktura

To ne znači bilo koji smislu kao programa, naravno. Poanta je u tome da ne dobijete sintaksičku pogrešku, pa je to "legalno" VB.NET kod.

Ova tri oblika jedini su način za kodiranje matičnog pčelinjeg korijena svih .NET: objekta. Jedini element koji prekida simetriju tri oblika je tvrdnja: Dim myString kao string. To ima veze sa strukturom koja je "kompozitni tip podataka" kako Microsoft navodi u svojoj definiciji.

Još jedna stvar koju treba primijetiti je da sva tri bloka imaju a Sub Main () u njima. Jedan od najosnovnijih principa OOP-a obično se naziva ovijanje. Ovo je efekt "crne kutije". Drugim riječima, trebali biste biti u mogućnosti samostalno tretirati svaki objekt, a to uključuje i korištenje identično imenovanih potprograma ako to želite.

klase

Časovi su pravo mjesto za početak jer, kao Microsoft napominje "Klasa je temeljni građevni blok objektno orijentiranog programiranja (OOP)." Zapravo, neki autori tretiraju module i strukture kao posebne vrste nastave. Klasa je više objektno orijentirana nego modul jer je to moguće oprimjeruju (napravi kopiju) klase, ali ne i modula.

Drugim riječima, možete kodirati ...

Oblik javne klase1
Private Sub Form1_Load (_
ByVal pošiljalac kao sustav. Objekt, _
ByVal e kao sustav. EventArgs) _
Rukuje MyBase. Opterećenje
Dim myNewClass As Class1 = Nova klasa1
myNewClass. ClassSub ()
Kraj Sub
Krajnja klasa

(Istaknuta je klasa.)

Nije važno je li stvarna klasa u ovom slučaju, ...

Javna klasa1
Pod klasaSub ()
MsgBox ("Ovo je klasa")
Kraj Sub
Krajnja klasa

... je u datoteci sama ili je dio iste datoteke s Form1 kodirati. Program se odvija potpuno na isti način. (Primijeti da Form1 je i klasa.)

Također možete napisati klasni kôd koji se ponaša slično modulu, to jest, bez instanciranja. To se naziva a Zajednički klase. Članak "Statički" (to jest "Dijeljeno") naspram dinamičkih tipova u VB.NET-u to objašnjava puno detaljnije.

Treba imati na umu i drugu činjenicu o nastavi. članovi (svojstva i metode) klase postoje samo dok postoji instanca klase. Naziv za ovo je scoping. Odnosno djelokrug primjera klase je ograničeno. Gornji kôd se može promijeniti kako bi se ta točka ilustrirala na ovaj način:

Oblik javne klase1
Private Sub Form1_Load (_
ByVal pošiljalac kao sustav. Objekt, _
ByVal e kao sustav. EventArgs) _
Rukuje MyBase. Opterećenje
Dim myNewClass As Class1 = Nova klasa1
myNewClass. ClassSub ()
myNewClass = Ništa
myNewClass. ClassSub ()
Kraj Sub
Krajnja klasa

Kad drugi myNewClass. ClassSub () izjava je izvršena, a NullReferenceException greška je bačena jer ClassSub član ne postoji.

moduli

U VB-u 6 bilo je uobičajeno vidjeti programe gdje je većina koda bila u modulu (A .BAS, datoteku umjesto na primjer u a Oblik datoteku kao što su Form1.frm.) U VB.NET-u ulaze i moduli i klase .VB datoteka. Glavni razlog zašto su moduli uključeni u VB.NET jest pružiti programerima način da organiziraju svoje sustave stavljanjem koda na različita mjesta radi finog podešavanja opsega i pristupa za njihov kodirati. (To jest, koliko dugo postoje članovi modula i na koji se drugi kôd mogu pozivati ​​i koristiti ih.) Ponekad ćete kôd htjeti staviti u odvojene module kako biste olakšali rad.

Svi VB.NET moduli su Zajednički jer ih nije moguće koristiti (vidi gore), a mogu biti i označene prijatelj ili Javnost pa im se može pristupiti bilo unutar istog sklopa ili kad god se na njih odnosi.

strukture

Strukture se najmanje razumiju kod tri oblika objekata. Kad bismo govorili o "životinjama" umjesto o "objektima", struktura bi bila an Južnoafrički mravojed.

Velika razlika između strukture i klase je u tome što je struktura a vrsta vrijednosti a klasa je a referentni tip.

Što to znači? Tako mi je drago što ste pitali.

Vrijednost tipa je objekt koji se pohranjuje izravno u memoriju. Integer dobar je primjer vrste vrijednosti. Ako ste proglasili Integer u svom programu poput ovog ...

Zatamni moj broj kao cijeli broj = 10

... i provjerili ste mjesto memorije spremljeno u Myint, našli biste vrijednost 10. To također vidite kako je opisano kao "raspoređivanje u hrpi".

Slaganje i gomila su jednostavno različiti načini upravljanja korištenjem računalne memorije.

Referentna vrsta je objekt u kojem se mjesto objekta pohranjuje u memoriji. Dakle, pronalaženje vrijednosti za referentnu vrstu uvijek je potraga u dva koraka. Niz je dobar primjer referentne vrste. Ako ste proglasili Niz kao ovo ...

Dim myString kao String = "Ovo je mojaString"

... i provjerili ste mjesto memorije spremljeno u myString, naći ćete drugo memorijsko mjesto (zvano a pokazivač - ovaj način postupanja predstavlja samo srce jezika u stilu C). Morate otići na to mjesto da biste pronašli vrijednost "This is myString". To se često naziva "raspodjelom na hrpi". Stog i hrpa

Neki autori kažu da vrste vrijednosti nisu ni objekti, a samo referentne vrste mogu biti objekti. Točno vrijedi da su sofisticirane karakteristike objekta poput nasljeđivanja i ovijanje mogući su samo s referentnim vrstama. Ali započeli smo cijeli ovaj članak rekavši da postoje tri oblika za objekte, pa moram prihvatiti da su strukture neka vrsta objekta, čak i ako su nestandardni objekti.

Programsko podrijetlo struktura seže do jezika usmjerenih na datoteke kao što je Cobol. U tim jezicima podaci su normalno obrađivani kao sekvencijalne ravne datoteke. "Polja" u zapisu iz datoteke opisana su odjeljkom "definicija podataka" (ponekad se naziva "izgled zapisa" ili "copybook"). Ako je zapis iz datoteke sadržavao:

1234567890ABCDEF9876

Jedini način na koji biste znali da je "1234567890" telefonski broj, "ABCDEF" je ID, a 9876 je bilo 98,76 USD kroz definiciju podataka. Strukture vam pomažu da to postignete u VB.NET-u.

Struktura strukture1
Priguši moj telefon kao niz
Dim myID kao string
Zatamni moj iznos kao string
Krajnja struktura

Jer a Niz je referentni tip, potrebno je držati duljinu jednakom s VBFixedString atribut za zapise fiksne duljine. Prošireno objašnjenje ovog svojstva i atributa općenito možete pronaći u članku Atributi u VB .NET.

Iako su strukture nestandardni objekti, oni imaju puno mogućnosti u VB.NET-u. Možete strukturirati metode, svojstva, pa čak i događaje i obrađivače događaja u strukturama, ali možete koristiti i pojednostavljeni kôd i budući da su tipovi vrijednosti, obrada može biti brža. Na primjer, možete recidirati strukturu iznad ovako:

Struktura strukture1
Priguši moj telefon kao niz
Dim myID kao string
Zatamni moj iznos kao string
Sub mySub ()
MsgBox ("Ovo je vrijednost myPhone-a:" & myPhone)
Kraj Sub
Krajnja struktura

I koristite ga ovako:

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

Vrijedno je vašeg vremena malo se poigrati strukturama i naučiti što oni mogu učiniti. Oni su jedan od neobičnih kutova VB.NET-a koji mogu biti čarobni metak kad vam zatreba.

instagram story viewer