Модераторы: bsa

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> полиморфизм с улыбкой... переделываем из наследования.. 
:(
    Опции темы
fry
Дата 27.4.2009, 00:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 257
Регистрация: 4.10.2006

Репутация: 2
Всего: 3



Я думаю это личное дело каждого пользоваться динамическим приведением или нет(ИМХО вариант с числовыми константами мне вообще не нравится, как мне кажется он подвержен ошибкам не менее других способов). Однако думается для конечной реализации автору темы стоит выбрать тот вариант, который он более всего понимает и соответственно в котором менее всего возможны ошибки при реализации. В данном случае визитор работает на более высоком "уровне понимания" и реализация его может занять больше усилий. Стоит принять во внимание дальнейшее использование данной схемы автором. Если это всего навсего решение одной задачи, то динамическое приведение будет лучшим вариантом. Если автор будет использовать ее и далее, то лучше конечно визитор.

PS
Интересно, с чего это динамическое приведение свидетельствует о непродуманности. Оно проверяет корректность приведения в ходе выполнения и используется как раз в таких случаях. В плане статического я еще могу согласиться (ИМХО не всегда).

Это сообщение отредактировал(а) fry - 27.4.2009, 00:22
PM MAIL   Вверх
mes
Дата 27.4.2009, 01:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 79
Всего: 250



Цитата(fry @  26.4.2009,  23:18 Найти цитируемый пост)
Интересно, с чего это динамическое приведение свидетельствует о непродуманности. Оно проверяет корректность приведения в ходе выполнения и используется как раз в таких случаях. В плане статического я еще могу согласиться (ИМХО не всегда).

Потому что подвержена ошибкам, в частности возможно (в  лестнице условий)
1. вместо приведения к внуку приведется к сыну (при неправильной очередности лестницы условий)
2. забыто применение операции к какому либо типу , особенно при позднем (после ) измении иерархии 
и т.д

Визитор лишен этого, так создает законченную матрицу вызовов, но  это же является и недостатком, так как для закончености требуется, чтоб были известны все типы
и также обладает излишиством, так как у каждой добавляемой  операции должна быть реализация пусть хоть пустая, но требующая времени программиста.

Но если применение визитора выбрано правильно применительно к задаче, то его преимущества с лихвой окупают недостатки. 





--------------------
PM MAIL WWW   Вверх
fry
Дата 28.4.2009, 02:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 257
Регистрация: 4.10.2006

Репутация: 2
Всего: 3



toxx:
Цитата

dynamic_cast используется если программа не продумана


fry:
Цитата

Интересно, с чего это динамическое приведение свидетельствует о непродуманности.


mes:
Цитата

Потому что подвержена ошибкам


Конечно подвержено, однако это не свидетельствует о непродуманности. Во всяком случае четко сказать, что код с dynamic_cast непродуман нельзя. В целом все кодирование подвержено ошибкам (ИМХО люди все же) - что-то больше (dynamic_cast), что-то меньше, однако если руки не из того места или нет опыта и понимания можно любую хорошую (визитор) идею изгадить.
PM MAIL   Вверх
mes
Дата 28.4.2009, 11:39 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 79
Всего: 250



Цитата(fry @  28.4.2009,  01:11 Найти цитируемый пост)
Цитата

Потому что подвержена ошибкам

Конечно подвержено, однако это не свидетельствует о непродуманности. 

О "не продуманности" свидетельствует то, что взят первый попавшийся, а не максимально подходящий, способ.
Сам динамик_кaст тут не при чем. Зависит как он применен. К примеру лестница условий, в которой по очереди идет преобразование к потомку, с окончанием при успешном приведении.
Так еще такое для каждой операции (функции) этой иерархии. 

Цитата(fry @  28.4.2009,  01:11 Найти цитируемый пост)
однако если руки не из того места или нет опыта и понимания можно любую хорошую (визитор) идею изгадить. 

Одно дело изгадить, а другое что контроль, который можно было повесить на компилятор, приходится делать вручную.
И (не для учебного проекта из 1000 строк) это довольно трудоемкий процесс.
Особенно если над проектом работает не один, а группа.


--------------------
PM MAIL WWW   Вверх
fry
Дата 28.4.2009, 21:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 257
Регистрация: 4.10.2006

Репутация: 2
Всего: 3



Согласен со всем. Предложил этот метод потому, что:
1. это, как я понял, как раз и есть "проект из 1000 строк"
2. это просто для понимания
3. ИМХО лучше варианта с константами
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0709 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.