Modulok, szerkezetek és osztályok

click fraud protection

Csak három módon lehet megszervezni a VB.NET Alkalmazás.

  • modulok
  • struktúrák
  • osztályok

De a legtöbb műszaki cikk feltételezi, hogy mindent tud már róluk. Ha Ön egy a sok közül, akinek még mindig van néhány kérdése, akkor elolvasta a zavaró bitjektől, és megpróbálhatja kitalálni. És ha van sok az idő múlásával megkezdheti a keresést Microsoft dokumentáció:

  • "A modul egy hordozható végrehajtható fájl, például type.dll vagy application.exe, amely egy vagy több osztályból és interfészből áll."
  • "Az Class utasítás meghatároz egy új adattípust."
  • "A Structure utasítás meghatározza a testreszabható összetett értéktípust."

Pont akkor. Bármi kérdés?

Annak érdekében, hogy egy kicsit méltányosabb a Microsoft iránt, vannak oldalaik és (és több oldal) információk mindazokról, amelyeken keresztülvigyázhat. És a lehető legpontosabbaknak kell lenniük, mert megszabják a szabványt. Más szavakkal, a Microsoft dokumentációja olykor oly módon olvasható, mint egy törvénykönyv, mert az jelentése egy törvénykönyv.

De ha csak .NET-t tanul, akkor ez nagyon zavaró lehet! Valahol el kell kezdenie. A VB.NET-ben a kódírás három alapvető módszerének megértése jó hely a kezdéshez.

instagram viewer

Tudsz írni VB.NET kódot a három forma bármelyikével. Más szavakkal, létrehozhat egy Konzol alkalmazás a VB.NET Express-ben, és írja:

1. modul
Sub Main ()
MsgBox ("Ez egy modul!")
Befejezés Sub
Vége a modulnak
Class 1 osztály
Sub Main ()
MsgBox ("Ez egy osztály")
Befejezés Sub
Végkategória
Szerkezet Struct1
Dim myString As String
Sub Main ()
MsgBox ("Ez egy struktúra")
Befejezés Sub
Végszerkezet

Ez nem teszi Bármi értelemben, mint program, természetesen. A lényeg az, hogy nem kap szintaxis hibát, tehát "legális" VB.NET kód.

Ez a három forma az egyetlen módszer a .NET összes objektumának a méhcsalád gyökér kódolására: az objektumra. Az egyetlen elem, amely megszakítja a három forma szimmetriáját, a következő állítás: Dim myString As String. Ehhez kapcsolódik egy struktúra, amely "összetett adattípus", ahogyan azt a Microsoft a meghatározásukban kifejti.

Egy másik dolog, amit észre kell venni, hogy mindhárom blokknak van a Sub Main () bennük. Az OOP egyik legalapvetõbb elvét általában nevezik Egységbezárás. Ez a "fekete doboz" hatás. Más szavakkal, képesnek kell lennie arra, hogy minden objektumot külön kezelje, és magában foglalja azonos nevű alprogramok használatát is, ha szeretné.

osztályok

Az osztályok a „megfelelő” hely a kezdéshez, mivel Microsoft megjegyzi: "Az osztály az objektum-orientált programozás (OOP) alapvető építőeleme." Valójában egyes szerzők a modulokat és a struktúrákat csak speciális osztályoknak tekintik. Az osztály objektumorientáltabb, mint egy modul, mert ez lehetséges példával szemléltet (készítsen egy másolatot) egy osztályra, de nem modulra.

Más szavakkal, kódolhatja ...

Nyilvános osztály1
Privát alform1_terhelés (_
A ByVal feladó mint rendszer. Tárgy, _
ByVal e As rendszer. EventArgs) _
A MyBase kezelője. Betöltés
A myNewClass tompítása mint 1. osztály = új 1. osztály
myNewClass. ClassSub ()
Befejezés Sub
Végkategória

(Hangsúlyozzuk az osztály megjelenését.)

Nem számít, hogy maga a tényleges osztály, ebben az esetben ...

1. osztályú nyilvános osztály
Sub ClassSub ()
MsgBox ("Ez egy osztály")
Befejezés Sub
Végkategória

... önmagában van egy fájlban, vagy része a Form1 kód. A program pontosan ugyanúgy fut. (Figyeljük meg ezt Form1 egy osztály is.)

Olyan osztálykódot is írhat, amely hasonlóan viselkedik modulként, vagyis anélkül, hogy azonnal újraindítaná. Ezt hívják a Közös osztály. A VB.NET "Statikus" (azaz "Megosztott") cikke a dinamikus típusokkal szemben ezt sokkal részletesebben ismerteti.

Szem előtt kell tartani egy másik tényt az osztályokról. Belépés az osztály (tulajdonságai és módszerei) csak akkor léteznek, míg az osztály példánya létezik. Ennek neve van hatókör. Ez a terület egy osztály példánya korlátozott. A fenti kód megváltoztatható, hogy ezt a pontot a következőképpen illusztrálja:

Nyilvános osztály1
Privát alform1_terhelés (_
A ByVal feladó mint rendszer. Tárgy, _
ByVal e As rendszer. EventArgs) _
A MyBase kezelője. Betöltés
A myNewClass tompítása mint 1. osztály = új 1. osztály
myNewClass. ClassSub ()
myNewClass = Semmi
myNewClass. ClassSub ()
Befejezés Sub
Végkategória

