![]() |
Модераторы: Daevaorn |
![]() ![]() ![]() |
|
Arat |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 23 Регистрация: 11.7.2007 Репутация: 1 Всего: 1 |
Значит объясню в чем же вопрос. Я пишу учебный проект, некую программу, которая управляет Карточками Обращения Клиента ( Далее - КОК). Клиент обращается в компанию с некой проблемой, на него открывают карточку, в ней описывается проблема, далее передают её в другой отдел где устанавливается приоритет, КОК переходит в тех. отдел там пытаются решить проблему. Вобщем с момента создания, КОК постоянно меняет статус: - новый, установлен приоритет, в процессе обработки и т.д. У каждого отдела, есть возможность менять статус КОК, например Админ может создать КОК, Менеджер устанавливает ему приоритет, техник устанавливает его в состояние обработки и т.д. Естественно, то что позволено одному, не позволено другому и наоборот. Первое, что приходит в голову, это объявить в объекте КОК флаги, которые будут обозначать статус КОК. Отсюда следует, что нужно делать switch\case статусу, дабы узнать последовательность действий, в одном случае одно происходит, в другом другое. Например: если объекту КОК присвоен приоритет, то он доступен технику, а если нет, то только менеджеру, который установит приоритет, однако менеджеру доступны так же те, которые уже обработаны техником, менеджер может их удалить и т.д.
В ВУЗе же мне сказал препод, что switch\case это не ООП. Т.е. пользоваться им можно, но в крайне редких случаях. Решение же он предложил следующие: создать объект БейсКОК, из которого наследуются объекты - НьюКОК, ПроцессКОК и т.д. При изменение статуса, удалять существующий и создавать вместо него новый объект нужного типа. Тип == Статус. Вот я думаю, а не дороговато ли выходит, каждый раз создавать новый объект при изменение статуса КОК? И вообще, верно ли, что switch\case указывает на процедуральное программирование, и в ООП практически не используется? Если, у кого есть третье решение моего примера, буду очень рад и благодарен. ![]() Это сообщение отредактировал(а) Arat - 18.7.2007, 18:00 |
|||
|
||||
zkv |
|
||||
![]() ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2133 Регистрация: 23.7.2006 Где: Санкт-Петербург Репутация: 26 Всего: 92 |
я использую, где удобно использовать ![]()
что то я не очень понял задачу (особо не вчитывался), но во многих случаях вместо switch/case (особенно если вариантов много) удобнее юзать std::map |
||||
|
|||||
Daevaorn |
|
||||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2155 Регистрация: 29.11.2004 Где: Москва Репутация: 51 Всего: 70 |
дорого. но для учебной программы можно и не замечать.
нет. вооще-то swith и ООП вещи параллельные. и оно другому не мешает.
Конечный автомат. |
||||||
|
|||||||
Arat |
|
||||
![]() Новичок Профиль Группа: Участник Сообщений: 23 Регистрация: 11.7.2007 Репутация: 1 Всего: 1 |
zkv, спасибо
![]() Ребят, если описал задачу путанно, так скажите, просто старался из всего проекта выбрать именно конкретный кусок, без углубления во все нюансы. Добавлено @ 18:16
Вот это не очень понял, если можно подробнее. Это сообщение отредактировал(а) Arat - 18.7.2007, 18:17 |
||||
|
|||||
DDyDog |
|
||||||
![]() Новичок Профиль Группа: Участник Сообщений: 17 Регистрация: 16.7.2007 Репутация: нет Всего: нет |
Я предлогаю сначало создать единственный класс
Сard, а уже потом создать иерархию приоритетов StatusN с базовым классом BaseKOK
а в коде домустим
а потом все будет определятся от начинки StatusN Например, допустимые в данном приоритете действия(права), которые я не смог запрограммировать без более детального условия задачи ![]() Я бы посоветовал сначала все спроектировать (порисовать например - мне помогает). иначе препод... ![]() Добавлено через 5 минут и 14 секунд Ошибки: нехватает ';'
Извини в блокноте печатал ![]() |
||||||
|
|||||||
bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 63 Всего: 196 |
Имхо, надо делать в обратном направлении. Т.е. создается иерархия классов kok1...kokN. Причем, у kokN есть публичный конструктор, а у остальных только защищенные. Админы могут создавать эти kok'и. При создании экземпляра этого kokN у него выставлен конструктором статус new_kok. Менеджеры работают только с экземплярами класса kok(N-1), поэтому им доступны деструктор и один метод - установить приоритет и так далее. В итоге, тебе не надо каждый раз пересоздавать этот kok, ООП остается, и switch не используется.
|
|||
|
||||
DDyDog |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 17 Регистрация: 16.7.2007 Репутация: нет Всего: нет |
Извини, а его потом в switch проверять Не в обиду, но заменять switch-конструкцию должен механизм виртуальных функций. bsa, если я чего-то не понял, тогда опиши поподробнее насчет статуса new_kok |
|||
|
||||
Daevaorn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2155 Регистрация: 29.11.2004 Где: Москва Репутация: 51 Всего: 70 |
||||
|
||||
DogStyle |
|
|||
Новичок Профиль Группа: Участник Сообщений: 16 Регистрация: 18.7.2007 Репутация: нет Всего: нет |
Пусть препод убьётся об стену...
С сегодняшнего дня не использовать char[] потому что это не ООП!!!! Друг мой.. ООП не спасёт мир. Это одна из теорий программирования и не совсем однозначная. Разные проекты, разные задачи, разные методы... Добавлено через 7 минут и 58 секунд Блин я до сих пор в шоке.... ![]() |
|||
|
||||
Daevaorn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2155 Регистрация: 29.11.2004 Где: Москва Репутация: 51 Всего: 70 |
||||
|
||||
DogStyle |
|
|||
Новичок Профиль Группа: Участник Сообщений: 16 Регистрация: 18.7.2007 Репутация: нет Всего: нет |
ООП не учится путём убивания в человеке зачатков рацонализма, ты об этом не задумывался...
ООП не способ хитро*бнуться, ООП способ думать глобально, масштабно и абстрактно... А switch это одна из основных конструкций зачастую неотъемлемая.... Вместо Switch iиспользуй If ... else ЭТО ЧИСТОЕ ООП... Добавлено через 1 минуту и 58 секунд switch не имеет ни какого отношения к процедурноориентируемому программированию, это БАЗОВАЯ КОСТРУКЦИЯ ЯЗЫКА Добавлено через 2 минуты и 51 секунду Такая же как if, while ,for |
|||
|
||||
bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 63 Всего: 196 |
Дорогой мой, а ты в институте учился? А на кого учился? У тебя было программирование? И как тебя там этому учили помнишь? Помню, пришла сюда девушка и попросила помочь с программой. Надо было решить какую-то задачу с помощью рекурсии. Долго народ бился, но так и не придумали такого способа - ну не решалась она таким образом и все тут. |
|||
|
||||
Daevaorn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2155 Регистрация: 29.11.2004 Где: Москва Репутация: 51 Всего: 70 |
DogStyle, можешь так не нервничать и не переживать, т.к. уже все в этой ветке похожие мысли выразили. просто ограничение со стороны препода вполне понятно, оно "затыкает" сразу одно из возможных решений без ООП. И как видишь, именно оно заставило человека обратиться на форум и задуматься над другим решением данной задачи.
|
|||
|
||||
DogStyle |
|
|||
Новичок Профиль Группа: Участник Сообщений: 16 Регистрация: 18.7.2007 Репутация: нет Всего: нет |
bsa
ООП меня учил товарищь Шаляпин Юрий Павлович, человек зачастую неодекватный и мнимый, но... И меня смутила не поставленная задача и предложенное решение, А заявления касающееся switch... Меня программированю учили на алгоритмах, даже с рекурсией, но не как не на изнасиловании ума... Практика показывает, главное в мире простота. Господа это ИМХО, не будте так серьёзны в вопросах этики Добавлено через 2 минуты Daevaorn, человек был сбит с толку больше не тем что ООП, а тем что во второй части вопроса ИМХО Добавлено через 2 минуты и 47 секунд а именно
Это сообщение отредактировал(а) DogStyle - 19.7.2007, 21:50 |
|||
|
||||
chipset |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 4071 Регистрация: 11.1.2003 Где: Seattle, US Репутация: 27 Всего: 165 |
Чистый ООП это миф
![]() ![]() --------------------
|
|||
|
||||
![]() ![]() ![]() |
Правила форума "С++:Общие вопросы" | |
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |