"""
----------------------- TASK 17 -----------------------

    ПРАВИЛО:
    Если отношение похоже на "является", но тип наследуемого
    объекта по логике работы программы может меняться, то
    правильным отношением будет "содержит".

    Приведите два словесных примера отношения "содержит" между
    классами, которое похоже на "является", но по вышеупомянутому
    правилу таковым не является.

1) Модератор IS-A человек. Но, т.к. модератор может измениться
(а еще модератор не использует весь интерфейс человека, или
модерацию может быть автоматизирована), то отношение будет:
человек HAS-A модератор (роль/права)

2) МФУ IS-A принтер. Однако МФУ все же комплексное устройство,
принтер в котором один из компонентов. МФУ HAS-A принтер.


----------------------- TASK 18 -----------------------

    Приведите два словесных примера отношения "является" между
    классами, которое однозначно таковым является и не может быть
    переведено в отношение "содержит".

1) Видел реализацию адаптера авторизации, сценарии которой могут
быть различны: логин-пароль, по реферальной ссылке, через токен.
Вся реализация класса адаптера была внутри нескольких методов
с множеством условных конструкций для поддержки разных сценариев.
Пожалуй, более удачным было бы наследование от базового адаптера
с изменением логики авторизации предка (или с помощью
динамического связывания).

2) Металлическая дверь IS-A дверь, т.к. мы можем свободно заменять
одну дверь на другую в силу идентичного интерфейса.

"""
