ЗНАЕТЕ ЛИ ВЫ?

Элементы объектно-ориентированного программирования в VFP



Хотя Visual FoxPro поддерживает стандартное процедурное программирование Xbase, новые расширения языка дают пользователям мощность и гибкость объектно-ориентированного программирования, что предопределяет изменение всей логики и методики разработки прикладной программы.

Классы и объекты — два фундаментальных понятия объектно-ориентированного программирования. Класс содержит информацию о том, как объект должен выглядеть и вести себя. Другими словами, класс — это прообраз объекта. Visual FoxPro дает возможность пользователям создавать объекты как с помощью визуальных средств, так и программно на основании базовых классов, список которых приведен в табл. 1. Более подробная информация по классам Visual FoxPro приведена ниже.

 

Таблица 1. Базовые классы Visual FoxPro

CheckBox EditBox ListBox Shape
Column Form OLEBoundControl Spinner
CommandButton FormSet OLEContainerControl TextBox
CommandGroup Grid OptionButton Timer
CombcBox Header OptionGroup ToolBar
Container Image Page
Control Label PageFrame
Custom Line Separator

Для описания объекта используется набор свойств. Эти свойства объект получает из соответствующего класса, на основании которого он создан. Если нам нужен объект, имеющий свойства, отличные от свойств его класса, мы должны создать подкласс с измененными свойствами и уже его использовать для создания объекта.

Для описаний действий, выполняемых объектом, используются методы, то есть процедуры и функции, объявленные внутри класса и непосредственно с ним связанные. Методы легко координируются с событиями, происходящими при работе программы. Главное преимущество для разработчика здесь заключается в том, что привязанные к событию методы выполняются автоматически, и у нас даже есть возможность принудительно вызвать какое-то событие. Список в таблице представляет основные события Visual FoxPro, которые могут использовать большинство объектов управления пользовательского интерфейса. Для каждого класса этот список может меняться как в сторону расширения, так и сужения.

 

Таблица 2. Основные события Visual FoxPro

Событие Описание
Load Форма или набор форм загружаются в память
Unload Форма или набор форм удаляются из памяти
Init Объект создается
Destroy Объект удаляется из памяти
Click Пользователь щелкает на объекте основной кнопкой мыши
DblClick Пользователь дважды щелкает на объекте основной кнопкой мыши
RightClick Пользователь щелкает на объекте дополнительной кнопкой мыши
GotFocus Объект выделяется либо действиями пользователя (с помощью клавиатуры или мыши), либо программно (используя метод SetFocus)
LostFocus Объект перестает быть выделенным либо действиями пользователя (выделяется другой объект), либо программно (используя метод SetFocus)
KeyPress Пользователь нажимает или отпускает клавишу
MouseDown Пользователь нажимает кнопку мыши, когда указатель мыши находится на объекте
MouseMove Пользователь перемещает мышь над объектом
MouseUp Пользователь отпускает кнопку мыши, когда указатель мыши находится на объекте
InteractiveChange Значение объекта изменяется интерактивно
ProgrammaticChange Значение объекта изменяется программно

 

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

Рассмотрим некоторые из возможностей объектной модели Visual FoxPro.

 

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

Наследование — одна из наиболее мощных возможностей объектно-ориентированного программирования. Заново созданный объект может наследовать характеристики (то есть свойства и методы) от предшественника — другого объекта. Хотя объекты могут наследовать характеристики от родительских классов, они также могут и не принимать во внимание наследование. Это позволяет разработчикам устранить потребность в двойном коде, когда необходимы подобные функциональные возможности, и настроить объекты для использования в конкретных условиях. Visual FoxPro полностью поддерживает наследование и, в случае надобности, его отмену либо программно, либо с помощью интерфейса.

Создание подклассов

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

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

Объектно-ориентированное программирование также позволяет пользователям помещать атрибуты (свойства) и правила поведения (методы) в объекты. В Visual FoxPro программисты могут разместить информацию об объекте так, чтобы доступ к ней был невозможен. Это позволяет создавать “черные ящики”, которые скрывают информацию. Даже если внутренняя реализация объекта и управление им может быть полностью скрыта, объект “знает” все, что ему требуется “знать”, чтобы вести себя в соответствии с задуманным алгоритмом.

Полиморфизм

Visual FoxPro дает программистам возможность пользоваться преимуществами полиморфизма. Полиморфизм полезен, когда специфическая функция должна вести себя по-разному при различных обстоятельствах. Например, произвольный метод Append может быть полиморфен в зависимости от типа объекта (скажем, различные кнопки в пользовательской форме для добавления данных в различные таблицы), который вызвал метод Append. Это динамическое связывание функциональных возможностей позволяет создавать структурные классовые иерархии, где базисные скелеты объектов определены в базовом классе, а специализированный код — в полученных подклассах.

Простейший пример создания управляющей кнопки для завершения работы с формой средствами объектно-ориентированного программирования приведен на рис.

 

При работе в Visual FoxPro следует обратить самое серьезное внимание на то, что классы и объекты хотя и являются очень близкими понятиями, но это не одно и то же.

Класс содержит информацию о том, как объект будет выглядеть и как он будет себя вести. Другими словами, класс — это прототип или шаблон объекта. Когда вы создадите класс, опишете его свойства и необходимую реакцию на возможные события, с точки зрения пользователя в программе ничего не изменится. Чтобы что-то появилось (кнопка, поле и т. д.), необходимо на основании этого класса создать объект. Естественно, что чем точнее описания свойств класса соответст­вуют необходимой функциональности объекта, тем меньше работы придется выполнить, чтобы пройти путь от шаблона до реального объекта.

Стандартные возможности средств управления заложены в свойствах базовых классов Visual FoxPro. Описание базовых классов включено в саму СУБД и не может быть модернизировано. Это готовый инструмент для работы или исходный образец для создания других классов и подклассов.

Кроме перечисленных, новые для FoxPro средства управления и объекты могут быть созданы визуально или программно на основе соответствующих базовых классов. В табл. 3 перечислены доступные элементы управления и соот­ветствующие им типы данных.

Таблица 3. Типы данных элементов управления

Элемент управления Допустимые типы данных
CheckBox Логический, числовой
ComboBox Символьный, числовой
CommandButton Числовой
Command Group Символьный, числовой
EditBox Символьный
Grid Символьный, числовой
ListBox Символьный, числовой
OptionButton Числовой
OptionGroup Символьный, числовой
Spinner Числовой
TextBox Любой тип данных

 

Контрольные вопросы.

1. Перечислите возможности объектно-ориентированного программирования Visual Foxpro.

2. Какие базовые классы существуют в Visual Foxpro.

3. Перечислите основные события Visual Foxpro.

4. С какими типами данных могут работать элементы управления.

Заметим, что литературы на русском языке, посвященной тематике СУБД, очень много. Невозможно порекомендовать одну или несколько книг, содержание которых покрывало бы материал данного курса. К числу лучших относятся книги К. Дейта "Введение в системы баз данных" (имеет много переизданий) и книга Дж. Ульмана "Основы систем баз данных"

 


Лекция 9

Язык для взаимодействия с БД SQL появился в середине 70-х и был разработан в рамках проекта экспериментальной реляционной СУБД System R. Исходное название языка SEQUEL (Structered English Query Language) только частично отражает суть этого языка. Конечно, язык был ориентирован главным образом на удобную и понятную пользователям формулировку запросов к реляционной БД, но на самом деле уже являлся полным языком БД, содержащим помимо операторов формулирования запросов и манипулирования БД средства определения и манипулирования схемой БД; определения ограничений целостности и триггеров; представлений БД; возможности определения структур физического уровня, поддерживающих эффективное выполнение запросов; авторизации доступа к отношениям и их полям; точек сохранения транзакции и откатов. В языке отсутствовали средства синхронизации доступа к объектам БД со стороны параллельно выполняемых транзакций: с самого начала предполагалось, что необходимую синхронизацию неявно выполняет СУБД. Рассмотрим эти свойства языка немного более подробно.

 

В настоящее время SQL переживает новый подъем. В качестве коммерческого продукта язык был впервые реализован в Oracle в 1976 году, но официального стандарта SQL не существовало до 1986 года, когда он был опубликован как результат объединенных усилий ANSI (the American National Standards Institute) и ISO (International Standards Organization). Поскольку ANSI является частью ISO, в данном приложении мы ссылаемся на обе эти организации как на ISO. Стандарт1986 года был пересмотрен в 1989 году, в него были введены средства, обеспечивающие ссылочную целостность (referential integrity).

К тому времени, когда появился стандарт 86, ряд программных продуктов уже использовал SQL, и ISO попытался закрепить в стандарте наиболее общие черты этих реализаций для того, чтобы ввод стандарта не отразился слишком болезненно на готовых программных продуктах. ISO проанализировал все основные характеристики существовавших к тому времени программных реализаций и определил весьма минимальный стандарт. Некоторые существенные характеристики, например, как уничтожение объектов и передача привилегий, были опущены из стандарта полностью. Теперь, когда многообразный компьютерный мир стал столь коммуникабельным, разработчики и пользователи хотят без особых проблем взаимодействовать с множеством баз данных, разработанных индивидуально. В результате возникла потребность в стандартизации тех характеристик, которые ранее были отданы на усмотрение разработчика. Несколько лет эксплуатации конкретных систем и теоретических исследований дали новые идеи, которые требуют единообразия при воплощении в программных продуктах. Для удовлетворения этих потребностей ISO разработал новый стандарт SQL 92.

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

Естественно, те продукты, которые используются, могут по-своему расширять стандарт. Для того чтобы прикладной программист мог выделять все специфические моменты, имея дело с такими расширениями, новый стандарт требует применения флаггера (flagger) – программы, проверяющей основной код и помечающей (маркирующей) все предложения SQL, не соответствующие стандарту 92. Непомеченные предложения ведут себя так, как описано в стандарте. Для помеченных предложений следует применять системную документацию. Возможна ситуация, при которой предложение соответствует стандарту, а его поведение – нет. Такое предложение также помечается. В любом случае, этот стандарт более полон, чем предыдущий.

 

Роль SQL

 

В настоящее время, SQL выполняет много различных функций:

• SQL — язык интерактивных запросов. Пользователи вводят команды SQL в интерактивных программах с целью выборки данных и отображения их на экране. Это удобный способ выполнения специальных запросов.

• SQL — язык программирования баз данных. Чтобы получить доступ к базе данных, программисты вставляют в свои программы команды SQL. Эта методика используется как в программах, написанных пользователями, так и в служебных программах баз данных (таких как генераторы отчетов).

• SQL — язык администрирования баз данных. Администратор базы данных, находящейся на рабочей станции или на сервере, использует SQL для определения структуры базы данных и управления доступом к данным.

• SQL — язык создания приложений клиент/сервер. В программах для персональных компьютеров SQL используется как средство организации связи по локальной сети с сервером баз данных, в которой хранятся совместно используемые данные. Архитектура клиент/сервер весьма популярна в приложениях корпоративного уровня.

• SQL — язык доступа к данным в среде Internet. На Web-серверах SQL используется как стандартный язык для доступа к корпоративным базам данных.

• SQL — язык распределенных баз данных. В системах управления распределенными базами данных SQL помогает распределять данные среди нескольких взаимодействующих вычислительных систем. Программное обеспечение каждой системы посредством SQL связывается с другими системами, посылая им запросы на доступ к данным.

• SQL — язык шлюзов баз данных. В вычислительных сетях с различными СУБД SQL часто используется в шлюзовой программе, которая позволяет СУБД одного типа связываться с СУБД другого типа.

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

 

Преимущества SQL

SQL — это легкий для понимания язык и в то же время универсальное программное средство управления данными.

Успех языку SQL принесли следующие его особенности:

• независимость от конкретных СУБД;

• межплатформенная переносимость;

• наличие стандартов;

• одобрение компанией IBM (СУБД DB2);

• поддержка со стороны компании Microsoft (протокол ODBC и технология ADO);

• реляционная основа;

• высокоуровневая структура, напоминающая английский язык;

• возможность выполнения специальных интерактивных запросов;

• обеспечение программного доступа к базам данных;

• возможность различного представления данных;

• полноценность как языка, предназначенного для работы с базами данных;

• возможность динамического определения данных;

• поддержка архитектуры клиент/сервер;

• расширяемость и поддержка объектно-ориентированных технологий;

• возможность доступа к данным в среде Internet;

• интеграция с языком Java (протокол JDBC).

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

 





Последнее изменение этой страницы: 2017-01-25; Нарушение авторского права страницы

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.234.255.5 (0.013 с.)