|
Программирование >> Проектирование интерфейса пользователя
В чем состоит важность объектного подхода Прежде чем привести аргументы в пользу важности объектно-ориентированной парадигмы, начнем с того, как развивалась область программирования. До возникновения объектных идей в индустрии программирования господствовал так называемый структурный подход, который был обязан своим появлением (так же, как и его будущий преемник) все возрастающей сложности прикладных задач, какую он и призван был Преодолеть. В центре внимания структурных программистов находился процесс. Решая задачу, программист определял множество данных и процессов их обработки. Процедуры и данные никак не соотносились друг с другом - кроме, пожалуй, тех ситуаций, когда процедура и порция данных в какой-то момент времени выполнения программы соприкасались для осуществления конкретной операции. После определения множества процессов и круга необходимых данных создавались процедуры, поддерживавшие выполнение отдельных процессов. Затем строилась главная процедура, из которой вызывались вспомогательные, решавшие частные задачи в рамках общей проблемы. Все это именовалось потоком вычислений. Структурное программирование поддерживалось средствами структурного проектирования. На этапе структурного проектирования предполагалось построение блок-схем, в которых с помощью спепиальпых символов отображался каждый конкретный процесс с учетом его места в общем потоке вычислений. Сторонники структурного подхода столкнулись с трудностями, порожденными чрезвычайной сложностью задач, которые предстояло решать. Крупное приложение могло содержать в своем составе тысячи процедур и функций, а языки структурного программирования, такие как С и Basic (предшественники Visual Basic), не поддерживали развитых средств агрегации кода. (Помните, мы как-то говорили о любви? Нет, конечно, о любви всегда приятно поразмышлять, но тогда речь шла, простите за прозу, об агрегации понятий.) Впрочем, еще до появления объектно-ориентированных систем программисты осознали необходимость агрегации данных в более крупные структуры - типы, определяемые пользователем. Агрегатный тип позволяет связать в единую целостную сущность несколько разнородных порций данных. Программисты, кроме того, уяснили (что в настоящее время для нас совершенно естественно) и полезность агрегации строк кода в именованные блоки-процедуры, позволяющие упростить структуру программы и уменьшить ее объем. Агрегатные типы данн1х и процедуры (функции) составили основу структурного подхода к программированию, но некоторые принципиальные моменты все равно остались за пределами изучения. Программирование все более тяготело к решению задач, настолько же сложных, как и мир, который нас окружает. Физический мир состоит из вещей . Каждая вещь характеризуется определенными атрибутами, описывающими ее структуру и особенности поведения. Человек - это, в известном смысле, одна из сущностей физического мира. Человеку свойственны определенные способности - скажем, речь и движение. Каждый человек отличается внешними характеристиками - цветом волос, ростом, весом и т.п. Это справедливо и в отношении других вещей физического мира: все они обладают некоторыми функциональными возможностями и ощутимыми, поддающимися оценке свойствами. Однако отдельно взятые процедуры и данные не в состоянии обеспечить полноценных средств описания вещей. Ученые-естествоиспытатели доказали, что физический мир (вероятно, самая сложная из всех сущностей) не может быть описан набором процессов - мир состоит из взаимодействующих между собою вещей. Это обстоятельство заставило задуматься и математиков, которые вполне обоснованно реши- ли, что языки программирования должны поддерживать средства создания абстракций, описываемых множествами свойств и способных к взаимодействиям. Подобные системы программирования получили название объектно-ориентированных. Развитие компьютерной науки и индустрии доказало правоту кибернетиков-первопроходцев. Сложная программа становится более управляемой, если написана в объектно-ориентированном стиле. Впрочем, плохие образцы объектного кода - как и любая другая плохо выполненная работа - не станут лучше от того, что мы назовем их модным словечком. Не все программисты работают сейчас в объектном стиле, но подавляющее большинство новых проектов создается на языках, в которых поддерживаются средства объектно-ориентированного программирования. Пока еще отдельные компании (по крайней мере, так было в 2001 году) еще не могут оценить всех достоинств новых технологий. Что ж, это их воля. Объектно-ориентированный подход к программированию остается в силе, он может развиваться, изменяться, но уже не будет отброшен, и компьютерная индустрия никогда не повернет вспять, к прошлому. Уделите особое внимание этой главе - пользу гарантируем. Прежде чем продолжить, несколько советов. Избегайте построения объектов просто так, без особой на то нужды. Сосредоточьте внимание на сущности проблемы, а не на количестве классов, которые вы построили или, наоборот, не построили. Примите к сведению, что хороший объектно-ориентированный блин редко удается с первого раза уберечь от превращения в ком . Качественные результаты достигаются только в процессе практики - непрерывной и, может быть, даже утомительной. В первый раз - первый класс Работа с модулем класса ничем не отличается от привычных приемов использования обычных модулей. Единственная особенность состоит в том, что законченные фрагменты кода обычных модулей независимы, а содержимое модуля класса трактуется Access как единое целое. Чтобы использовать класс в программе, необходимо построить экземпляр (объект) класса. Вы уже осведомлены о том, как создаются объекты классов. Еще раз воспроизведем пример из главы 13-й час. Коллекции данных : Dim Strings As New Collection В приведенной строке кода объявляется и создается экземпляр класса Collection под названием strings. Это и есть объект класса. Вводя код в модуле класса, вы определяете структуру класса. Чтобы построить простой класс, выполните следующие действия. Создайте новую или откройте существующую базу данных. 2. Выберите элемент Модули (Modules) в списке Объекты (Objects) окна База данных (Database) и щелкните на кнопке Создать (New) панели инструментов. 3. Введите текст листинга в окне нового модуля. 4. Сохраните модуль под именем Test. 5. Не закрывая окна редактора, выберите в строке меню команду Module, чтобы создать новый модуль класса и добавить его в базу данных. 6. Введите текст листинга 21.2 в окне нового модуля класса. 7. Сохраните модуль под именем FirstClass. 8. Выберите в строке меню окна редактора команду WindowoJest, чтобы перейти к окну модуля Test. 9. Выполните процедуру rstClass - откроется окно, содержащее сообщение В первый раз -первый класс!. Листинги. Процедура для тестирования класса, описанного в листинге 21.2 Option Compare Database Sub TestMyFirstClass Dim MyFirstClass As New FirstClass MyFirstClass.Greetings Set MyFirstClass = Nothing End Sub Анализ II Листинг. 1 содержит текст простой процедуры, в строке 3 которой соз-I дается объект MyFirstClass класса FirstClass, а далее, в строке 4, вызывается метод Greetings этого класса. Директива строки 5 освобождает фрагмент памяти, выделенный для хранения объекта. Обратите внимание, что имя объекта (MyFirstClass) отделяется от названия его метода (Greetings) оператором точки (.). Листинг 21.2 демонстрирует содержимое модуля класса. Листинг 21.2. Содержимое модуля класса 1: Option Compare Database 2 : Sub Greetings { ) 3: MsgBox B первый раз 4: End Sub первый класс! В VBA все члены класса содержатся в одном модуле. Модуль класса создается при выборе в строке меню окна редактора команды lnsert=> Class Module. Листинг 21.2 представляет код класса FirstClass. Любой код, содержащийся в модуле класса, становится неотъемлемой частью класса. Построенный нами класс FirstClass весьма прост: он содержит единственный метод - процедуру Greetings. Несмотря на то, что первый класс, FirstClass, нельзя назвать особенно полезным с практической точки зрения, формально он верен и может использоваться в качестве руководства по построению других, более реальных и сложных классов. Чтобы приступить к созданию нового класса, достаточно обратиться к окну редактора Microsoft Visual Basic и выбрать в строке меню команду lnsert=>Class Module, которая приводит к открытию окна нового модуля. Теперь, работая в окне модуля класса, вы можете действовать в той же манере, как и при написании обычного - не объектно-ориентированного - кода. Наиболее существенное различие подходов состоит в том, что, намереваясь включить определенный код в состав класса, вы должны поместить его в соответствующий модуль - и код станет естественной частью интерфейса класса. Прежде чем перейти к вопросам создания более сложных классов, необходимо кратко осветить проблему обеспечения доступа к членам классов. Сокрытие информации Слыхали ли вы когда-нибудь фразу: Слишком мног мации? Да, временами бывает, что излишек информации определенно вреден. Вообразите на мгновение, что для обеспечения жизнедеятельности своего организма вы должны будете отдавать мысленные приказы типа Желудок, дружище, займись-ка перевариванием передан-
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |