Об

24 Червня, 2024
0
0
Зміст

Об”єкт но-орієнтоване програмування  в Visual FoxPro

 

            Праця програміста дуже часто виявляється не такою творчістю, як може здатися зі сторони.  Замість творчих зусиль доводиться займатися перенесенням фрагментів раніше написаного коду і адаптацією до інших вимог функціональності або багатократно програмувати стандартні дії. При розробці нової програми значна частина роботи припадає на відбір і відлагодження раніше розроблених фрагментів. Природньо, що над полегшенням цієї задачі давно задумувалися програмісти і винайшли об”єктно-олрієнтоване програмування . В СУБД  для персональних комп”ютерів об”єктні метод и проникли зовсім недавно і саме Visual FoxPro за повнотою підтримки об”єктної моделі і набору потужних засобів візуального програмування займає провідні позиції.

            Visual FoxPro порівняно з версіями FoxPro 2.х  є принципово новим продуктом фірми Microsoft , в якому змінився увесь стиль програмування, що призвело до якісного стрибка в програмуванні на мові Visual FoxPro. Тепер Visual FoxPro є об”єктно-орієнтованою, візуально-програмованою мовою, що керується подіями, і у повній мірі відповідає новим вимогам, що ставляться до сучасних засобів проектування.

            Історія об”єктно-орієнтованого програмування  бере свій початок з кінця 60-х років. Комп”ютерний центр в Норвегії створив першу об”єктно-орієнтовану мову програмування, названу Simula, призначену для моделювання ситуацій в реальному світі. Основна особливість мови Simula полягала в тому, що програма була організована за об”єктами програмування. Об”єкт и  містять інструкції (що називаються метод ами) і дані (що називаються змінними), які визначають поведінку об”єкту.  В процесі моделювання об”єкт виконує притаманні йому дії, а при потребі, змінює дані для відображення впливу назначеної йому дії.

            Положення об”єктно-орієнтованого програмування , розроблені в Simula, дуже виявилися доречними при бурхливому розвитку персональних комп”ютерів. Зараз існує досить багато об”єктно-орієнтованих мов програмування, найпопулярнішими з яких є Delphi, C++, Visual Basic, Java.

            Візуальне програмування  донесло основні положення об”єктно-орієнтованого програмування  до кінцевого споживача. Замість того, щоб писати багато рядків коду для моделювання  поведінки об”єкту, засоби візуального програмування надають у розпорядження прототипи об”єктів , які можна налаштувати на свій смак. Наприклад, замість того, щоб вимагати від Вас написання коду C++ для створення кнопки, яка тоне та вспливає при натисненні її споживачем, візуально-програмовані мови містять прототип кнопки. Крім того, в прототип вмонтована стандартна реакція кнопки (натиснення і вспливання), яка звільняє споживача від нудного програмування, дозволяючи йому зосере\дитися на виконанні важливих задач.

            Зараз багато пакетів, з якими ви щоденно працюєте, містять засоби візуального програмування в середовищі Windows, розраховані на кінцевого споживача. Деякі з цих пакетів є об”єктно-орієнтованими засобами (наприклад, Visual Basic).

            Visual FoxPro є повнофункціональною мовою візуального програмування, яка об”єднує в собі такі якості, як потужність засобів, інтерактивний режим роботи, можливість створення додатків для керування реляційними базами даних, і , що не менш важливо, ця мова проста в опануванні і сумісна з попередніми версіями мови.

 

Особливості об”єктно-орієнтованого підходу .

 

            Традиційно, програми розглядаються в якості засобів, за допомогою яких комп”ютер виконує деяке конкретне завдання. Переважно, на першому етапі аналізується поставлена задача. Далі ви створюєте програму, яка керує виконанням вашого завдання. В попередніх версіях програма складалася з багатьох рядків коду. Які виконувалися в лінійному режимі. Звичайно, в них містилися конструкції розгалуження і організації циклів, однак порядок виконання дій визначався кодом програми. У цих програмах керування після настання певних подій здійснювалося досить жорстким чином.

            Об”єкт но-орієнтований підхід  в Visual FoxPro суттєво відрізняється від лінійного програмування. Розробка об”єктно-орієнтованих додатків починається з моделювання реальних об”єктів , потрібних для виконання конкретного завдання. При створенні додатку ви взаємодієте із добре відомими об”єктами: таблицями баз даних, екранними форм ами, кольоровими схемами. Створення кожного об”єкту припускає використання Visual FoxPro. Вам надається можливість скопіювати створені об”єкти із одного додатку в інший і тим самим скоротити обсяг роботи. Наприклад, якщо ви створили спеціальну кнопку. Яка призначена для пошуку прізвища пацієнт а у вказаній таблиці . Ви можете використовувати ту ж кнопку в іншому додатку для виконання функції пошуку. Для цього вам потрібно лише змінити найменування поля і таблиці , в яких буде здійснюватися пошук.

 

Події.

 

Означення. Подія  є деякою дією, яка активізує стандартну реакцію об”єкту.

В якості події в Visual FoxPro можуть розглядатися натиснення кнопки миші, вибір пункту меню  або відкриття таблиці . Visual FoxPro є мовою, що керується подіями.

Порядок виконання дій визначається перш за все подіями, що виникають в системі, і реакцією на них об”єктів . Нижче наведена послідовність виконання дій в Visual FoxPro:

1.     В системі виникає подія (натиснення клавіші, зміна значення поля і т.д.).

2.     Означується пов”язаний з цією подією об”єкт (поле таблиці , кнопка, форм а і т.д.).

3.     Викликається відповідаючий події метод  об”єкту, який містить дії по обробці події, що виникла.

 

            Візуальна природа Visual FoxPro дозволяє відразу спостерігати результати своїх дій при налаштуванні властивостей об”єктів .

            Об”єкт но-орієнтована побудова Visual FoxPro допомагає створювати свої власні додатки крок за кроком, працюючи в кожен момент лише з  одним із об”єктів . Якщо у Вас є лише один день для роботи над додатком, створіть таблиці , форм и і відпрацюйте сеанси введення даних. В подальшому, коли у вас з”явиться досить часу, ви зможете добавити розширені засоби. Що підвищують ефективність вашого додатку (наприклад, контекстно-залежну довідкову систему, функціональні клавіші і т.ін.).

 

Об”єкт и  і класи в Visual FoxPro

 

            Класи  та об”єкти тісно пов”язані один з одним, але тим не менше вони не тотожні.

Клас  містить інформ ацію про те, як повинен виглядати об”єкт і визначає виконувані ним дії.

Об”єкт  є екземпляром класу, який наслідує характеристики класу.

При створенні об”єктів  додатку ви можете використовувати базові класи Visual FoxPro, а також створювати нові спеціальні класи.

 

Базові класи

 

При створенні форм  широко використовуються базові класи Visual FoxPro, список яких наведений нижче. На основі базових класів  можна створювати власні класи, які можуть використовуватися при розробці додатку замість базових класів .

 

Найменування

Призначення

Видимість

Контейнер

Check Box

Прапорець

Так

Ні

Column

Стовпчик

Так

Так

Combo Box

Список, що відкривається

Так

Ні

Command Button

Кнопка керування

Так

 

Command Group

Набір кнопок керування

Так

Так

Container

Контейнер

Так

Так

Control

Базовий візуальний клас

Так

Ні

Custom

Базовий невізуальний клас

Ні

Ні

Edit Box

Область редагування

Так

Ні

Form

Форма

Так

Так

Form Set

Група форм

Ні

Так

Grid

Таблиця

Так

Так

Header

Заголовок стовпчиків таблиці

Так

Ні

Image

Зображення

Так

Ні

Label

Напис

Так

Ні

Line

Лінія

Так

Ні

List Box

