![]() |
Модераторы: bsa |
![]() ![]() ![]() |
|
atomicxp |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 58 Регистрация: 2.5.2009 Где: Удмуртия, Ижевск Репутация: нет Всего: 1 |
Для C++ существует огромное множество библиотек выполненных в различных техниках исполнения. Программисты создавшие их следовали разным ментальным моделям. К сожалению лично мне использование этих творений неудобно, хотя они и предоставляют весь нужный функционал. Похоже проблема в том, что сами программисты создавая свои творения мыслили в парадигме обобщённого функционального, вместо обобщённого объектно-ориентированного программирования.
Совершенную абстракцию создать не получится, потому что в мире нет ничего совершенного. Но если она достигнет хотя бы уровня в котором возможности языка будут использоваться в наибольшей степени, думаю этого будет вполне достаточно. Потому открываю тему микрообсуждений особенностей абстрактных ядер и их использования. |
|||
|
||||
mes |
|
||||
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 79 Всего: 250 |
atomicxp, чувствуется знакомый слог. особенно, учитывая это
возникает вопрос, а Вы случаем с unicuum не братья-близнецы ![]() если нет, то напрашивается следующий : a зачем стоило заводить то новый ник ?! ![]() Это сообщение отредактировал(а) mes - 3.5.2009, 00:59 |
||||
|
|||||
Любитель |
|
|||
Программист-романтик ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3645 Регистрация: 21.5.2005 Где: Воронеж Репутация: нет Всего: 92 |
||||
|
||||
unicuum |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 830 Регистрация: 16.3.2005 Где: Рашка Репутация: нет Всего: 8 |
вот же всё написал -------------------- ![]() обычный день на винграде |
|||
|
||||
atomicxp |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 58 Регистрация: 2.5.2009 Где: Удмуртия, Ижевск Репутация: нет Всего: 1 |
Вряд ли у многих ли вызывает удивление, что алгоритмы вычисления контрольных сумм записываются в виде отдельных классов. Более того, они все идут от базы и имеют специальную виртуальную функцию, которая через единый потоковый интерфейс позволяет работать с различными источниками данных.
Возникает вопрос, почему такие алгоритмы как MD5, SHA1, TTH и другие имеют право называться сущностью, тогда как арифметические операции: сложение, вычитание, умножение, деление, или тригонометрические: синус, тангенс, косинус и прочие, лишены возможности иметь собственную сущность и обречены находится в одном классе. Как гласит правило объектно-ориентированного программирования, плохо, когда в одном классе больше семи сущностей. А поскольку в стандартных математических классах, да и многих других, как правило лежит гораздо больше операций, получается простой и очевидный вывод, такое программирование относится к функциональному или в случае применения шаблонов обобщённому функциональному программированию, но уж никак не к объектно-ориентированному. |
|||
|
||||
mes |
|
|||
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 79 Всего: 250 |
![]() ![]() Как понял Вы в качестве объектной модели программирования рассматриваете модель примененную в Cpp. Во первых не забывайте, что это далеко не чистое воплощение принципов ООП. Во вторых - что принципом Cpp является : не добавлять ничего лишнего, чего не было затребовано/использовано. В третьих - что полиморфизм бывает времени рантайма и времени компиляции. Посредством плюса мы легко складываем как и простые типы, так и строчки и другие более сложные объекты - чем Вам не абстракция ? Посмотрите как работают шаблоны, применяя алгоритмы, к объектам разных типов, имеющих нужные методы. В четвертых кто Вам мешает описать на Cpp свой класс, в котором нужные операции будут виртуальными (как Вы это представляете), и использовать их ? Никто не лишил их права.. Наоборот у них есть привелегия быть простыми функциями. Не забывайте, что на чистой абстракции далеко не уедешь, нужно еще и реализацию делать - ну а при реализации кто то должны быть простыми функциями, на которые нужно опираться.
Двойной ужас : "В классе" "7 сущностей" ! Правило гласит: Каждый объект должен представлять одну сущность. А вы считаете, что ООП это верх совершенства ? Это сообщение отредактировал(а) mes - 3.5.2009, 10:02 |
|||
|
||||
atomicxp |
|
||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 58 Регистрация: 2.5.2009 Где: Удмуртия, Ижевск Репутация: нет Всего: 1 |
Понятно же что это относится к включению или наследованию, смотри предыдущий флудовый топик. Класс сущность и содержит сущности, то есть классы посредством включения или наследования. Плюс методы тоже можно по разному рассматривать.
Это не полиморфизм, а приведение типов. Я пытаюсь найти такой способ "дёргать компьютер за ниточки", чтобы это было удобно хотя бы лично мне, вот и всё. |
||||
|
|||||
mes |
|
||||
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 79 Всего: 250 |
Т.е класс "человек" не удовлетворяет правилам хорошего тона ООП, потому что включает в себя более семи сущностей ?! ![]() Так а если включены три противоречиворечивые сущности, то все в порядке?! ведь три менее семи ! а нельзя ли поподробней где Вы там приведение типов увидели ? ![]()
успехов в этом нелегком деле ![]() |
||||
|
|||||
atomicxp |
|
||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 58 Регистрация: 2.5.2009 Где: Удмуртия, Ижевск Репутация: нет Всего: 1 |
Я так понял речь идёт о static_cast и dynamic_cast, при невозможности приведения типов в одном случае получаем крах системы, во втором нулевой указатель. Или сам поясняй, что тобой подразумевалось.
То есть как пишут в книге "Совершенный код" автор С. Макконнелл, сам человек не может охватить больше семи сущностей за раз. Потому рекомендовано делить всё на логические группы не более семи.
Насчёт противоречий, прочти "Совершенный код", та это тоже описано, да и много чего ещё. |
||||
|
|||||
Lazin |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3820 Регистрация: 11.12.2006 Где: paranoid oil empi re Репутация: 27 Всего: 154 |
ужастокакой... я думаю подразумевалась идиома CRTP Добавлено через 3 минуты и 30 секунд
|
|||
|
||||
atomicxp |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 58 Регистрация: 2.5.2009 Где: Удмуртия, Ижевск Репутация: нет Всего: 1 |
||||
|
||||
mes |
|
||||
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 79 Всего: 250 |
Читал, но дело не в том что написано в книге, а как Вы это поняли ![]() где там такое можно было увидеть : Я лучше отпишусь кодом
Так как классы обладают одним и тем же интерфейсом, то типы А и B статически полиморфны. Это может проявляться как на уровне типов, так и функций или библиотек. ![]() |
||||
|
|||||
Lazin |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3820 Регистрация: 11.12.2006 Где: paranoid oil empi re Репутация: 27 Всего: 154 |
||||
|
||||
mes |
|
|||
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 79 Всего: 250 |
неa, слишком глубoко копнули. ![]() ![]() Это сообщение отредактировал(а) mes - 3.5.2009, 16:31 |
|||
|
||||
atomicxp |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 58 Регистрация: 2.5.2009 Где: Удмуртия, Ижевск Репутация: нет Всего: 1 |
И мы с тобой говорим об одном и том же. Но я воспринимаю достижение полиморфизма посредством приведения типов как два отдельных понятия, приведение типов и полиморфизм. Как сказал mes: А вот сам mes похоже говорит о чём-то другом. |
|||
|
||||
![]() ![]() ![]() |
Правила форума "C/C++: Для новичков" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Для новичков | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |