Базовые понятия
Объектно-ориентировочное программирование или ООП основывается на принципе
программирования объектов, которые строятся по определенному классу (шаблону).
Объекты имеют свои свойства и методы. По своей сути мы уже создавали подобие
объектов, когда рассматривали структуры. В ООП свойства есть ничто иное как:
переменные, массивы и т.п. Методами выступают процедуры, функции, активные
свойства (Property).
ООП упрощает процесс разработки объемных программ,
поскольку методы и свойства объектов подчиняются простейшей модели безопасности.
Так, вам ведь по барабану из чего внутри состоит телевизор, главное вам
предоставлена возможность просмотра передач. У вас есть все необходимое для
этого: лентяйка, кнопки на телевизоре, экран, диван и пиво. Зачем вам знать,
какое напряжение подается на строчный трансформатор или вообще из скольких
деталей изнутри он состоит? Вы можете безопасно пользоваться телевизором, не
залезая вовнутрь и не задумываясь о том как он работает. Зато телемастер
имеет больший доступ к этому объекту и может покрутить его изнутри :)
Объекты в ООП построены по схожему принципу. Реализуется класс (шаблон), по
которому потом легко строятся объекты. Объект при создании получает те же
свойства и методы, что реализованы в классе. Но в процессе работы объект, может
изменять свои свойства. Так вы можете выкрасить корпус телевизора зеленой
краской, от этого он хуже показывать не будет, другое дело какой он примет вид
:) .
Программа управляет объектами, изменяет их свойства и пользуется их методами.
Очень часто реализованные классы в начальных версиях программ не меняются,
поскольку сделаны относительно идеально. Но реализуются другие, и они так же с
успехом взаимодействуют с объектами первых реализованных классов.
Давайте
создадим простейший класс. По своей сути он мало будет чем отличаться от
создания структуры:
Type Myclass As String surname_="White" As String name_="Rose" Declare Sub data_() End Type Sub Myclass.data_() Print name_,surname_ End Sub
Мы создали класс с именем Myclass, у которого в характеристиках два свойства и один метод. Очень похоже на структуру правда? Как и у структуры поля. Двум из них мы присвоили сразу значения(можно было и не присваивать или присвоить позднее) . А в третьем поле мы указали декларацию метода, который так же как и свойства будут доступны только через объект. Ниже метод(процедура) класса, но заметьте как она объявляется: сначала идет имя класса, которому принадлежит процедура а дальше ее имя. Если мы попробуем теперь ниже вызвать эту процедуру так :
Myclass.data_
или так:
data_
У нас ничего хорошего не выйдет, компилятор выдаст ошибку, поскольку допуска к этой процедуре обычными средствами нет. Для того чтобы можно было получить доступ к этому методу (процедуре) , нужно создать объект:
Dim pObject As Myclass
А дальше все как со структурой. Доступ через точку к ее полям.
pObject.data_()
Имя при создании объекту я дал pObject, но оно может быть любое. Чем же хороша такая методика? Тем что создавая несколько объектов, они будут иметь каждый свои собственные места памяти для свойств и один общий метод, но доступный только им(объектам). Давайте на примере создания двух объектов посмотрим:
Type Myclass As String surname_="White" As String name_="Rose" Declare Sub data_() End Type Sub Myclass.data_() Print name_,surname_ End Sub Dim Object1 As Myclass Dim Object2 As Myclass Object1.data_() Object1.name_="Nemo" Object2.data_() Object1.data_() Sleep
После создания класса, мы создали по этому классу два объекта. Обратите внимание на то, что при создании оба объекта наследуют одинаковые данные свойств. Далее у одного из свойств, мы меняем значение. Как видите, то что мы вытворяем с первым объектом никак не влияет на второй. У второго свое место для свойств и получить доступ к ним можно только через сам второй объект. Другое дело обстоит с методом. Метод для всех объектов, созданных по этому классу общий. Так если мы в процедуру вставим статическую переменную (Static), то она будет доступна всем объектам. Далее обратите внимание на то, что свойства внутри метода мы написали обычным образом (только имя), они видны в методе, поскольку метод как и свойства принадлежат одному классу. Но если нам вздумается вставить в процедуру переменную с таким же именем как у свойства класса, то тогда для допуска к свойству класса нужно использовать ключевое слово this
Пример:
Type Myclass As String surname_="White" As String name_="Rose" Declare Sub data_() End Type Sub Myclass.data_() Dim As String name_="Richard" Print this.name_,surname_ Print name_ End Sub Dim Object1 As Myclass Object1.data_() Sleep
Пример мало отличается от прошлого. Мы создали только один объект. А в методе data_ дополнительно ввели переменную с таким же именем как у свойства класса. Теперь чтобы получить доступ к ней внутри метода надо использовать ключевое слово this
При создании класса в блоке TYPE - END TYPE
необходимо создать хотя бы одно свойство. Если будут одни декларации методов,
компилятор выдаст ошибку!
Хотелось бы отметить, что классы так же можно использовать с помощью указателей. Все тоже самое, только объект будет создаваться так:
Dim Object1 As Myclass Ptr
Не забываем выделять и освобождать память. Если забыли или пропустили, читаем статью про указатели. Доступ к его свойствам и методам будет осуществляться через указатель ->
Object1->data_()
Думаю что для начала понимая ООП хватит. В следующей статье мы рассмотрим
активные свойства (Property).
Всего доброго!
содержание | назад | вперед