среда, декабря 21, 2005

has-a отношение и IIITO

В ООП есть два родственных термина, которые разные люди понимают по-разному. Термины эти has-a отношение (иногда пишут HASA) и IIITO (Is Implemented In Terms Of). Вроде как оба они означают владение. И оба можно выразить через приватное наследование или через делегирование.


//Приватное наследование
class CB : private CA
{
//...
}

//Делегирование
class CB
{
private:
CA* pA;
//...
}

В различных источниках я читала разное мнение по их поводу. Что IIITO - это и приватное наследование, и делегирование, а has-a - это только приватное наследование. Или что has-a - это и приватное наследование, и делегирование, а IIITO - это только делегирование. В итоге о чем именно идет речь приходится понимать из контекста.

Ссылки по теме:
GotW#60: Exception-Safe Class Design, Part 2: Inheritance
comp.object IS A and HAS A relationships
is-a отношение