Список

Так

Ні

Ole Container Control

OLE-об”єкт керування

Так

Ні

Ole Bound Control

OLE-об”єкт даних

Так

Ні

Option Button

Перемикач

Так

Ні

Option Group

Набір перемикачів

Так

Так

Page

Сторінка форм и

Так

Так

Page Frame

Макет сторінки

Так

Так

Shape

Обрамлення

Так

Ні

Spinner

Лічильник

Так

Ні

Text Box

Поле вводу

Так

Ні

Timer

Таймер

Ні

Ні

ToolBar

Панель керування

Так

Так

 

Більшість використовуваних класів  є видимими, деякі класи використовуються для об”єднання об”єктів  і не відображуються у форм і. Крім того, класи об”єктів  можуть бути вкладеними один в одного.

 

Означення. Клас , який може містити всередині себе інші об”єкти, називається контейнером  (container class).

 

Ви можете отримати доступ до всіх компонент контейнера як при створенні форм и, так і при розробці програми. Прикладом контейнера є таблиця, яка містить стовпчики і надписи до них.

Кожен базовий клас  має власний набір властивостей,  метод ів і пов”язаних з ним подій. Мінімальний набір властивостей, якими володіють усі класи наведений нижче у таблицях.

 

Мінімальний набір властивостей

 

Найменування

Опис

Class

Тип класу

BaseClass

Базовий клас, на основі якого створено даний клас

ClassLibrary

Бібліотека класів , в якій зберігається даний клас

ParentClass

Означений споживачем клас, на основі якого створено даний клас

 

Мінімальний набір подій

 

Найменування

Опис

 

Наступає при створенні об”єкту

 

Наступає при звільненні об”єкту із пам”яті

 

Наступає при виникненні помилки, пов”язаної із об”єктом

 

 

Створення об”єкту на основі базових класів

 

            Створення об”єктів  на основі базових класів  при створенні форм и здійснюється надзвичайно просто. Список усіх базових класів  міститься на панелі інструментів конструктору форм и. Для створення екземпляру вибраного класу досить перенести піктограму вибраного класу у форм у і розмістити її в потрібному місці форм и. Створений об”єкт буде мати всі характеристики базового  класу.

            Імена об”єктів  форм и визначаються при їх поміщенні на форм у. Найменування об”єктів  містять тип об”єкту і порядковий номер об”єкту у форм і (наприклад, Command1, Label2 ).

            Можна створювати нові об”єкти не лише в конструкторі форм , але й за допомогою функції CREATEOBJECT мови Visual FoxPro. Синтаксис цієї функції:

 

 CREATEOBJECT(ім”яКлас у, [, параметр1, параметр2, …])

 

Властивості об”єктів

 

            Кожен з об”єктів , створених на основі базових класів , наслідує властивості базового класу. Властивості подібні до змінних, однак на відміну від останніх вони не існують поза об”єктом.

            Можливість зміни властивостей об”єкту в Visual FoxPro є потужним інструментом керування даними в інтерактивному режимі. Наприклад, ви можете:

 

n     змінити властивості екранної форм и (заголовок, розмір і т.ін.)

n     змінити кольори полів вводу, форм ат відображення

n     заборонити введення в поля, перехід нан них або ж зробити їх невидимими і багато чого іншого

 

            Для того, щоб означити якусь із властивостей об”єкту в інтерактивному режимі, вам потрібно виділити потрібний об”єкт, після чого натиснути праву клавішу миші із контекстного меню  об”єкту вибрати команду Properties. В результаті на екрані з”явиться вікно властивостей поточного об”єкту. Властивості об”єктів  можуть бути символьними, логічними і числовими. Деякі з них можуть приймати довільні значення (наприклад, заголовок поля, координатит об”єкту-поля). Інші властивості можуть приймати довільні значення з означеного списку.

            При програмуванні ви можете визначати значення властивостей об”єкту, вказавши ім”я об”єкту і ім”я властивості, які розділяються крапками (.). Для зміни властивості досить присвоїти їй припустиме значення. Наприклад:

 

