АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция

Основи програмування в середовищі Delphi 7 0

Читайте также:
  1. PHP – скриптова мова програмування
  2. VІ. ПРАВОВІ І НОРМАТИВНО – ТЕХНІЧНІ ОСНОВИ ЗАБЕЗПЕЧЕННЯ БЕЗПЕКИ ЖИТТЄДІЯЛЬНОСТІ
  3. А. ОСНОВИ ТЕОРІЇ ДЕРЖАВИ
  4. Адаптація дітей і підлітків у соціальному середовищі
  5. Азотисті основи як складові компоненти нуклеїнових кислот
  6. АЛГОРИТМ РОБОТИ НАД ПРОФЕСІЙНО-ОРІЄНТОВАНИМИ ЗАВДАННЯМИ З КУРСУ «ОСНОВИ ПСИХОЛОГІЧНОГО ТРЕНІНГУ»
  7. Б. ОСНОВИ ТЕОРІЇ ПРАВА
  8. Біохімічні основи визрівання м’яса
  9. Візуальна мова програмування Бейсік для додатків: Visual Basic for Applications (VBA)
  10. Геометричні методи та лінійне програмування.
  11. Гігієнічні основи здорового способу життя
  12. Гігієнічні основи масажу

Оголошення класу

Клас - це тип даних, визначений користувачем. Те, що в Delphi є множина визначених класів, не суперечить цьому визначенню - адже розробники Delphi теж користувачі Object Pascal. Клас повинен бути оголошений до того, як буде оголошена хоча б одна змінна цього класу, тобто клас не може оголошуватись усередині оголошення змінної. Клас повинен оголошуватись з областю видимості - програма або модуль. Синтаксис оголошення класу такий

Туре <ім'я класу> = Class (<ім'я класу - батька>)

public {доступно всім}
<поля, методи, властивості, події>

