Общие сведения об ООП

Объектно-ориентированное программирование, или ООП, представляет собой методику анализа, проектирования и написания приложений с помощью объектов. «Что такое объекты?» — спросите вы. Объектом называется фрагмент кода, обладающий свойствами и методами. Объекты создаются на базе так называемых классов и могут моделировать правила обработки данных, различные ситуации и даже физические предметы.

Люди привыкли мыслить категориями объектов. Скажем, бейсбольный матч можно представить как совокупность объектов бит, мячей, перчаток и игроков. Используя ООП, вы моделируете в своем приложении материальные явления реального мира. Но на этом возможности ООП отнюдь не исчерпываются. Вы можете использовать в программировании те же принципы, которыми руководствуетесь в реальной жизни!

ООП упрощает процесс разработки программ, поскольку свойства и методы объектов подчиняются простейшей модели безопасности. Эта модель определяется ключевыми словами Private, Public и Friend. Если вы хотите, чтобы приложение могло свободно обращаться к вашему объекту, организуйте доступ к нему через открытые (Public) свойство или метод. Закрытые свойства и методы используются только самим объектом; за его пределами они не видны и не могут использоваться в других процедурах.

Самым фундаментальным объектом Visual Basic является объект формы. Без него ваши приложения вряд ли можно было назвать «визуальными» (visual). Формы обладают множеством свойств, среди которых Appearance, BorderStyle, Caption, Name и WindowState. Все эти свойства являются открытыми и могут свободно изменяться вашими программами. Формы также обладают множеством методов, в число которых входят Load, Unload, Show и Hide.

Добавляя новую форму в проект, вы создаете «потомка» класса формы. Его свойства и методы совпадают со свойствами и методами родительской формы. По мере того, как вы изменяете их, ваша форма становится все более самостоятельной. Некоторые ее функции могут совпадать с функциями родительской формы, но это и не обязательно — все зависит от того, как вы запрограммируете данную форму. Вы можете создать любое количество форм (лишь бы программа с ними справилась) и настроить каждую отдельно от других.

Для чего нужно ООП?

Зачем программисты используют ООП в своей работе? Дело в том, что программист может распределить функции программы по нескольким независимым объек-

там. Такой подход упрощает проектирование и разработку программ. Оптимизация объектов снижает риск нежелательного взаимодействия фрагментов программы. В сущности, каждый объект моделирует ту или иную ситуацию реального мира. Представьте себе крупную компанию, состоящую из нескольких отделов. Она (назовем ее Корпорацией XYZ) включает администрацию, отдел кадров, отдел информационных технологий и бухгалтерию.

Администрация отвечает лишь за совместную работу отделов, в ходе которой достигаются цели, поставленные перед компанией. Работники администрации умеют работать с компьютерами, но для разработки корпоративной интрасети их познаний явно недостаточно. Администраторы в основном работают с менеджерами других отделов и практически не общаются с рядовыми сотрудниками Корпорации XYZ.

Отдел кадров отвечает за найм, увольнение и оценку персонала компании. Он работает с несколькими тысячами личных дел, содержание которых в других отделах считается конфиденциальным. Работники других отделов обычно не располагают свободным доступом к личных делам. Им приходится подавать заявку и получать официальное разрешение. Например, менеджер может ознакомиться с личным делом подчиненного и решить, заслуживает ли тот повышения.

Отдел информационных технологий следит за тем, чтобы все компьютеры компании работали нормально. Сотрудники отдела информационных технологий обслуживают все остальные отделы Корпорации XYZ и решают технические проблемы, возникающие в ходе работы.

Наконец, бухгалтерия ведет счета компании, производит учет имущества и сводит дебет с кредитом. Часть информации, проходящей через нее, относится к финансовому положению компании и считается строго конфиденциальной. Если эта информация попадет в чужие руки, конкуренты воспользуются ею в своих целях. Разумеется, совместная работа отделов подчиняется определенным правилам. Если отделы начнут работать с чужой информацией, в компании начнется хаос и дело может кончиться крахом Корпорации XYZ.

