Помогни ни да направим Uroci.net по - богат! Добави урок

Обсег на действие и достъпност в клас модулите

bubust   трудност:    видян: 2959

Идеята за обсег на действие (scope) в клас модулите е по-понятна, отколкото в стандартните модули. Доколкото локалните променливи се съдържат (на ниво блок и на ниво процедура), няма разлика--имаме блоков обхват и процедурен обхват на действие (scope). Докато променливите декларирани в декларационната секция на клас модула могат да имат следните модификатори за достъп:

· Public

· Private

· Friend

· Protected

· Protected Friend

(За стандартни модули, само Public, Private, и Friend се допускат.)

Самите клас модули могат да се декларират с един от следните три модификатора за достъп:

Public, Private, или Friend (Protected не се допуска). Когато декларацията на клас модула спесифицира един от тези модификатори за достъп, това просто ограничава всички негови членове на това ниво на обхват на действие, като самият член в неговата декларация се ограничава по-нататък чрез своя модификатор за достъп. Примерно ако класа има достъп Friend, никой член не може да има достъп Public. (Казано по друг начин, обхватът Public е използван (overridden) при обхват Friend.)

От друга страна, всичките четири модификатора за достъп са валидни за членовете на клас модула - това ще рече , за променливи (variable), константи (constant), броячи (enum) и процедурни декларации (procedure declarations) вътре в клас модула.

Усложненията идват от това, че актуално има три типа на достъп за членовете на класа, а те генерално имат различни обхвати на действие (scopes). За пояснение нека да направим следните дефиниции чрез примери. Нека имаме декларация на променлива в декларационната секция на клас модула с име Class1:

AccessModifier classvariable As Integer

Достъп до тази променлива може да се получи по следните начини:


Direct access- директен достъп

Достъп до член без всякаква квалификация:

classvariable = 100

В този случай обхватът на действие има три разновидности:

· Само деклариращия клас

· Деклариращия клас и неговите произхождащи класове само в деклариращия проект

· Деклариращия клас и неговите произлизащи класове, във всеки проект, който държи връзка с деклариращия проект



Class/object access- клас/обект достъп

Свързан е с достъп на член чрез квалификация или с името на класа или с името на обект на класа.

Както вече дискутирахме, ако променливата член е декларирана чрез ключова дума Shared, тя е споделена с всички обекти на класа. Още по-акуратно казано, този член съществува независимо от обектите на класа. В този случай достъпът се осъществява (вътре в областта на действие) чрез квалификация в името на класа:

Class1.classvariable = 100

Има само едно копие на члена. Ако членът е деклариран без ключова дума Shared, тогава клас/обект достъпът става чрез квалификация в името на съществуващ обект:

Dim c As New Class1

c.classvariable = 100

Областта на действие на клас/обект достъп може да бъде една от следните:

· Само деклариращия клас

· Деклариращия проект

· Деклариращия проект и всеки външен софтуерен компонент, който държи връзка с деклариращия проект.

Таблица 4 дава описание на ефекта от различните модификатори за достъп.


Таблица 4

Модификатори за достъп в клас модулите
Модификатор Обсег при директен достъп Обсег за Клас/Обект
Private Деклариращия клас Деклариращия клас
Protected Всички произхождащи класове Деклариращия клас
Friend Произхождащи вътрешни проектни класове Деклариращия проект
Protected Friend Всички произхождащи класове Деклариращия проект
Public Всички произхождащи класове Всички проекти



Регистрирайте се, за да добавите коментар


Калдейта ЕООД - © 2003-2010. Всички права запазени.
Препоръчваме: Национален Бизнес | Bomba.bg | IT Новини | Диплома.бг | TRAVEL туризъм | Реферати | AmAm.bg | Иде.ли | Курсови работи | Фото Форум | Spodeli.net | Фото-Култ | Atol.bg | Elmaz.com | MobileBulgaria.com | Казанлък.Com