Нима учун объект тури ишлатилади?
Объект тури катта тизимни мантиқий борлиқ бирликларига бўлиш ёрдамида мураккабликни соддалаштиришга имкон беради. Бу эса ўз навбатида дастурлаш жараёнида модуллик принципини қўллашда имкон яратади. Бундан ташқари дастур қисмларини ҳар хил командалар ишлаб чиқишига имкон беради.
Объект тури берилганларга кириш жараёнини фақат методлар ёрдамида ташкил қилишга ва берилганларни ортиқча таъсирлардан ҳимоя қилади. Объект тури мижоз дастурини ўзгартирмасдан туриб метод кодини ўзгартиришга имконият яратади.
Объект тури берилганларни ҳақиқий моделлаштиришга йўл очиб беради. Бундан ташқари объект турлари бевосита Java ва C++ каби объектга – мўлжалланган тилларнинг синфларига акслантирилади.
Объект турининг тузилиши
Пакетларга ўхшаб объект тури икки қисмдан иборат: аниқланиши ва танаси:
Объект турининг тузилмаси.
-
аниқланиши
Атрибутларни эълон қилиш
Методларнинг аниқланиши
|
-
танаси
Методларнинг таналари
|
Объект турининг аниқланиши сизнинг дастурингиз учун интерфейс бўлиб хизмат қилади; у берилганлар тузилмаси (атрибутлар тўплами) билан бирга уларни бошқарувчи амаллар (методларни) эълон қилади. Танаси эса методларни тўла аниқлайди.
Мижоз дастурида зарур бўладиган барча методлар объект турининг аниқланишида эълон қилинади. Аниқланишни операцион интерфейс ва танани қора ящик деб тасаввур қилишингиз мумкин. Сиз мижоз дастурига таъсир қилмасдан туриб танани ўзгартиришингиз мумкин.
Объект тури аниқланишида барча атрибутлар методлардан олдин эълон қилиниши лозим. Шундай қилиб, агар объект тури аниқланишида фақат атрибутлар эълон қилинса , унда объект турининг танаси лозим бўлмайди. Танада атрибутларни эълон қилиш мумкин эмас. Объект тури аниқланишидаги барча эълонлар объект турининг ташқарисида кўринади.
Тузилмани яхшироқ тушуниб олиш учун қуйидаги мисолга мурожаат қиламиз. Унда комплекс сонлар объект тури аниқланган. Биз учун ҳозирча комплекс сонлар икки қисмдан иборат ва улар учун бир нечта арифметик амалларнинг аниқланиши етарли бўлади.
CREATE TYPE Complex AS OBJECT (
rpart REAL, -- атрибут
ipart REAL,
MEMBER FUNCTION plus (x Complex) RETURN Complex, -- метод
MEMBER FUNCTION less (x Complex) RETURN Complex,
MEMBER FUNCTION times (x Complex) RETURN Complex,
MEMBER FUNCTION divby (x Complex) RETURN Complex
);
CREATE TYPE BODY Complex AS
MEMBER FUNCTION plus (x Complex) RETURN Complex IS
BEGIN
RETURN Complex(rpart + x.rpart, ipart + x.ipart);
END plus;
MEMBER FUNCTION less (x Complex) RETURN Complex IS
BEGIN
RETURN Complex(rpart - x.rpart, ipart - x.ipart);
END less;
MEMBER FUNCTION times (x Complex) RETURN Complex IS
BEGIN
RETURN Complex(rpart * x.rpart - ipart * x.ipart,
rpart * x.ipart + ipart * x.rpart);
END times;
MEMBER FUNCTION divby (x Complex) RETURN Complex IS
z REAL := x.rpart**2 + x.ipart**2;
BEGIN
RETURN Complex((rpart * x.rpart + ipart * x.ipart) / z,
(ipart * x.rpart - rpart * x.ipart) / z);
END divby;
END;
Do'stlaringiz bilan baham: |