Партнерка на США и Канаду по недвижимости, выплаты в крипто

  • 30% recurring commission
  • Выплаты в USDT
  • Вывод каждую неделю
  • Комиссия до 5 лет за каждого referral

'  Выполняется при окончании работы с объектом

MsgBox (" Коллега, " & Name & _

" из класса Владелец, до свидания")

End Sub

'Свойства объектов класса

'=======================

Сделаем замечания.

Свойства объектов класса следует, в общем случае, закрывать. Это пре-дотвращает  возможность  их  непосредственного  изменения.  Для  этого  ис-пользовано ключевое слово Private. Но для того, чтобы все-таки иметь воз-можность добраться до свойств, изменить или получить их значения исполь-зуют специальные методы(процедуры):

Get–  получает значение свойства;

Let-  изменяет значение свойства.

Заготовки для каждой такой пары методов строятся автоматически при выполнении команды менюVBA Insert/Procedure  и  установке  в  появившемся  окне  диалога  "Add Procedure" имени  методов  в  текстовом  поле "Name". После этого следует включить радио кнопку"Property" в групповом окне"Type" и закрыть методы, используя групповое окно "Scope". Все изме-нения произведенные Вами должны соответствовать данным, представлен-ным на рисунке1.3.

Рисунок1.3. Окно для заготовки методов, определяющих свойства классов

Продолжение программного кода модуля класса.

'Для изменения и получения значений5-ти свойств:

' - Name, Fam, Date_R, Tel, Pensioner.

' используют четыре пары специальных методов - Get иLet

'  Ниже - это процедуры(методы)

'  для изменения и получения значений у свойства класса.

НЕ нашли? Не то? Что вы ищете?

'  Заготовки для них вставляются в модуль класса командой меню

' Insert/Procedure... /_Property

'  При этом получаем сразу две заготовки процедур

' - для изменения и для получения свойств класса

'==========================-

'  В программах пользователя, расположенных в модулях проекта,

'  например, в Модуль1 (не модулях классов),

'  для того, чтобы изменить какое-то свойство у объекта следует

'  использовать идентификаторы, введенные при создании методов,

'  для присвоения и получения значений свойств объектов. См. ниже.

'  Например, для изменения свойстваName у объекта Петров,

'  следует написать  Петров. Pr_Name

Public Property Get Pr_Name() As String

Pr_Name = Name

End Property

Public Property Let Pr_Name(ByVal vNewValue As String)

Name = vNewValue

End Property  'Pr_Name

Public Property Get Pr_Fam() As String

Pr_Fam = Fam

End Property

Public Property Let Pr_Fam(ByVal vNewValue As String)

Fam = vNewValue

End Property  'Pr_Fam

Public Property Get Pr_Date_R() As Variant

Pr_Date_R = Date_R

End Property

Public Property Let Pr_Date_R(ByVal vNewValue As Variant)

Date_R = vNewValue

End Property  'Pr_Date_R

Public Property Get Pr_Tel() As Variant

Pr_Tel = Tel

End Property

Public Property Let Pr_Tel(ByVal vNewValue As Variant)

Tel = vNewValue.

Лекция 2. СОЗДАНИЕ ПРОЕКТА ДЛЯ СЕМЕЙСТВА КЛАССОВ

Модель семейства классов проекта«Гаражный кооператив» представлена на рисунке1.1. Создадим проект, который будет включать три класса:

Владелец, Гараж и Владелец гаража. Сначала создадим  родительский класс–

Гараж, а потом класс - Владелец Гаража, который будет потомком двух, соз-данных ранее родительских классов.

2.1.  Проектирование второго класса проекта– Гараж

Создание программного модуля для класса Владелец и его тестирование подробно рассмотрены выше. Аналогичным образом спроектируем класс

Гараж и программу для его тестирования.

Вариант листинга программ с комментариями для модуля класса Гараж

и пользовательское приложение, использующее этот модуль, приведены ниже. Ввиду того, что многое из вновь созданного, выполнено аналогично рас-смотренному  при  проектировании  класса  Владелец,  комментарии  к  про-граммному коду приведены только в тех случаях, когда это необходимо.

'Класс“Гараж”

'******************************************

Private G_Name As String  ' Это первое свойство класса(КАС-17)

Private G_Numbe As Integer ' Номер гаража(613)

Private G_Material As String  ' Бетон, железо, дерево

Private G_Date_P As Date  ' Год постройки-1980

Private G_Comfort As Integer ' Комфорт: 1-обшит деревом,

' 2- есть деревянный пол, 4-есть яма,

' 3- (1+2), 5-(1+4), 6-(2+4), 7- (1+2+4)

Private G_Cena As Long  ' Цена60 000

'ОТКРЫТЫЕ МЕТОДЫ КЛАССА  Гараж

'----------------------------------------------------------------------------------

Public Sub Zadan_Prop_Garag(ByVal Prop_G_Na As String, ByVal Prop_G_Nu

As Integer, ByVal Prop_G_M As String, ByVal Prop_G_D As Date, _

ByVal Prop_G_C As Integer, ByVal Prop_G_Ce As Long)

'--------------------------------------------------------------------------------------

' 1-й метод класса Гараж( Задание свойств классу)

G_Name = Prop_G_Na

G_Numbe = Prop_G_Nu

G_Material = Prop_G_M

G_Date_P = Prop_G_D

G_Comfort = Prop_G_C

G_Cena = Prop_G_Ce

End Sub

Public Sub Cop_Ob_Kl_1(XXXX As Гараж)

'-----------------------------------------------------------------------------------

' 2-й метод класса Гараж( Копирование объекта класса Гараж).

G_Name = XXXX. Pr_G_Name

20

G_Numbe = XXXX. Pr_G_Numbe

