Партнерка на США и Канаду по недвижимости, выплаты в крипто
- 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 |