*присвоюємо змінній cName  значення заголовку форм и

cName = frmTest.Caption

*призначаємо новий заголовок форм и

frmTest.Caption = “Новий заголовок форм и

 

            Мова Visual FoxPro дозволяє встановлювати не лише властивості окремих об”єктів , але й певної групи об”єктів . Для цього використовується конструкція WITH … ENDWITH, яка має такий синтаксис:

 

WITH  ім”яОб”єкт у [, ім”яОб”єкт у]

[.ім”яВластивості = вираз]

ENDWITH

 

            Visual FoxPro дозволяє змінювати властивості об”єктів  в процесі виконання програми.

            Visual FoxPro дозволяє не лише використовувати властивості, наслідувані з базового класу, але й створювати нові властивості, які ви можете використоввувати для зберігання характеристик об”єкту і пов”язаних з ним даних. Для створення нової властивості об”єкту використовується команда Form – New Property конструктору форм , яка відкриває вікно діалогу New Property. Створена таким чином властивість  з”являється у вкладці Other вікна властивостей об”єкту. Далі можна присвоїти створеній влативості потрібне значення у вікні властивостей об”єкту або програмним шляхом і використати його при виконанні додатку.

 

Події і метод и

 

            Аналогіно до властивостей наслідуються події і метод и базового класу, на основі якого створюється об”єкт. Список метод ів, означених для об”єкту, відображається у вкладці Methods вікна властивостей об”єкту.

            Для кожної  події означується відповідаючий їй метод , який виконується при виникненні даної події. Наприклад, метод   Click виконується при натисненні кнопки миші. Список доступних метод ів обробки подій визначається базовим класом. Саме ці метод и забезпечують обробку всіх дій споживача (натиснення клавіш, керування мишою). Visual FoxPro надає можливістьмодифікувати дії, що виконуються при обробці події даного об”єкту. Для редагування метод у встановіть курсор на цей метод  у списку метод ів і натисніть двічі на кнопку миші. На екрані відкривається вікно редагування метод у, в якому ви можете написати програму обробки події. Наприклад, для кнопки ви можете означити програму створення звіту, яка викликається при натисненні на дану кнопку.

            Для кожної події об”єкту виконується означена в базовому класі дія. В деяких випадках вам потрібно заборонити виконання цих дій. Для цього використайте ключ ове слово NODEFAULT на початку метод у, пов”язаного з цією подією.

            Примітка. Методи, що виконуються при настанні подій, у вікні властивостей об”єкту в списку метод ів в доповнення до імені метод у містять слово “Event”.

            Команда MOUSE дозволяє програмним шляхом імітувати події Click, DoubleClick, MouseMove і DragDrop. Інші події не можуть імітуватися програмно, але ви можете викликати метод и, пов”язані з цими подіями.

            Крім метод ів, пов”язаних з подіями, об”єкт може містити і додаткові метод и, які виконуються лише при їх виклику. Наприклад, для форм и можуть бути означені метод и для переходу на наступний запис, знищення запису і т.ін. Ці метод и можуть наслідуватися з базового класу, але ви можете створювати нові метод и і для окремих об”єктів . Для створення нового метод у виконайте команду Form – New Method конструктору форм  і у вікні діалогу New Method означте ім”я і короткий опис метод у. Створений вами метод  добавляється в список метод ів об”єкту і ви можете відкрити вікно редагування метод у для введення програмного коду.

            Для виконання метод у потрібно вказати не лише  ім”я метод у, але й об”єкт, до якого буде застосовуватися даний метод . Ім”я об”єкту і ім”я метод у розділяються крапкою (.).

 

Вкладеність об”єктів

 

            Об”єкт и , створені на основі класів -контейнерів, можуть містити інші об”єкти. Ссилка на вкладений об”єкт здійснюється шляхом перечислення об”єктів , що містять цей об”єкт. Елементи списку розділяються крапками (.). Наприклад, для ссилки на стовпчик colCountry об”єкту-сітки grdAddress, яка також є об”єктом, потрібно написати grdAddress.colCountry. Така ссилка називається абсолютною ссилкою. Якщо глибина вкладення об”єкту велика, абсолютна ссилка може включ ати занадто багато об”єктів  і буде занадто громіздкою. У Visual FoxPro є засоби, які дозволяють скоротити список об”єктів  ссилки.

            Для ссилки на активну форм у можна використати властивість  ActiveForm екранного об”єкту (_SCREEN), що дозволяє отримати доступ до активної форм и, навіть якщо не знаєте її імені. Наприклад, наступний вираз дозволяє змінити заголовок активної форм и:

 

_SCREEN.ActiveForm.Caption = “Новий заголовок форм и

 

            Аналогічно, властивість  ActiveControl дозволяє отримати доступ до активного об”єкту форм и, а властивість ActivePage – до активної сторінки форм и.

            При ссилці на вкладений об”єкт можна використовувати властивість  Parent і ключ ові слова для ідентифікації об”єкту, до якого бажаєте отримати доступ. Властивість Parent містить ссилку на безпосередній контейнер об”єкту.

 

Список ключових слів та означувані ними посилання

 

Найменування

посилання

THIS

на сам об”єкт

THISFORM

на форм у, яка містить об”єкт

THISFORMSET

на групу форм , яка містить об”єкт

 

            Кожен об”єкт обробляє пов”язані з ним події незалежно. Тому контейнер не може реагувати на події вкладеного в нього об”єкту навіть в тому випадку, якщо даний об”єкт не містить метод у для обробки події, а контейнер може реагувати на дану подію.

 

Характеристики об”єктно-орієнтованого програмування

 

            Об”єкт но-орієнтоване програмування  має такі характеристики, які особливо корисні при створенні тиражованих і простих в супроводі додатків:

 

n    інкапсуляція;

n    наслідування;

n    підкласи;

n    поліморфізм.

 

            Давайте детальніше зупинимося на цих характеристиках.

 

Інкапсуляція

 

            Об”єкт  об”єднує в собі метод и і властивості об”єкту, які не можуть існувати окремо від об”єкту. При знищенні об”єкту знищуються його властивості і пов”язані з ним метод и. При копіюванні об”єкт копіюється як одне ціле. Ця характеристика об”єктно-орієнтованого програмування  називається інкапсуляцією.

 

Наслідування і підкласи

 

            Усі об”єкти створюються на основі класів  і наслідують властивості і метод и класів . Класи  можуть в свою чергу створюватися на основі інших класів . Такі класи називаються підкласами. Вони наслідують усі властивості і метод и батьківського класу. Додатково ви можете означити для підкласу нові властивості і метод и. Підкласи дозволяють вам скоротити обсяг програмування і максимально використати попередній досвід роботи. Крім того, зміна властивостей і метод ів батьківського класу відслідковується в підкласах, створених на основі цього класу, а також в об”єктах, створених на основі підкласів . Отже, можна без великих затрат змінити характеристики всього додатку.

 

Поліморфізм

 

            При традиційному процедурному програмуванні ім”я підпрограми, що викликається, або функції однозначно визначає виконуваний код. В об”єжктно-орієнтованому програмуванні ви можете використовувати одні і ті ж імена метод ів для виконання зовсім різних дій. Наприклад, метод  open() може використовуватися як для відкриття форм и, так і для відкриття бази даних . Виконувана дія залежить від типу об”єкту, до якого застосовується даний метод . Виконувана дія залежить від типу об”єкту, до якого застосовується даний метод . Такий підхід значно строщує програмування, дозволяючи використовувати одинакові смислові найменування для виконання різних дій.

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *

Приєднуйся до нас!
Підписатись на новини:
Наші соц мережі