G_Material = XXXX. Pr_G_Material

G_Date_P = XXXX. Pr_G_Date_P

G_Comforf = XXXX. Pr_G_Comfort

G_Cena = XXXX. Pr_G_Cena

End Sub

Public Sub Viv_Inform_Ob_Kl_G()

' 3-й метод класса.

' Вывод информации об объекте класса в окно отладки

'------------------------------------------------------------------------------------

Dim b_str As String

Select Case G_Comfort

Case 1

b_str = "Гараж обшит деревом"

Case 2

b_str = "Гараж имеет деревянный пол"

Case 4

b_str = "Гараж имеет яму"

Case 3

b_str = "Гараж обшит деревом и имеет деревянный пол"

Case 5

b_str = "Гараж обшит деревом и имеет яму"

Case 6

b_str = "Гараж имет яму и деревянный пол"

Case 7

b_str = "Гараж обшит деревом, имеет деревянный пол и яму"

Case Else

b_str = "Гараж дрянной"

End Select

Debug. Print "Характеристики гаража", G_Name, "Номер", G_Numbe

Debug. Print "Материал из которого сделан гараж - ", G_Material

Debug. Print b_str

Debug. Print "Дата постройки - ", G_Date_P, "Цена - ", G_Cena, Chr(13)

End Sub

' МЕТОДЫ  ОБРАБОТКИ  СОБЫТИЙ  КЛАССА

Private Sub Class_Initialize()

'-----------------------------------------------------------------------

G_Name = "КАС-17"

G_Numbe = 613

21

G_Material = "Бетон"

G_Date_P = #1/1/2000#

G_Comfort = 7

G_Cena = 100000

End Sub

Private Sub Class_Terminate()

'-----------------------------------------------------------------------

'  Выполняется при окончании работы с объектом

MsgBox (" Гаражc номером - " & G_Numbe & "  из - " & _

G_Name & " закрыт")

End Sub

'МЕТОДЫ для получения и задания СВОЙСТВА КЛАССА ГАРАЖ

'-----------------------------------------------------------------------

Public Property Get Pr_G_Name() As Variant

Pr_G_Name = G_Name

End Property

Public Property Let Pr_G_Name(ByVal vNewValue As Variant)

G_Name = vNewValue

End Property  'Pr_G_Name

Public Property Get Pr_G_Numbe() As Variant

Pr_G_Numbe = G_Numbe

End Property

Public Property Let Pr_G_Numbe(ByVal vNewValue As Variant)

G_Numbe = vNewValue

End Property  'Pr_G_Numbe

Public Property Get Pr_G_Material() As Variant

Pr_G_Material = G_Material

End Property

Public Property Let Pr_G_Material(ByVal vNewValue As Variant)

G_Material = vNewValue

End Property  'Pr_G_Material

Public Property Get Pr_G_Date_P() As Variant

Pr_G_Date_P = G_Date_P

End Property

Public Property Let Pr_G_Date_P(ByVal vNewValue As Variant)

22

G_Date_P = vNewValue

End Property  'Pr_G_Date_P

Public Property Get Pr_G_Comfort() As Variant

Pr_G_Comfort = G_Comfort

End Property

Public Property Let Pr_G_Comfort(ByVal vNewValue As Variant)

G_Comfort = vNewValue

End Property  'Pr_G_Comforf

Public Property Get Pr_G_Cena() As Variant

Pr_G_Cena = G_Cena

End Property

Public Property Let Pr_G_Cena(ByVal vNewValue As Variant)

G_Cena = vNewValue

End Property  'Pr_G_Cena

Листинг  программы  тестирования  для  данного  модуля  класса  может

иметь следующий вид.

Public Sub UserClass_02()

‘******************************

Dim Гараж_01 As New Гараж

Dim Гараж_02 As New Гараж

Dim Гараж_03 As New Гараж

' Первое же обращение к объекту приводит к его инициализации

' Вывод свойств объекта Гараж_01 в окно отладки после инициали-зации

Debug. Print " Характеристики объекта после инициализации", Chr(13); _

Гараж_01.Pr_G_Name; " "; Гараж_01.Pr_G_Numbe; " "; _

Гараж_01.Pr_G_Material; " "; Гараж_01.Pr_G_Date_P; " "; _

Гараж_01.Pr_G_Comfort; " "; Гараж_01.Pr_G_Cena; , Chr(13)

' Изменение свойств у объекта Гараж_01

' и задание свойств объекту Гараж_02

Гараж_01.Zadan_Prop_Garag Prop_G_Na:="Кооператив13", _

Prop_G_Nu:=1313, Prop_G_M:="Железо", _

Prop_G_D:=#2/13/2005#, Prop_G_C:=2, Prop_G_Ce:=50000

Гараж_02.Zadan_Prop_Garag Prop_G_Na:="КАС-17", _

23

Prop_G_Nu:=133, Prop_G_M:="Дерево", _

Prop_G_D:=#12/13/1999#, Prop_G_C:=0, Prop_G_Ce:=70000

'  Копирование свойств объекта Петров в свойства объекта Сидоров.

Гараж_03.Cop_Ob_Kl_1 Гараж_02

Гараж_03.Pr_G_Numbe = 134

'  Вывод свойств

Гараж_01.Viv_Inform_Ob_Kl_G

Гараж_02.Viv_Inform_Ob_Kl_G

Гараж_03.Viv_Inform_Ob_Kl_G

End Sub

В результате запуска программы тестированияPublic Sub UserClass_02() будет получен результат, представленный на рисунке.

Рисунок1.4. Результат тестирования

Задание №3.

1. Наберите приведенные тексты программ.

2. Составьте алгоритм пользовательской программы.

3. Убедитесь в работоспособности созданных программных средств.

Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 5 6