published {видні в Інспекторі Об'єктів і змінювані}
<поля, властивості>

protected {доступ тільки нащадкам}
<поля, методи, властивості, події>

private {тільки в модулі}
<поля, методи, властивості, події>

 

Ім'я класу може бути будь-яким допустимим ідентифікатором. Але прийнято ідентифікатори більшості класів починати із символу "Т". Ім'я класу-батька може не вказуватися. Тоді передбачається, що даний клас є безпосереднім нащадком TObject - найбільш загального з визначених класів. Таким чином, еквівалентні такі оголошення:

Type TmyClass = class
...
end;

Type TmyClass = class (TObject)
...
end;

 

Клас успадковує поля, методи, властивості, події від своїх предків і може скасовувати якісь із цих елементів класу або вводити нові. Доступ до елементів класу визначається тим, у якому розділі вони оголошені. Якщо ви потребуєте спеціального захисту об'єкта або його частини, то для цього необхідно помістити його в окремий модуль.

З одного боку, Delphi, будучи візуальним середовищем розробки додатків, орієнтований на тих програмістів, що із готових компонент "збирають" конкретні додатки для кінцевих користувачів. З іншого боку, будучи розширюваним об'єктно-орієнтованим інструментом, цей продукт становить інтерес і для спеціалістів, що займаються нарощуванням функціональних можливостей вже існуючих програмних бібліотек. Тому, виглядає абсолютно логічною поява в Object Pascal нових розділів в описі класів - published і protected. Разом із раніше введеними розділами (public і private) вони надають повний контроль над можливостями використання і "безболісної" (у значенні запобігання фатальних із погляду ідеології помилок) модифікації компонентів Visual Component Library (VCL - бібліотека класів Delphi).

Розділ public (відкритий, доступні) призначений для оголошень, що доступні для зовнішнього використання. Секція public не накладає обмежень на область видимості в ній полів, методів і властивостей-їх можна викликати в будь-якому іншому модулі програми. Це відкритий інтерфейс класу.

Розділ published (що публікується, декларовані) містить відкриті властивості, що з'являються в процесі проектування на сторінці властивостей Інспектора Об'єктів і котрі користувач може впроваджувати в процесі проектування. Секція published так само не обмежує область видимості, проте в ній перераховуються властивості, що повинні бути доступні не тільки на етапі виконання, але і на етапі конструювання програми (тобто у вікні Інспектора Об'єктів). Секція published використовується тільки при розробці компонентів. Зазначимо, що за замовченням (без оголошення) секція вважається оголошеною як published. Така секція розташовується на самому початку оголошення класу будь-якої форми і продовжується до першої оголошеної секції. У неї середовище Delphi поміщає опис вставлених у форму компонентів. Програмісту не варто поміщати в неї власні елементи опису класу або видаляти з неї елементи, вставлені середовищем.

Розділ private (закритий, особисті) містить оголошення полів, процедур і функцій, використовуваних тільки усередині даного класу. Секція private звужує область видимості до мінімуму: особисті елементи опису доступні тільки усередині методів даного класу і підпрограмах, що знаходяться в тому ж модулі, де описаний клас. Елемент, оголошений у секції private, стає недоступним навіть найближчим нащадкам класу, якщо вони розміщаються в інших модулях.

Розділ protected (захищений) містить оголошення, доступні тільки для нащадків класу. Як і у випадку закритих елементів, можна сховати деталі реалізації захищених елементів від кінцевого користувача. Проте, на відміну від закритих, захищені елементи залишаються доступні для програмістів, що захочуть робити від цього класу похідні об'єкти, причому не потрібно, щоб похідні об'єкти оголошувалися в цьому ж модулі.

В Object Pascal дозволяється скільки завгодно разів оголошувати будь-яку секцію, причому порядок секцій не має значення. Будь-яка секція може бути порожньою.

Властивості

Поля даних, виходячи з принципу інкапсуляції, завжди повинні бути захищені від несанкціонованого доступу. Доступ до них, як правило, повинен здійснюватися тільки через властивості, що включають методи читання і запису полів. Тому поля доцільно оголошувати в розділі private - закритому розділі класу. У рідких випадках їх можна поміщати в protected - захищеному розділі класу, щоб можливі нащадки даного класу мали до них доступ. Традиційно ідентифікатори полів збігаються з іменами відповідних властивостей, але з додаванням у якості префікса символу 'F'.

Властивість оголошується оператором виду:

property <ім'я властивості>: <тип> read <ім'я поля або методу читання>

write <ім'я поля або методу запису> <директиви запам'ятовування>;

 

Якщо в розділах read або write цього оголошення записане ім'я поля, значить передбачається пряме читання або запис даних.

Якщо в розділі read записане ім'я методу читання, то читання буде здійснюватися тільки функцією з цим ім'ям. Функція читання - це функція без параметра, що повертає значення того типу, що оголошений для властивості. Ім'я функції читання прийнято починати з префікса Get, після якого іде ім'я властивості.

Якщо в розділі write записане ім'я методу запису, то запис буде здійснюватися тільки процедурою з цим ім'ям. Процедура запису - це процедура з одним параметром того типу, що оголошений для властивості. Ім'я процедури запису прийнято починати з префікса Set, після якого іде ім'я властивості.

Якщо розділ write відсутній в оголошенні властивості, значить ця властивість тільки для читання, і користувач не може задавати її значення.

Директиви запам'ятовування визначають, як треба зберігати значення властивостей при зберіганні користувачем файла форми .dfm. Частіше усього використовується директива

Default <значення за замовченням>

 

Вона не задає початкові умови. Це справа конструктора. Директива просто говорить, що якщо користувач у процесі проектування не змінив значення властивості за замовченням, то зберігати значення властивості не треба.

Наведемо приклад. Нехай потрібно оголосити клас з ім'ям MyClass, що успадковує безпосередньо TObject і має властивість цілого типу з ім'ям А, тоді оголошення цього класу може мати вигляд:

Type

MyClass = class

Private

FA: integer;

Protected

Procedure Set (Value: integer); {Процедура запису}

Published

Property А: integer read FA write Set default true;

End;

 

Тут вводиться закрите поле FA, оголошується захищена функція Set, використовувана для запису значення в це поле, і вводиться опублікована властивість А, що оперує цим полем. В оголошенні властивості після ключового слова read записане просто ім'я поля. Це означає, що функція читання відсутня, і користувач може читати безпосередньо значення поля. Після ключового слова write іде посилання на функцію запису Set, за допомогою якої будуть записуватися в поле А нові значення. У цій функції можна передбачити якісь перевірки допустимості значення А, що вводиться.

Опис цієї функції повинен міститись у розділі implementation того модуля, в якому оголошений клас, і може мати вигляд:

Procedure Set (Value: integer);

Begin

If...

Then FA:= Value;

End;

 

У наведеному прикладі опис властивості А міститься в розділі published. Отже, якщо цей клас описує створюваний вами новий компонент, то після його установки в систему властивість А буде з'являтися у вікні Інспектора Об'єктів при використанні цього компонента. Якщо перенести оголошення властивості в розділ public, то властивістю, як і раніше, можна буде користуватися, але тільки під час виконання додатка, оскільки у вікні Інспектора Об'єктів вона з'являтися не буде.

Якщо необхідно, щоб поле було доступно тільки для читання або тільки для запису, варто опустити відповідно частину write або read. Взагалі говорячи, властивість може і не зв'язуватися з полем. Фактично, вона описує один або два методи, що здійснюють деякі дії над даними того ж типу, що і властивість.

Наступний фрагмент коду пояснює області видимості.

Unit Unit1;

Interface

Uses Controls, Forms;

Type
Tform1 = class (TForm);

Private
FintField: integer;
Procedure SetValue(Value: integer);
Function GetValue: integer;

Published
Property IntField: read GetValue write SetValue;

Protected
Procedure Proc1;

Public
Procedure Proc2;

End;

Var
Form1: Tform1;

Implementation

Procedure Tform1.Proc1;
FintField:= 0; +
IntField:= 0; +
Proc1; +
Proc2; +

End;

Initialization

Form1.FintField:= 0; +
Form1.IntField:= 0; +
Form1.Proc1; -
Form1.Proc2; +

End.


Unit Unit2;

Interface

Uses Controls, Unit1;

Type

Tform2 = class (Tform1)
Procedure Proc3;

end;

Var
Form2: Tform2;

Implementation

Procedure Tform2.Proc3;
FintField:= 0; -
IntField:= 0; +
Proc1; +
Proc2; +

End;

Initialization

Form2.FintField:= 0; -
Form2.IntField:= 0; +
Form2.Proc1; -
Form2.Proc2; +

End.

 

 

Основи програмування в середовищі Delphi 7 0

Этот ноутбук поразит Вас
Мощная производительно сть по низкой цене
ЖМИТЕ на картинку и ГРУДЬ вырастет в 2 раза
Упражнения можноделать...

Кафедра: Автоматика та інформаційні технології
Курсова робота
На тему: "Основи програмування в середовищі Delphi 7.0"
Єкатеринбург, 2009 рік

Зміст
Введення
1. Основні поняття об'єктно-орієнтованого програмування.
2. Інтегроване середовище розробки Delphi: призначення і загальний опис середовища
3. Загальна організація програми в Delphi
4. Деякі довідкові відомості для роботи у середовищі Delphi
Висновок
Список літератури

Введення
Припускаю, що ви поки ще не чули цієї назви. Хоча, бути може, й чули. Delphi - це грецьке місто, де жив дельфійський оракул. І цим ім'ям був названий новий програмний продукт із феноменальними характеристиками.
Hадо відзначити, що до моменту виходу продукту обстановка навколо компанії Borland складалася не кращим для неї чином. Подейкували про можливий перепродаж компанії, курс акцій компанії нестримно котився вниз. Зараз вже можна без жодних сумнівів стверджувати, що період труднощів позаду. Hеверно, звичайно, було б говорити, що тільки Delphi з'явився причиною відновлення компанії; крім Delphi, у Borland з'явилися і інші чудові продукти, так само, як і Delphi, що грунтуються на нових, що з'явилися недавно у компанії Borland, технологіях. Я маю на увазі нові BDE 2.0, BC + + 4.5, Paradox for Windows 5.0, dBase for Windows 5.0, BC + + 2.0 for OS / 2.
Тим не менш, саме Delphi став тим продуктом, на прикладі якого стало ясно, що у Borland є ще порох у порохівницях, і що один єдиний продукт може настільки вдало поєднувати кілька передових технологій.

1. Основні поняття об'єктно-орієнтованого програмування
Об'єктно-орієнтоване програмування (ООП) зародилося в мовах програмування Паскаль, Ада, С + +. До появи ООП технологія створення комп'ютерних програм базувалася на процедурному програмуванні, в якому основою програм були функції і процедури, тобто дії. Створена таким чином комп'ютерна програма відрізнялася чітким алгоритмом роботи - послідовністю дій для досягнення поставленої мети. У ООП основною точкою опори при проектуванні програми є - об'єкт. Програма ООП - це не послідовність операторів, а сукупність об'єктів і способів їх взаємодії. Обмін інформацією між об'єктами відбувається за допомогою повідомлень.
1) Об'єктом назвемо поняття, абстракцію або будь-який предмет з чітко окресленими кордонами, який має сенс у контексті розглянутої прикладної проблеми. Об'єкти можуть успадковувати характеристики і поведінку інших об'єктів, званих батьківськими або предками. Наявність механізму наслідування є самим істотним розходженням між звичайним програмуванням на Pascal ООП програмуванням в Delphi.
2) Основним поняттям ООП є поняття класу: класом - називають особливу структуру, яка може мати у своєму складі поля, методи і властивості. Клас - це безліч об'єктів, які володіють внутрішніми властивостями, притаманними будь-якому об'єкту класу. Причому специфіка клас проводиться шляхом визначення його внутрішніх властивостей (классообразующій ознаки). Клас виступає в якості об'єктного типу даних. Класи мають поля (як тип даних Record), властивості (що нагадують поля, але мають додаткові описи) та методи (підпрограми, які обробляють поля і властивості класу). Базовим класом для всіх об'єктів у Delphi, є клас TObject. Цей клас інкапсулює основні функції, властиві всім об'єктам Delphi. Всі класи в Delphi є прямими або непрямими спадкоємцями цього класу.
3) Ієрархія об'єктів класу. Кожен конкретний клас має свої особливості поведінки і характеристик, що визначають цей клас. Наприклад, клас геометричних фігур можна розділити на два підкласи: плоскі і об'ємні фігури. Плоскі фігури можуть мати вершини і не мати їх. Плоскими фігурами, що не мають вершин, є окружності і еліпси.

Геометричні фігури

 

Об'ємні

 

Плоскі

 

З вершинами

 

Без вершин

 

Окружність

 

Еліпс
 
 

 

При використанні ООП слід пам'ятати, що якщо характеристика одного разу визначена, то всі категорії, розташовані нижче від цього визначення, теж будуть містити цю характеристику. Тому, якщо визначено коло, то немає потреби дізнаватися скільки у неї вершин, тому що вона відноситься до підкласу фігур, які не мають вершин.
4) Успадкування. У термінах Паскаль об'єкт найбільш схожий з типом Record, який є структурованим типом для об'єднання декількох пов'язаних елементів під одним ім'ям. Припустимо, що потрібно написати програму, яка підраховує розмір стипендій та заробітної плати в інституті чи університеті. Змінна (назвемо її TPerson), що містить дані про імена студентів і співробітників, дату та розмірі виплат, могла б виглядати таким чином:
TPerson = Record
Name: String [30]; {поле - ім'я}
Date: String [10]; {полі - дата}
RazV: Real; {полі - розмір виплати}
End;
Кожне значення, присвоєне змінній TPerson, є екземпляром типу record, представляє два рівня абстракції, тобто можна розглядати поля Ім'я, Дата, Размер_виплат окремо, або в сукупності для опису конкретної людини як TPerson.
Припустимо, що програма повинна враховувати виплати грошей студентам і співробітникам. У кожній групі виплати проводяться особливим способом. Можна створити інший тип запису для групи студент. Для отримання даних про те, скільки грошей має отримувати студент, необхідно знати його середній бал, можна побудувати запис TStudent види:
TStudent = Record
Name: String [30];
Date: String [10];
RazV: Real;
Ball: Real; {середній бал}
End;
Однак можна зберегти тип TPerson шляхом створення поля Student типу TPerson всередині типу TStudent.
TSudent = Record
Student: TPerson;
Ball: Real;
End;
Така конструкція зручна і проста, тому постійно використовується в програмуванні. Для студента тип TStudent повинен містити всі поля, які є в записі TPerson, при цьому тип TStudent є типом нащадком для типу TPerson. TStudent успадковує все, що належить TPerson, і крім того, містить нові поля, які роблять TSudent унікальним.
Процес, за допомогою якого один тип успадковує характеристики іншого типу, називається спадкуванням. У Delphi всі класи є нащадками класу TObject. У прикладі два пов'язаних типу об'єктів могли б визначатися наступним чином:
TPersonal = Object
Name: String [30];
Date: String [10];
RazV: Real;
End;
5) Операції та методи. Функція (або перетворення), яку можна застосовувати до об'єктів даного класу, називається операцією. Якщо одна і та ж операціязастосовується до об'єктів різного класу, то її називають поліморфної. Зазвичай при роботі з записами виникає проблема ініціалізації полів запису. Для присвоєння полів, в розглянутому раніше прикладі, початкових значень можна використовувати оператор With, але при необхідності ініціалізувати більше одного запису доведеться використовувати велику кількість операторів With, які будуть виконувати одні й ті ж дії. Тому природним є створення ініціалізація процедури, яка узагальнює застосування оператора with до будь-якого примірника типу TPerson, переданого як параметр:
Procedure Init (var Person: TPerson; N, D: String; R: Real);
Begin
With Person do begin
Name: = N;
Date: = D;
RazV: = R;
End;
End;
Процедура Init, включена в об'єкт спеціально для обслуговування типу TPerson, називається методом, тобто метод - це процедура або функція, зазначена в об'єкт таким чином, що екземпляр даного типу стає доступним для неї зсередини. Поля і методи є двома складовими частинами нової структури, званої об'єктом. З облік вищесказаного об'єкт TPerson можна описати таким чином:
Type
Tperson = Object;
Name: String [30];
Date: String [10];
RazV: Real;
Procedure Init (N, D: String; R: Real);
End;
Procedure TPerson. Init (N, D: String; R: Real);
Begin
Name: = N;
Date: = D;
RazV: = R;
End;
Таким чином, кожній операції відповідає метод - реалізація цієї операції для об'єктів даного класу. Кожна операція має один неявний аргумент - об'єкт, до якого вона застосовується. Вибір методу пов'язаний тільки з класом і об'єктом. Тепер для ініціалізації примірника типу TStudent досить просто викликати його метод:
Var Person: TPerson;
Person. Init (»Микола Іванович ', '25-06-1995', 40000);
6) Визначення методів. Процес визначення методів нагадує створення модулів в Turbo Pascal. Усередині об'єкту метод визначається заголовком процедури або функції, що діє як метод:
Type
Tperson = Object;
Name: String [30];
Date: String [10];
RazV: Real;
Procedure Init (N, D: String; R: Real);
Function GetName: String;
Function GetDate: String;
Function GetRazV: Real;
End;
Поля даних повинні бути оголошені перед оголошенням методів. Самі методи описуються поза визначення об'єкта як окрема процедура або функція. При визначенні методу його імені повинно передувати ім'я типу об'єкта, якому належить даний метод, з наступною точкою:
Procedure TPerson. Init (N, D: String; R: Real);
Begin
Name: = N;
Date: = D;
RazV: = R;
End;
Function TPerson. GetName: String;
Begin
GetName: = N;
End;
Function TPerson. GetDate: String;
Begin
GetDate: = D;
End;
Function TPerson. GetRazV: Real;
Begin
GetRazV: = R;
End;
7) Властивості об'єкта. Сукупність даних і методів їх читання і запису називаються властивістю. Властивості об'єктів можна встановлювати в процесіпроектування, а також можна змінювати програмно під час виконання програми. (В процесі проектування додатків в середовищі програмування Delphi можна переглядати значення деяких із цих даних у вікні Інспектора Об'єктів і змінювати ці значення).
8) Події та їх обробка. Середовищем взаємодії об'єктів є повідомлення, що генеруються в результаті настання різних подій. Подія - це взаємодія на об'єкт. Подіянастає в результаті дій користувача (переміщення курсору, натискання кнопки і т.п.). У кожному об'єкті визначено безліч подій, на які він може реагувати. У конкретних об'єктах можуть бути визначені обробники якихось із цих подій. До написання цих обробників і зводиться основне програмування за допомогою Delphi.
Таким чином, можна визначити об'єкт як сукупність властивостей і методів, а також подій, на які він може реагувати. Зовнішнє управління об'єктом здійснюється через обробники подій. Ці обробники звертаються до методів та властивостей об'єкта. Початкові значення даних об'єкта можуть задаватися також у процесі проектування установкою різних властивостей. В результаті виконання методів об'єкта можуть відбуватися нові події, що сприймаються іншими об'єктами програми або користувачем.


1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |

Поиск по сайту:



Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.011 сек.)