Amikor a második myNewClass. ClassSub () a nyilatkozatot végrehajtják, a NullReferenceException hiba kerül, mert a ClassSub a tag nem létezik.

modulok

A VB 6 - ban gyakori volt olyan programokat látni, ahol a legtöbb kód a modulban volt (A .bas, fájl helyett, például egy a Forma fájl, például Form1.frm.) A VB.NET-ben mind a modulok, mind az osztályok be vannak mutatva .VB fájlokat. A modulok fő oka a VB.NET részét képezi, hogy a programozóknak módot biztosítsanak rendszereik megszervezésére azáltal, hogy kódot helyeznek el különböző helyekre, hogy finomhangolják a felhasználók hatókörét és hozzáférését. kód. (Vagyis hogy mennyi ideig léteznek a modul tagjai, és milyen más kód hivatkozhat és felhasználhatja azokat.) Néha érdemes külön modulokba helyezni a kódot, hogy megkönnyítse a munkát.

Az összes VB.NET modul Közös mert ezeket nem lehet azonnal megvalósítani (lásd fent) és meg lehet jelölni barát vagy Nyilvános így hozzáférhetők akár ugyanazon együtten belül, akár bármikor hivatkozva.

struktúrák

A struktúrák a legkevésbé érthetők az objektumok három formája közül. Ha "állatokról" beszélnénk "tárgyak" helyett, akkor a szerkezet an földimalac.

A szerkezet és az osztály közötti nagy különbség az, hogy a struktúra a érték tipusa és egy osztály a referencia típus.

Az mit jelent? Nagyon örülök, hogy megkérdezted.

Az érték típusa egy objektum, amelyet közvetlenül a memóriában tárolnak. egy Egész szám jó példa az érték típusára. Ha bejelentette Egész szám a programodban, mint ez ...

Dim myInt egész szám = 10

... és ellenőrizte a tárolt memóriahelyet Myint, akkor a 10-es értéket találja. Ön azt is látja, hogy ezt "kiosztották a veremre".

A halom és a halom egyszerűen különböző módok a számítógép memória használatának kezelésére.

A referencia típus egy olyan objektum, ahol az objektum helyét a memória tárolja. Tehát egy referenciatípus értékének megtalálása mindig kétlépéses keresés. A Húr jó referencia-típus. Ha bejelentette Húr mint ez ...

Dim myString as String = "Ez myString"

... és ellenőrizte a tárolt memóriahelyet sajatString, talál egy másik memóriahelyet (a mutató - a dolgok ilyen módja a C stílusú nyelvek középpontjában áll). Erre a helyre kell mennie, hogy megtalálja az "Ez a myString" értéket. Ezt gyakran "a halomra való kiosztásra" hívják. A verem és a halom

Egyes szerzők szerint az értéktípusok nem is objektumok, és csak referenciatípusok lehetnek objektumok. Ez természetesen igaz, hogy a kifinomult tárgy jellemzői, mint például az öröklés és Egységbezárás csak referencia típusokkal lehetséges. De ezt az egész cikket azzal kezdtük, hogy azt állítottuk, hogy az objektumoknak három formája van, ezért el kell fogadnom, hogy a struktúrák valamiféle tárgyak, még akkor is, ha nem szabványos objektumok.

A struktúrák programozásának eredete a fájl-orientált nyelvekre nyúlik vissza, mint például a Cobol. Ezeken a nyelveken az adatokat általában szekvenciális sima fájlokként dolgozták fel. A fájl egy mezőjének "mezőit" egy "adatmeghatározás" szakasz írja le (néha "rekordkiosztás" vagy "másolatkönyv"). Tehát, ha a fájlból származó rekord tartalmazta:

1234567890ABCDEF9876

Csak akkor tudhatja meg, hogy a "1234567890" telefonszám volt, az "ABCDEF" azonosító, 9876 pedig 98,76 USD volt az adatmeghatározáson keresztül. A struktúrák segítik ezt a VB.NET-ben.

Szerkezet Szerkezet1
Dim myPhone as String
Dim myID mint karakterlánc
Dim myAmount as String
Végszerkezet

Mert a Húr egy referencia típus, a hosszúságot ugyanannak kell tartania a VBFixedString rögzített hosszúságú rekordok attribútuma. Az attribútum és általában az attribútumok kibővített magyarázatát az Attribútumok cikkben találja VB .NET.

Noha a struktúrák nem szabványos objektumok, nagyon sok képességük van a VB.NET-ben. Kódolhat módszereket, tulajdonságokat, sőt eseményeket és eseménykezelőket a struktúrákban, de egyszerűsített kódot is használhat, és mivel ezek értéktípusok, a feldolgozás gyorsabb lehet. Például a fenti struktúrát újra kódolhatja:

Szerkezet Szerkezet1
Dim myPhone as String
Dim myID mint karakterlánc
Dim myAmount as String
Sub mySub ()
MsgBox ("Ez a myPhone értéke:" & myPhone)
Befejezés Sub
Végszerkezet

És használd így:

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

Érdemes időt szentelni egy kicsit a struktúrákkal való játékra, és megtanulni, mit tehetnek. Ezek a VB.NET furcsa sarkai, amelyek varázslatgolyóvá válhatnak, amikor csak szüksége van rá.

instagram story viewer