Здравствуйте, S.Yu.Gubanov, Вы писали:
SYG>"Включение" vs "Наследование" интерфейсов
Используй статические методы, это позволит разгрузить типы. Допустим есть Тип XXX, к нему по крайней необходимости был добавлен метод ToInt(), ToArray(), Save().... и прочее. Сути, подразумеваемой под этим типом не изменилось, разве что добавился сервисный метод, однако формально это стал другой тип и пошло, поехало...
PS. Если это использовать, то выясниться, что не так уж много типов вообще нужно. ООП после процедурных языков — вещь полезная, только имхо по инерции произошел перекос.
Здравствуйте, Sinclair, Вы писали:
S>Я правильно понял, что ты описываешь дизайн-тайм маппинг? То есть всего лишь примитивный тул, легко реализуемый современными средствами (были бы в платформе механизмы интроспекции)?
ИМХО и интроспекция не нужна. Что-то типа IDL будет в самый раз.
S>Тогда можно просто сесть его и написать S>Правда, непонятно, к чему ты упоминал "прямую поддержку языком". Пока что я не вижу ничего, что можно было бы так поддержать.
Например оператор wrapper_cast т.е. делаешь переходник для класса, а язык это дело отслеживает и возвращает нужный враппер (типа dynamic_cast).
Здравствуйте, Kluev, Вы писали: K>Например оператор wrapper_cast т.е. делаешь переходник для класса, а язык это дело отслеживает и возвращает нужный враппер (типа dynamic_cast).
Ну, в плюсах, например, этого не надо. Т.к. мы и так иожем сделать правильный каст, если сгенеренный класс задекларирует соответствующий неявный конструктор.
Интересно, что борланд пытался сделать что-то подобное в D8 при помощи хелпер классов.
... << RSDN@Home 1.1.4 beta 3 rev. 185>>
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Здравствуйте, Sinclair, Вы писали:
S>Здравствуйте, Kluev, Вы писали: K>>Например оператор wrapper_cast т.е. делаешь переходник для класса, а язык это дело отслеживает и возвращает нужный враппер (типа dynamic_cast). S>Ну, в плюсах, например, этого не надо. Т.к. мы и так иожем сделать правильный каст, если сгенеренный класс задекларирует соответствующий неявный конструктор.
В компайл тайме да. А рантайме уже нет.
т.е. вот такая фича:
Хотя наверное это и не очень нужно. Можно самому ручками прикуртить, только тады прийдется как-то регистрировать врапперы. Сам класс-то о них ничего не знает. Хотя я здесь не вижу никаких особых сложностей. Более того весь вспомогательный код может как раз сгенерить WDL-translator (wrapper description language . Кстатит он мне видится двухрежимным. В первом режиме принимает описание враппера и генерит интерфейсный хедер. Во втором интерфейс+конкретный класс — генерит оболочку для конкретно взятого класса.
S>Интересно, что борланд пытался сделать что-то подобное в D8 при помощи хелпер классов.
Может быть. Идея то здравая. Для плюсов еще хороша тем что можно обеспечить кросскомпилерную совместимость. Т.к. vtable не используюьтся и исключения кидаются в клиетском коде.
Здравствуйте, borisman2, Вы писали:
B>Можно, конечно, рассматривать большие интерфесы как набор более мелких, но работает это только в самом простейшем случае. Концептуально интерфейс является неделимой сущностью, не стоит, пожалуй рубить его на куски. Иначе лучше уж вообще отказаться от понятия интерфейса (как во многих динамически типизированных языках).
Согласен с Вами. Думаю, на этом можно считать вопрос исчерпанным.
Здравствуйте, S.Yu.Gubanov, Вы писали:
SYG>"3" — это число, то есть абстракция. "бензобак" — эта такая фиговина куда бензин наливают. Спрашивается, как понимать выражение "3=бензобак"?
Не хотелось бы переходить на личности, но математику в университете изучали? Или еще в школу ходим? Вопрос задан идиотский.