Анимация
JavaScript
|
Главная Библионтека Абстрактным типом данных называется такой тип данных, который описан программистом, но не поддерживается в используемом языке программирования. В языках программирования, которые не поддерживают ООП, таких как, например, стандартный С, абстрактный тип данных может быть создан из существующих типов данных. Хорошим примером такого подхода является использование структур. В языках, поддерживающих ООП, на понятии "абстрактный тип данных" основано описание классов, осуществляемое в программе на высоком уровне. В процессе работы программы это описание используется для создания объектов, выполняющих реальные функции. В Visual FoxPro такой тип данных поддерживается программно за счет использования команды DEFINE CLASS и визуально при использовании Конструктора классов (Class Designer). Объекты, созданные во время работы программы, доступны для управления посредством специальных переменных, которые служат в качестве указателей на эти объекты. Абстракцией называется метод, при использовании которого можно игнорировать не существенные в данный момент детали и функции программы для того, чтобы получить возможность сосредоточиться на интерфейсе программы, обмене сообщениями с пользователем т. д. Абстракция поддерживает идею "черного ящика", когда часть или даже вся информация о поведении объекта может быть скрыта. Такой подход обеспечивает возможность использования в пользовательском приложении объектов с заранее определенными свойствами, функциональность которых не может опускаться ниже определенного уровня. В то же время возможно придание таким объектам дополнительных свойств и функций, изменение их внешнего вида и т. д. Классом называется шаблон, который описывает методы и свойства используемые для определенного типа объектов. На основании описания класса при работе программы создаются объекты, которые и обеспечивают выполнение заданных функций. Из описания одного класса может быть создано сколько угодно объектов. Такие объекты будут называться экземплярами одного класса. Описать класс программно можно с помощью команды DEFINE CLASS и визуально при использовании Конструктора классов. В Visual FoxPro классы делятся на визуальные и не визуальные. Визуальные классы служат прообразами объектов, которые будут видны и, соответственно, станут основой пользовательского интерфейса будущей программы. Не визуальные классы могут быть видны только в момент проектирования на их основе объектов, которые окажутся невидимыми при работе программы. Как правило, объекты, основанные на не визуальных классах, создаются и управляются программно, с помощью соответствующих команд и функций. Классы хранятся в файле библиотеки классов, что облегчает к ним доступ. Этот файл имеет расширение VCX и может содержать один или несколько классов. Объектом называется программно связанная коллекция методов (функций) и свойств, выполняющих одну функционально связанную задачу. объект можно сохранить в качестве типового и применять его в нескольких программах для обеспечения сходной функциональности. Таким образом, в ООП программист создает нужные объекты, а затем описывает действия с ними и их реакцию на действия пользователя. При таком подходе любую программу можно написать, включая туда тот или иной набор объектов, обеспечивающих выполнение тех или иных функций. Более детальное знакомство с принципами ООП начнем с терминологии, т. к. некоторые понятия здесь являются не только новыми, но и не такими простыми, как может показаться на первый взгляд. Свойство - это характеристика, с помощью которой описывается внешний вид и работа объекта. Например, заголовок, тип шрифта для его написания, вид линий и цвет в обрамляющей рамке, источник данных и т. д. Событие - это действие, которое связано с объектом. Событие может быть инициировано пользователем, вызвано программой или операционной системой. События являются основным инструментом для описания требуемой реакции объекта на действия пользователя. Все возможные события содержат по умолчанию заложенную в них реакцию, которую программист может изменить, записав в процедуру события определенный программный код. Эти процедуры могут быть защищены от дальнейших изменений или, наоборот, легко доступны для модификации пользователем. Некоторые действия в программе вызывают целую череду событий, происходящих в определенной последовательности. Например, загрузка экранной формы вызывает события, последовательность которых не может быть изменена. Метод - это функция или процедура, которая будет управлять работой объекта. Момент выполнение метода определяется исключительно программистом, т. к. метод вызывается только при его явном указании, например OBJECT.DRAW. Метод может быть защищен от дальнейшего изменения. Как в любую функцию, в него можно передать параметры и получить возвращаемое значение. Однако, ни метод, ни событие не могут иметь вложенных процедур. Стоит также учесть, что метод не может носить имя, совпадающее по названию со свойством. Иерархия классов - это древообразная структура классов, отображающая взаимосвязи между используемыми в приложении классами одного типа. Разобраться в понятии "иерархия классов" вам поможет рис. 5.1. Классы, находящиеся на более низких ступенях иерархии, называются подклассами. Любой из классов, находящихся в иерархии на рис. 5.1 ниже базового класса, будет подклассом. Классы, находящиеся на более высоких ступенях, на основании которых описаны ниже стоящие в иерархии классы, называются родительскими классами или суперклассами. Например, на рис. 5.1 базовый класс разработчика будет родительским по отношению к классу кнопок для панели инструментов. На основании одного родительского класса может быть создано сколько угодно подклассов следующего уровня. Такие подклассы называются экземплярами данного класса. На рис. 5.1 такими экземплярами будут классы для выполнения определенных действий, созданные на основе родительского класса графических кнопок. - " I БааоЕый кгасс кнопки улраапэния J Базовый клсс кнопок управления piaSp50T4HKa I Класс графических кнопок -Кла:;с кнопок для отмены - -51 Класс кнопок для выуо-да - * Класс 10 юпок для печати --I Класс кнпппк для панели инструментов Рис. 5.1. Например, объект - окно для вывода данных - обладает набором свойств, описывающих его внешний вид, и набором методов для управления его поведением на экране. Программно объект может быть создан с помощью функции CREATEOBJECT(). Базовым классом называется класс, находящийся на вершине иерархии классов, используемых в приложении. В Visual FoxPro базовые классы имеют весьма серьезную особенность. Они встроены в саму СУБД, и, следовательно, их описание не может быть изменено. В связи с этим полезно ввести понятие "базовых классов разработчика". Базовые классы разработчика являются дублерами базовых классов Visual FoxPro, стоят на следующей ступени иерархии после них, но являются классами более высокого уровня для всех остальных классов, используемых в приложении, как это видно на рис. 5.1 на примере классов для кнопок управления. Всего в Visual FoxPro программист может использовать около 30 базовых классов. Их классификация приведена на рис. 5.2, а назначение описано в табл. 5.1. Еаайвые классы V\sus\ ГоуРго Э1емен1ы yiifjjimiSHLra Check Воу CombQ Воу Commanc Dutton Control Fdit Ro* Header 1гл(3[5е Line H OLh Bound Contml H OLE CuMtainar Ccntrd Stiape Spinner Teyt Boy Custom Timer Container Fomn Grid - Column TocilR(3r h-1 Option Button Gncup NCorтlглэгd Rutton Grrsup Formaot Ц Page Frame I- Ради Визуальный класс He виауаль.ньм класс Рис. 5.2. Таблица 5.1. Базовые классы Visual FoxPro Имя класса Описание CheckBox Создает поле проверки, которое используется для переключения между двумя состояниями. Column Создает столбец в объекте Grid. Столбец может содержать данные из поля в таблице Иерархия классов может включать столько уровней, сколько пожелает разработчик, однако при разработке системы классов для приложения лучше не превышать пяти уровней иерархии. 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 [ 33 ] 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 |