Модули, структуре и класе

Постоје само три начина за организовање ВБ.НЕТ апликација.

  • Модули
  • Структуре
  • Часови

Али већина техничких чланака претпоставља да о њима већ знате све. Ако сте један од многих који још увек има неколико питања, можете само прочитати збуњујуће битове и покушати то да схватите. А ако имас пуно времена, можете почети са претраживањем Мицрософт-ове документација:

  • "Модул је преносива извршна датотека, попут типе.длл или апплицатион.еке, која се састоји од једне или више класа и интерфејса."
  • „Изјава класе дефинише нови тип података.“
  • "Изјава Структура дефинише сложени тип вредности који можете прилагодити."

Добро, онда. Неко питање?

Да бисте били мало поштенији према Мицрософту, они имају странице и странице (и више страница) информација о свим тим стварима кроз које можете проћи. И морају бити што тачнији јер су поставили стандард. Другим речима, Мицрософтова документација понекад гласи као књига закона је правна књига.

Али ако само учите .НЕТ, то може бити врло збуњујуће! Морате негде почети. Разумевање три основна начина на које можете писати код у ВБ.НЕТ је добро место за почетак.

instagram viewer

Можете написати ВБ.НЕТ кода користећи било који од ова три облика. Другим речима, можете да креирате а Примена конзоле у ВБ.НЕТ Екпресс и напишите:

Модул Модул1
Суб Маин ()
МсгБок ("Ово је модул!")
Енд Суб
Крајњи модул
Класа Класа1
Суб Маин ()
МсгБок ("Ово је класа")
Енд Суб
Енд Цласс
Структура Структура1
Дим миСтринг као стринг
Суб Маин ()
МсгБок ("Ово је структура")
Енд Суб
Крајња структура

Ово не значи било који осећај као програм, наравно. Поента је да не добијате синтаксичку грешку, тако да је "легална" ВБ.НЕТ код.

Ова три облика су једини начин за кодирање матичног пчелињег коријена свих .НЕТ: објекта. Једини елемент који прекида симетрију три форме је изјава: Дим миСтринг као стринг. То има везе са структуром која је „композитни тип података“ како Мицрософт наводи у својој дефиницији.

Још једна ствар коју треба приметити је да сва три блока имају а Суб Маин () у њима. Један од најосновнијих принципа ООП-а обично се назива енкапсулација. Ово је ефекат "црне кутије". Другим речима, требало би да будете у могућности да обрађујете сваки објекат независно, а то укључује и употребу идентично именованих потпрограма ако то желите.

Часови

Часови су право место за почетак јер, као Мицрософт напомиње, „Класа је основни градивни блок објектно оријентисаног програмирања (ООП).“ У ствари, неки аутори третирају модуле и структуре као само посебне врсте наставе. Класа је више објектно оријентисана него модул јер је то могуће инстантиате (направите копију) класе, али не и модула.

Другим речима, можете да кодујете ...

Јавна класа Форм1
Привате Суб Форм1_Лоад (_
БиВал пошиљалац Ас Систем. Објекат, _
БиВал е као систем. ЕвентАргс) _
Рукује МиБасе. Оптерећење
Дим миНевЦласс Ас Цласс1 = Нова класа1
миНевЦласс. ЦлассСуб ()
Енд Суб
Енд Цласс

(Истакнута је класа.)

Није битно да ли је стварна класа у овом случају ...

Јавна класа1
Суб ЦлассСуб ()
МсгБок ("Ово је класа")
Енд Суб
Енд Цласс

... је у датотеци сам по себи или је део исте датотеке са Форм1 код. Програм се одвија потпуно на исти начин. (Приметићете да Форм1 је такође класа.)

Такође можете написати класни код који се понаша слично модулу, то јест, без инстанцирања. То се назива а Подељено класа. Чланак „Статички“ (то јест „Дељено“) насупрот динамичким типовима на ВБ.НЕТ-у објашњава ово много детаљније.

Још једна чињеница о часовима такође треба имати на уму. Чланови (својства и методе) класе постоје само док постоји инстанца класе. Назив за ово је сцопинг. То је Обим примера класе је ограничено. Горњи код се може променити тако да илуструје ову тачку на овај начин:

Јавна класа Форм1
Привате Суб Форм1_Лоад (_
БиВал пошиљалац Ас Систем. Објекат, _
БиВал е као систем. ЕвентАргс) _
Рукује МиБасе. Оптерећење
Дим миНевЦласс Ас Цласс1 = Нова класа1
миНевЦласс. ЦлассСуб ()
миНевЦласс = Ништа
миНевЦласс. ЦлассСуб ()
Енд Суб
Енд Цласс

