Здравствуйте, Кирилл Лебедев, Вы писали:
КЛ>Изменение, добавление или удаление отдельного атрибута приводит к реорганизации иерархии.
Это ты к чему?
КЛ>Злоупотребление оператором преобразования типов (dynamic_cast в C++ или as в C#) и, как результат, нарушение LSP.
Это догма.
Вот скажи мне зачем нужно заводить 9 коллекций когда можно обойтись одной с фильтрацией?
Вот
примерАвтор(ы): Чистяков Влад (VladD2)
Дата: 03.03.2007
Язык программирования Nemerle заинтересовал многих в первую очередь своей мощнейшей подсистемой мак-росов. Однако и без них Nemerle предоставляет ряд су-щественных улучшений по сравнению с традиционными, императивными языками программирования (такими как Java, C# и C++).
Nemerle, кроме традиционного императивного програм-мирования, поддерживает функциональное программи-рование. Это выражается в наличии конструкций, упро-щающих манипуляцию функциями, построение и анализ сложных структур данных и т.п.
К сожалению, если вы не использовали возможности, присущие функциональным языкам ранее, то вам будет трудно оценить, насколько Nemerle может оказаться вам полезным в реальной повседневной работе. Данная статья призвана в неформальной форме продемонс-трировать это.
того к чему приводят догмы. В этой статье написан клькулятор на C# по всем канонам ООП. И тоже самое на nemerle.
Я думаю не вызывает сомнений какой вариант предпочтительней.
КЛ>При использовании интерфейсов возникает еще и третья проблема — изменение прототипа одного из методов интерфейса или добавление метода в интерфейс неминуемо приводит к необходимости изменения во всех реализациях. Это, конечно, характерно для любого интерфейса (например, Win32 API или OpenGL). Но проблема проявляется довольно часто, когда интерфейс строится путем "фильтрации" — когда общие для всех классов свойства выносятся в базовые классы (интерфейсы). Т.е. когда анализируются атрибуты и сходные атрибуты группируются в базовые классы (или интерфейсы).
В базовые интерфейсы выносилось только то что к этим интерфейсам относится по смыслу.
Например в IElement вобще нет ни свойств, ни методов, ни событий. Он нужен для того чтобы можно было отфильтровать все собственные элементы.
КЛ>Какие обязанности существуют у этой иерархии (целиком)?
Я уже сказал. Это модель метаданных.
Метаданные нужны для того чтобы работать с данными.
КЛ>Какие обязанности существуют у отдельного интерфейса или класса иерархии? У IElementBase, IPropertyBase, IElement, IAttachedElement, IProperty, IAttachedProperty и т.д.?
Описание части модели.
КЛ>Из Вашиз ответов я понял, что обязанности таковы:
Зачем она нужна я уже написал в
этомАвтор: WolfHound
Дата: 23.05.07
сообщении.
Можешь предложить свой вариант. А я раскажу о его реальных проблемах, а не выдуманных на основе догм.
... << RSDN@Home 1.2.0 alpha rev. 673>>