Студопедия

Главная страница Случайная страница

КАТЕГОРИИ:

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






Теоретичні відомості.






Мова Delphi — строго типізована об¢ ектно-оріентрована мова, в основі якого лежить добре знайомий програмістам Object Pascal. Об’єкт - деяка частина оточуючого світу, яка може бути розглянута як одне ціле. Кожний об’єкт має свій ідентифікатор (ім’я). Об’єкти мають свої властивості, за якими вони відрізняються один від одного. Властивість об’єкту – сукупність ознак об’єкту, за якими можна відрізняти об’єкти один від одного. Кожна ознака характеризує об’єкт за параметром. Наприклад: вага, розмір, характер, колір і т. д. Параметри мають своє значення: вага=1 кг.330 г., характер = “запальний”, колір = ”синій”.

Об’єкт можна характеризувати різною поведінкою, яка виявляється за допомогою дії. Дії можна поділити на два види:

· активні, коли об’єкт може сам виконувати будь-які дії;

· пасивні, коли з об’єктом виконують деякі дії інші об’єкти.

У мові Turbo Pascal визначений тип величин, який має назву object. Зовні об’єктні типи подібні до типу record. Це складений тип даних, елементи (поля) якого можуть мати будь-який базовий тип. На відміну від запису крім ознак властивостей, що мають якісь визначені параметри, об’єкт включає в себе також дію. Властивості у об’єкті описані подібно полям запису. Дія описується за допомогою функції або процедури (пасивної або активної дії). Дії мають назву методи. Для методів доступні поля об’єкту. при заданні об’єкту описується тільки шаблон методу, а самі процедури чи функції записуються пізніше. Наприклад:

type

point = object

x, y: integer;

Visual: boolean;

procedure create (a, b: integer);

procedure switchon;

procedure switchoff;

procedure move (dx, dy: integer);

function GetX: integer;

function GetY: integer;

end;

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

procedure point.create (a, b: integer);

begin

x: = a;

y: =b;

end;

Взагалі кожний об’єкт повинен мати метод, за допомогою якого властивості якого можуть приймати деяке визначене значення. Адже в програмі ніхто не має право вказати оператори x: = a; y: =b; поза відповідним методом. Такі методи найчастіше мають назву create (створення) або init (ініціалізація).

procedure point. switchon;

begin

Visual: =true;

putpixel(x, y, getcolor);

end;

procedure point. switchoff;

begin

Visual: =false;

putpixel(x, y, 0);

end;

procedure point.move (dx, dy: integer);

begin

x: =x+dx;

y: =y+dy;

point. switchon;

end;

function GetX: integer;

begin

GetX: =x;

end;

function GetY: integer;

begin

GetY: =y;

end;

Тут описані дії, які можна виконати над точкою: задати координат точки (create), показати та сховати точку (switchon та switchoff), перемістити точку в інше місце екрану (move), визначити її координати (GetX та GetY).

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

Далі в програмі описуються змінні величини вказаного типу і для них виконуються дії (методи).

var t1, t2: point;

K

t1.create(45, 156);

t1.switchon;

Об¢ єкти можуть наслідувати властивості інших об¢ єктів. Так, для вказівки того, що Circle (коло) є нащадком об’єкту point (точки), при описувані типу після назви об’єкту-нащадка треба в дужках вказати ім’я батьківського типу. В такому випадку об’єкт нащадок автоматично отримує всі властивості та методи батьківського типу.

type Circle = object (Point)

radius: integer;

procedure Create(a, b, r);

procedure Switchon;

procedure Switchoff;

procedure Move(dx, dy: integer);

Function getr: integer;

end;

Для об’єкту Circle вказаний додатковий метод getr (вертає значення радіусу кола), який властивий тільки йому. У зв’язку з тим, що об’єкт Circle крім властивостей x, y, visible, які він наслідує у об’екта Point, має також свою власну властивість radius, то методи, які успадковані від об’єкту Point треба перевизначити (поліморфізм). При цьому можна використовувати вже визначені методи об’єкта Point:

procedure Create(a, b, r);

begin

Point.Create (a, b);

radius: = r;

end;

procedure Switchon;

begin

visible: =true;

setcolor(5);

Graph.Circle (x, y, radius);

end;

procedure Switchoff;

begin

Visual: =false;

setcolor(0);

Graph.Circle (x, y, radius);

end;

procedure Move(dx, dy: integer);

begin

Switchoff;

x: =x+dx;

y: =y+dy;

Switchon;

end;

Function getr: integer;

begin

getr: =radius;

end;


Поделиться с друзьями:

mylektsii.su - Мои Лекции - 2015-2024 год. (0.008 сек.)Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав Пожаловаться на материал