Здравствуйте, Mr. None, Вы писали:
MN>Здравствуйте, S.Yu.Gubanov, Вы писали:
SYG>>"Включение" vs "Наследование" интерфейсов
MN>Разрешите сперва скорректировать термины.
MN>"Включение" — агрегация (мне так удобнее).
MN>"Наследование" — статическое наследование (именно о нём вы говорите в своём посте).
MN>Наследование — механизма разделения ресурсов между объектами связанными отношением потомок-предок.
Боюсь, что Вы это о чем-то о своем...
Множество {1,2,3,4} включает в себя подмножество {2,3}, но оно не агрегирует его. Агрегация — это когда автомобиль агрегирует в себе свой двигатель, сиденья, бензобак и колеса.
Интерфейс — это декларация объединенных в один список объявлений процедур (только объявлений, без реализации). Один интерфейс включает в себя другой интерфейс — это когда один (маленький) список полностью входит в другой (больший) список декларированных процедур.
Агрегация на языке интерфейсов выражается совсем по другому, вот так
Ia = INTERFACE
PROCEDURE f();
PROCEDURE g();
END;
Ib = INTERFACE
FUNCTION GetA(): Ia; // вот она - агрегация какая
PROCEDURE h();
PROCEDURE k();
END;
VAR
b: Ib;
BEGIN
//...
b.GetA.f();