Гость
Форумы / Разработка информационных систем [игнор отключен] [закрыт для гостей] / UML: уточнение типа в наследниках / 19 сообщений из 19, страница 1 из 1
11.07.2008, 11:52
    #35425057
Naf
Naf
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
UML: уточнение типа в наследниках
объект класса Collection содержит объекты Element. SpecificElement наследник от Element. SpecificCollection наследник от Collection для того чтобы не приводить типы, соответственно композиция меняет свой тип. Нужно ли это отражать между классами SpecificCollection и SpecificElement в диаграмме?
С уважением, Naf
...
Рейтинг: 0 / 0
11.07.2008, 16:45
    #35426072
blinded
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
UML: уточнение типа в наследниках
Ошибка дизайна. SpecificCollection не может наследоваться от Collection
...
Рейтинг: 0 / 0
11.07.2008, 16:55
    #35426098
Naf
Naf
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
UML: уточнение типа в наследниках
blindedОшибка дизайна. SpecificCollection не может наследоваться от Collection
Че это?
...
Рейтинг: 0 / 0
11.07.2008, 17:01
    #35426122
blinded
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
UML: уточнение типа в наследниках
Потому-что первый же дятел сделает такое
Код: plaintext
1.
2.
3.
SpecificCollection coll = new SpecificCollection();
Element el = new Element();
((Collection) coll).add(el);
...
Рейтинг: 0 / 0
11.07.2008, 17:05
    #35426137
Naf
Naf
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
UML: уточнение типа в наследниках
blindedПотому-что первый же дятел сделает такое
Код: plaintext
1.
2.
3.
SpecificCollection coll = new SpecificCollection();
Element el = new Element();
((Collection) coll).add(el);


а там такого нет метода, создается тоже из коллекции
Код: plaintext
1.
SpecificCollection coll = new SpecificCollection();
Element el = coll.Add();// а на самом деле SpecificElement
...
Рейтинг: 0 / 0
11.07.2008, 17:12
    #35426151
blinded
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
UML: уточнение типа в наследниках
Еще более безобразный дизайн. Теперь при добвлении конструктора классу Element надо добавлять соотв. производящие методы все коллекциям, не расширяемо
...
Рейтинг: 0 / 0
11.07.2008, 17:15
    #35426160
Naf
Naf
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
UML: уточнение типа в наследниках
blindedЕще более безобразный дизайн. Теперь при добвлении конструктора классу Element надо добавлять соотв. производящие методы все коллекциям, не расширяемо
Новых конструкторов не будет
...
Рейтинг: 0 / 0
11.07.2008, 17:15
    #35426162
Naf
Naf
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
UML: уточнение типа в наследниках
Как бы Вы реализовали?
...
Рейтинг: 0 / 0
11.07.2008, 17:22
    #35426178
blinded
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
UML: уточнение типа в наследниках
А я пока не вижу что реализовывать. Я не зная как это будет использоваться Но наверное параметризованными классами
...
Рейтинг: 0 / 0
11.07.2008, 17:22
    #35426182
Naf
Naf
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
UML: уточнение типа в наследниках
blindedА я пока не вижу что реализовывать. Я не зная как это будет использоваться Но наверное параметризованными классами
К сожалению в Delphi их нет
...
Рейтинг: 0 / 0
11.07.2008, 17:29
    #35426194
blinded
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
UML: уточнение типа в наследниках
Тогда не делайте SpecifiсContainer вовсе. Лучше честно приводиться
...
Рейтинг: 0 / 0
11.07.2008, 18:50
    #35426328
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
UML: уточнение типа в наследниках
blinded пишет:

> Ошибка дизайна. SpecificCollection не может наследоваться от Collection

Да, именно так. SpecificCollection не должен быть подтипом Collection,
иначе в него можно запихать любые Elements, преобразуюя к его родителю.
SpecificCollection должен агрегировать Collection и являться адаптирующим
врапером для него.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
11.07.2008, 18:51
    #35426330
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
UML: уточнение типа в наследниках
Naf пишет:
> Как бы Вы реализовали?

Я написал, как надо.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
11.07.2008, 18:52
    #35426331
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
UML: уточнение типа в наследниках
Naf пишет:

> А я пока не вижу что реализовывать. Я не зная как это будет
> использоваться Но наверное параметризованными классами
>
>
> К сожалению в Delphi их нет
Вовсе тут и не обязательны параметризированные классы.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
11.07.2008, 18:53
    #35426332
Naf
Naf
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
UML: уточнение типа в наследниках
MasterZiv
blinded пишет:

> Ошибка дизайна. SpecificCollection не может наследоваться от Collection

Да, именно так. SpecificCollection не должен быть подтипом Collection,
иначе в него можно запихать любые Elements, преобразуюя к его родителю.
SpecificCollection должен агрегировать Collection и являться адаптирующим
врапером для него.
Posted via ActualForum NNTP Server 1.4
запихивать никто не будет, я написал, что коллекция сама их порождает.
...
Рейтинг: 0 / 0
13.07.2008, 10:33
    #35427093
Чорный Бада
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
UML: уточнение типа в наследниках
NafКак бы Вы реализовали?

Можно, например, в Collection определить вирт. метод Add(Element). В SpecificCollection переопределить его чтобы он кидал иксепшион, если Element не является SpecificElement и вдобавок к нему определить метод Add(SpecificElement), который будет вызывать Add(Element). Вполне типовое решение, которое, например, использовалось в .Net до того как дженерики в нём появились.
...
Рейтинг: 0 / 0
14.07.2008, 11:07
    #35427963
softwarer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
UML: уточнение типа в наследниках
blindedОшибка дизайна. SpecificCollection не может наследоваться от Collection
Ну-ну.

blindedПотому-что первый же дятел сделает такое
И в чем проблема? Получит исключение и пойдет делать правильно.

blindedТеперь при добвлении конструктора классу Element надо добавлять соотв. производящие методы все коллекциям,
А базовыми классами Вы не пользуетесь по религиозным соображениям?

blindedТогда не делайте SpecifiсContainer вовсе. Лучше честно приводиться
Кошмар. Вот так и рождается Ява.

MasterZivSpecificCollection не должен быть подтипом Collection, иначе в него можно запихать любые Elements, преобразуюя к его родителю.
Ну-ну.

MasterZivSpecificCollection должен агрегировать Collection и являться адаптирующим
врапером для него.
"И так семь раз, семь раз" (ц) В смысле, для каждого наследника писать тонну тупейшего кода, аккуратно менять ее при изменениях Collection - и это называется "правильно".

MasterZivЯ написал, как надо.
Вы написали, как не надо.
...
Рейтинг: 0 / 0
14.07.2008, 12:27
    #35428300
blinded
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
UML: уточнение типа в наследниках
softwarer
1) blindedПотому-что первый же дятел сделает такое
И в чем проблема? Получит исключение и пойдет делать правильно.

2) MasterZivSpecificCollection должен агрегировать Collection и являться адаптирующим
врапером для него.
"И так семь раз, семь раз" (ц) В смысле, для каждого наследника писать тонну тупейшего кода, аккуратно менять ее при изменениях Collection - и это называется "правильно".


И чем же первое отличается от второго? тоже написание идиотского повторяющегося кода. Только Мастера будет статическая типизация, а значит ошибки будет вылавливать компилятор, а вот в вашем случае все переносится на Runtime;) И уже только поэтому
softwarer
blindedТеперь при добвлении конструктора классу Element надо добавлять соотв. производящие методы все коллекциям,
А базовыми классами Вы не пользуетесь по религиозным соображениям?

blindedТогда не делайте SpecifiсContainer вовсе. Лучше честно приводиться
Кошмар. Вот так и рождается Ява.

Слава богу до создателей дошло что они не правы... Правда не до конца и появились уродливые конструкции ограничивающие тип параметра с помощью интерфейсов, а плагиаторы из МС взяли и скопировали

softwarer
MasterZivSpecificCollection не должен быть подтипом Collection, иначе в него можно запихать любые Elements, преобразуюя к его родителю.
Ну-ну.

Да да именно так, чтобы не вводить никого в заблуждение и не получать дурацкие исключения
...
Рейтинг: 0 / 0
14.07.2008, 12:44
    #35428350
softwarer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
UML: уточнение типа в наследниках
blindedИ чем же первое отличается от второго? тоже написание идиотского повторяющегося кода.
Где? Было бы весьма любопытно узнать, зачем он Вам нужен в первом случае.

blindedТолько Мастера будет статическая типизация, а значит ошибки будет вылавливать компилятор, а вот в вашем случае все переносится на Runtime;) И уже только поэтому
Это называется "эскалация проблем на пустом месте". Создать перманентный геморрой на каждый день каждому разработчику ради того, чтобы один гипотетический дятел раз в год сэкономил несколько секунд.

blindedДа да именно так, чтобы не вводить никого в заблуждение ....
.... будем превращать программиста в секретаршу, сначала старательно набивающую одно и то же, а потом еще и старательно копирующую в кучу мест каждое изменение базового класса. Заодно появится возможность хвастаться "разработал систему на стотыщмильонов строк кода, в котором утонет любая попытка сопровождения". Потом придет в голову гениальная мысль, мы неуклюже наполовину автоматизируем этот бардак, и мы сразу почувствуем себя творцами новой прогрессивной технологии.
...
Рейтинг: 0 / 0
Форумы / Разработка информационных систем [игнор отключен] [закрыт для гостей] / UML: уточнение типа в наследниках / 19 сообщений из 19, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]