Ada_Ru форум

Обсуждение языка Ада

Ada2005 interfaces

Оставить новое сообщение

Сообщения

Vladyslav Kozlovskyy
Ada2005 interfaces
2006-04-06 14:45:48

îÁÒÏÄ, ËÔÏ-ÔÏ ÒÁÚÂÉÒÁÌÓÑ Ó Ada2005 Interfaces?

 

íÅÎÑ ÉÎÔÅÒÅÓÕÀÔ ÏÄÉÎ ÍÏÍÅÎÔ:

 

íÏÖÎÏ ÌÉ ÎÁÓÌÅÄÏ×ÁÔØ ÉÎÔÅÒÆÅÊÓÙ Õ ËÏÔÏÒÙÈ ÅÓÔØ ÆÕÎËÃÉÉ Ó ÏÄÉÎÁËÏ×ÙÍÉ

ÓÉÇÎÁÔÕÒÁÍÉ. òÁÎØÛÅ ÎÅ ÂÙÌÏ ÍÎÏÖÅÓÔ×ÅÎÎÏÇÏ ÎÁÓÌÅÄÏ×ÁÎÉÑ, ×ÏÔ É ÐÒÏÂÌÅÍ

ÎÅ ×ÏÚÎÉËÁÌÏ.

á ÔÅÐÅÒÑÞÁ, ÅÓÌÉ ÓÉÇÎÁÔÕÒÙ ÆÕÎËÃÉÊ ÎÅ ÄÏÌÖÎÙ ÓÏ×ÐÁÄÁÔØ, ÐÒÉÄÅÔÓÑ × ÉÍÑ

ÆÕÎËÃÉÊ ×ÓÅÇÄÁ ÉÍÑ ÉÎÔÅÒÆÅÊÓÁ ×ÐÉÈÉ×ÁÔØ (ÞÔÏÂÙ, ÎÅ ÄÁÊ âÏÇ, ÓÉÇÎÁÔÕÒÙ ÎÅ

ÓÏ×ÐÁÌÉ! äÏ×ÏÌØÎÏ ËÏÒÑ×ÏÅ ÒÅÛÅÎÉÅ ÐÏÌÕÞÁÅÔÓÑ :(

 

÷ÒÏÄÅ, ÉÍÅÑ ÔÁËÏÊ ÍÏÝÎÙÊ ÍÅÈÁÎÉÚÍ, ËÁË ÐÅÒÅÉÍÅÎÏ×ÁÎÉÑ ×ÓÅ ÜÔÏ ÓÄÌÅÁÔØ

ÌÅÇËÏ. îÏ ×ÏÚÍÏÖÎÏ ÌÉ?

 

package i2 is

type ii is interface;

type ii_ref is access all ii'class;

 

procedure Set(this : in out ii; n : in positive) is abstract;

function Get(this : in ii ) return positive is abstract;

 

end i2;

 

package i1 is

 

type ii is interface;

type ii_ref is access all ii'class;

 

procedure Set(this : in out ii; n : in positive) is abstract;

function Get(this : in ii ) return positive is abstract;

 

end i1;

 

 

×ÙÈÏÄÉÔ ÞÔÏ-ÔÏ ÔÉÐÁ ÔÁËÏÅ:

 

with i1,i2;

 

package real_type is

type p is new i1.ii and i2.ii with record

num1 : positive;

num2 : positive;

end record;

 

-- ÒÅÁÌØÎÙÅ ÆÕÎËÃÉÉ ÔÉÐÁ p

procedure Set_i1(...)

function Get_i1(...)

procedure Set_i2(...)

procedure Get_i2(...)

 

-- ÍÁÐÉÎÇ ÜÔÉÈ ÆÕÎËÃÉÊ ÎÁ ÁÂÓÔÒÁËÔÎÙÅ ÆÕÎËÃÉÉ ÉÎÔÅÒÆÅÊÓÏ×

procedure i1.Set(...) renames Set_i1;

procedure i1.Get(...) renames Set_i1;

...

 

Á ×ÙÚÏ×, ËÁË ÏÂÙÞÎÏ:

v : real_type.p;

 

...

i1.Set(v, 100); -- ×ÓÅ ÐÕÔÅÍ! ÉÚÍÅÎÑÅÍ num1

i2.Set(v, 200); -- ×ÓÅ ÐÕÔÅÍ! ÉÚÍÅÎÑÅÍ num2

 

ÐÒÁ×ÄÁ ÄÌÑ ÐÏÄÏÂÎÙÈ ËÌÁÓÓÏ× ÔÏÞÅÞÎÁÑ ÎÏÔÁÃÉÑ ÕÖÅ ÎÅÄÏÓÔÕÐÎÁ:

v.Set(100); -- ËÏÔÏÒÙÊ ÉÚ?

 

(ÎÏ ÍÏÖÎÏ ÂÙÌÏ ÂÙ ÓÄÅÌÁÔØ É ÔÁË (ÎÅ ÐÉÎÁÔØ, ÎÏÇÁÍÉ!:) :

v.i1.Set(100); -- É ËÒÁÓÉ×Ï É ÐÏÎÑÔÎÏ, ÎÏ ËÏÍÐÉÌÑÔÏÒ

-- ÒÁË ÍÏÚÇÏ× ÐÏÌÕÞÉÔ :(

 

 

 

 

÷ÌÁÄ

Новое сообщение:
Страницы: 1

Чтобы оставить новое сообщение необходимо Зарегистрироваться и Войти