Кад други миНевЦласс. ЦлассСуб () изјава је извршена, а НуллРеференцеЕкцептион грешка је бачена јер ЦлассСуб члан не постоји.

Модули

У ВБ 6 било је уобичајено гледати програме у којима је већина кода била у модулу (А) .БАС, датотеку, а не, на пример, у а Образац датотека попут Форм1.фрм.) У ВБ.НЕТ-у се налазе и модули и класе .ВБ фајлови. Главни разлог зашто су модули укључени у ВБ.НЕТ је програмерима пружити начин да организују своје системе постављањем кода на различита места како би прецизно прилагодили опсег и приступ свом код. (То јест, колико дуго постоје чланови модула и који други код може да референцира и користи чланове.) Понекад ћете можда морати да ставите код у одвојене модуле само да бисте олакшали рад.

Сви ВБ.НЕТ модули су Подељено јер се не могу инстанцирати (види горе) и могу бити обележени Пријатељу или Јавно па им се може приступити било у истој скупштини или кад год се на њих позива.

Структуре

Структуре се најмање разумеју од три облика објеката. Када бисмо говорили о "животињама" уместо о "објектима", структура би била ан Аардварк.

Велика разлика између структуре и класе је у томе што је структура а тип вредности а класа је референтни тип.

Шта то значи? Драго ми је што сте питали.

Вриједност типа је објект који се похрањује директно у меморију. Ан Интегер је добар пример врсте вредности. Ако сте прогласили Интегер у свом програму попут овог ...

Затамни мој број као цео број = 10

... и проверили сте локацију у којој се налази меморија моја, нашли бисте вредност 10. То такође видите како је описано као „додељивање у хрпи“.

Стацк и хеап су једноставно различити начини управљања употребом рачунарске меморије.

Референтни тип је објект у којем се локација објекта чува у меморији. Дакле, проналажење вредности за референтни тип увек је потрага у два корака. А Низ је добар пример референтног типа. Ако сте прогласили Низ овако ...

Дим миСтринг ас Стринг = "Ово је миСтринг"

... и проверили сте локацију у којој се налази меморија миСтринг, нашли бисте другу меморијску локацију (која се зове а поинтер - овај начин поступања је у средишту језика у стилу Ц). Морали бисте отићи на ту локацију да бисте пронашли вредност „Тхис ис миСтринг“. То се често назива "додељивањем на хрпи". Стог и гомила

Неки аутори кажу да типови вредности нису ни објекти, а само референтни типови могу бити објекти. Свакако је тачно да су софистициране карактеристике објекта попут насљеђивања и енкапсулација могући су само код референтних типова. Али започели смо цео овај чланак рекавши да постоје три форме за објекте, тако да морам да прихватим да су структуре нека врста објекта, чак и ако су нестандардни објекти.

Програмско порекло структура сеже до језика оријентисаних на датотеке као што је Цобол. У тим језицима подаци су нормално обрађивани као секвенцијалне равне датотеке. "Поља" у запису из датотеке описана су одељком "дефиниција података" (који се понекад назива и "изглед записа" или "цопибоок"). Ако запис из датотеке садржи:

1234567890АБЦДЕФ9876

Једини начин на који бисте знали да је „1234567890“ телефонски број, „АБЦДЕФ“ је ИД, а 9876 је било 98,76 долара кроз дефиницију података. Структуре вам помажу да то постигнете у ВБ.НЕТ-у.

Структура структуре1
Затамните мој телефон као струну
Дим миИД као стринг
Дим миАмоунт Ас Стринг
Крајња структура

Јер а Низ је референтни тип, потребно је да дужина буде иста са ВБФикедСтринг атрибут за записе фиксне дужине. Проширено објашњење овог атрибута и атрибута уопште можете пронаћи у чланку Атрибути у ВБ .НЕТ.

Иако су структуре нестандардни објекти, они имају пуно могућности у ВБ.НЕТ-у. Можете да кодирате методе, својства, па чак и догађаје и обрађиваче догађаја у структурама, али можете да употребите и поједностављени код и будући да су типови вредности, обрада може бити бржа. На пример, можете да рецодизујете горњу структуру овако:

Структура структуре1
Затамните мој телефон као струну
Дим миИД као стринг
Дим миАмоунт Ас Стринг
Суб миСуб ()
МсгБок ("Ово је вредност миПхоне-а:" & миПхоне)
Енд Суб
Крајња структура

И користите га овако:

Дим миСтруцт Ас Струцтуре1
миСтруцт.миПхоне = "7894560123"
миСтруцт.миСуб ()

Вреди вам времена да се мало поиграте са структурама и научите шта они могу да ураде. Они су један од необичних углова ВБ.НЕТ-а који могу бити чаробни метак када вам затреба.

instagram story viewer