Итак, Корпорация XYZ установила правила, определяющие, кто и зачем может получать доступ к служебной информации. Только менеджерам разрешается просматривать личные дела сотрудников, но лишь тех, которые являются их подчиненными. Менеджеры не имеют доступа к личным делам сотрудников из других отделов, потому что излишняя осведомленность может плохо отразиться на делах Корпорации XYZ. Следовательно, такие ограничения необходимы для нормальной работы.

ООП основано на том же принципе — в нем тоже имеются ограничения, определяющие, какие фрагменты кода могут использоваться другими фрагментами. Объекты выполняют свои задачи и взаимодействуют с другими объектами, лишь когда это действительно необходимо.

Хотя ООП требует нового подхода к программированию, оно обладает несомненными удобствами для программистов. Одни и те же принципы, заключенные в программном фрагменте, применяются на всех стадиях — от анализа и проекта- рования до написания кода. ООП позволяет адекватно моделировать поведение реальных объектов.

Если они были хорошо спроектированы, открывается возможность многократного использования кода. Например, если в объекте реализован специальный алгоритм обработки данных, принятый в компании, им можно будет воспользоваться в другом приложении и обновленной версии той же программы — это не нарушит его работы.

Чтобы ООП работало действительно эффективно, вы должны научиться мыслить по-новому. Программа рассматривается как совокупность компонентов, причем каждый из них представляет собой объект. Визуальное программирование облегчает такой подход. Главное — помните, что вы можете понять суть ООП и уже умеете пользоваться объектами. Если вы дочитали книгу до этого места, то работа с готовыми объектами не представляет для вас особой сложности. Настало время узнать, как проектировать и создавать собственные объекты.

 

ПОДСКАЗКА Старайтесь рассматривать программу как совокупность объектов. Если вы поймете основные принципы взаимодействия объектов, перед вами откроется новый способ разработки приложений.

 

Атрибуты объекта

Объект обладает атрибутами, определяющими его как самостоятельную сущность в мире программирования. У объектов, как и у любых компонентов Visual Basic, есть свойства, события и методы. Тем не менее они отличаются от процедур тем, что поддерживают три важных принципа: наследование, инкапсуляцию и полиморфизм.

В Visual Basic реализованы наследование и инкапсуляция, но не полиморфизм. Следовательно, с технической точки зрения Visual Basic не является объектно-ориентированным языком, но на его примере удобно изучать основы ООП. Давайте посмотрим, как устроен объект.

 

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

Как упоминалось в уроке 1, свойства описывают объект. Каждый объект, который вы используете или создаете в своей программе, обладает некоторым именем класса, по которому его можно отличить от других объектов. Мы воспользуемся свойствами для описания отдела кадров, о котором говорилось ранее в этом уроке. Прежде всего, с личными делами сотрудников могут работать только менеджеры, и это можно описать так:

Public IsManager As Boolean

Кроме того, менеджер имеет доступ к личным делам сотрудников только своего отдела. Следовательно, нам придется определить свойство для описания отдела:

Public Department As String

Наконец, мы должны указать чиновнику из отдела кадров имя интересующего нас сотрудника. Для этого мы создадим свойство EmployeelD:

Public EmployeelD As Long

На рис. 15.1 показано, как выглядит объект класса «отдел кадров». Обратите внимание на то, что имя и отдел сотрудника представлены соответствующими свойствами класса. Чтобы создать полезный объект, недостаточно наделить его свойствами — они должны использоваться методами того же объекта.

Рис. 15.1. Свойства класса «отдел кадров»

 

Методы объекта

Методами называются действия, выполняемые объектом. Например, объект-окно может отображать или скрывать себя на экране и даже изменять свои размеры. Какие же действия могут потребоваться от объекта «отдел кадров»? Самым простым будет чтение личного дела (рис. 15.2). Тем не менее, перед тем как объект обратится к личному делу, необходимо убедиться, что запрос поступил от менеджера соответствующего отдела. Метод может выглядеть так:

 

Public Function GetFileO As String

If IsManager and Department = "Администрация" Then

GetFile = "Джон Доу"

Else

GetFile = ""

End If

End Function

 

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

 

Рис. /5.2. Методы класса «отдел кадров»

 

Наследование

Наследованием называется способность объекта сохранять атрибуты класса-родителя. Например, созданный объект формы наследует свойства и методы своего класса-родителя. Он обладает такими свойствами, как Name, WindowState и BorderStyle, а также методами Load, Unload и Hide.

Чтобы создать экземпляр объекта в Visual Basic, следует указать на его принадлежность некоторому классу и затем воспользоваться ключевым словом New. Новый объект наследует свойства и методы родителя.

Сказанное можно пояснить на примере класса диалоговых окон из урока 10. Класс clsDialogs содержит методы YNBox, ErrMsg и LoginBox. Кроме того, в приложении-примере показано, как происходит создание нового диалогового окна. Прежде всего выделяется память для хранения объекта:

Dim dlg As clsDialog

Затем сам объект создается с помощью ключевого слова New:

Set dlg = New clsDialog

Новый объект, dlg, содержит три метода: YNBox, ErrMsg и LoginBox. Все они были созданы в исходном классе clsDialogs.

Эти же принципы относятся и к нашему классу. Ключевое слово New в Visual Basic выполняет ту же функцию, что и заполнение анкеты для отдела кадров с запросом на просмотр личного дела.

 

Инкапсуляция

Инкапсуляцией называется механизм, благодаря которому данные и методы объекта скрываются от внешнего мира. Программист изолируется от сложностей внутренней реализации объекта. Инкапсуляция составляет одну из самых сильных сторон ООП.

Именно инкапсуляция предотвращает посторонний доступ к личным делам. Каждый отдел работает с собственной информацией, которая может быть предоставлена только уполномоченным лицам при соблюдении определенных условий. Точно так же ведут себя и объекты.

Отдел кадров «инкапсулирует» личные дела, запирая их в шкафу. Чтобы получить к ним доступ, необходимо заполнить специальную анкету. В Visual Basic инкапсуляцию обеспечивает ключевое слово Private. Возможно, вы заметили, что большинство процедур в модулях кода объявляются с ключевым словом Private, — таким образом, запрещается доступ к этим методам со стороны других форм и модулей. Если некоторая процедура должна быть открытой, перед Sub или Function следует поставить ключевое слово Public:

Public Function Format_Disk(Drive As String)

 

ПРИМЕЧАНИЕ Проектируя объект, старайтесь ограничиваться минимумом открытых свойств. Закрывайте все, с чем не должны работать внешние программы. Это предотвратит случайное внесение ошибок другими программистами.

Полиморфизм

Полиморфизм — способность объекта принимать различные формы. Вы знаете, что объекты могут быть производными от других объектов. Новый объект наследует методы и свойства объекта-родителя. Полиморфизм позволяет добавлять, видоизменять или даже удалять некоторые особенности поведения производного объекта.

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

Отдел информационных технологий пользуется собственным вариантом анкеты, основанным на анкете отдела кадров. В ООП для этого следует создать экземпляр класса «отдел кадров» и изменить его с учетом специфики отдела информационных технологий. К счастью, в нашем случае все отличия сводятся к тому, что отдел хранит личные дела только своих сотрудников, причем не на бумаге, а в компьютере (рис. 15.3). В результате оба класса будут обладать одинаковыми свойствами и методами, но если вы запросите личное дело в отделе кадров, его достанут из шкафа. В отделе информационных технологий та же самая информация извлекается из компьютера. В ООП такой эффект достигается благодаря полиморфизму. Кроме того, рядовой служащий любого отдела точно знает, где в случае необходимости можно получить ту или иную форму.

 

Рис. 15.3. Полиморфизм

 


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: