![]() |
Модераторы: bsa |
![]() ![]() ![]() |
|
Lazin |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3820 Регистрация: 11.12.2006 Где: paranoid oil empi re Репутация: 27 Всего: 154 |
||||
|
||||
mes |
|
|||
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 79 Всего: 250 |
да да, и мне было бы интересно услышать определение этого тернмина из уст atomicxp ![]() Это сообщение отредактировал(а) mes - 3.5.2009, 16:37 |
|||
|
||||
atomicxp |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 58 Регистрация: 2.5.2009 Где: Удмуртия, Ижевск Репутация: нет Всего: 1 |
Использование множества разных сущностей единым интерфейсом. Если кто-то написал одинаковые имена, то лично для меня это не полиморфизм. А вот если независимо от имён и прочего можно брать разные сущности и применять к ним полиморфные алгоритмы, тогда это полиморфизм. |
|||
|
||||
mes |
|
|||
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 79 Всего: 250 |
||||
|
||||
Lazin |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3820 Регистрация: 11.12.2006 Где: paranoid oil empi re Репутация: 27 Всего: 154 |
ну мало-ли для кого что не полиморфизм, для меня например это полиморфизм)
![]() |
||||
|
|||||
atomicxp |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 58 Регистрация: 2.5.2009 Где: Удмуртия, Ижевск Репутация: нет Всего: 1 |
Ну, например, последовательности. С ними же можно много что делать, проходить в каком-то порядке, сортировать, у них есть единые операции, на вроде добавления, удаления и так далее. На основе этих действий пишутся полиморфные алгоритмы, и потом применяются к любым сущностям, которые так можно представить. Например, к файловой системе, элементов в списке, содержимому в файле, к xml и так далее.
Добавлено через 4 минуты и 57 секунд
Да, это полиморфизм, но это обобщённое функциональное программирование, а не обобщённое объектно-ориентированное. Иными словами полиморфизм проявляется по разному в разных парадигмах. |
|||
|
||||
mes |
|
||||||
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 79 Всего: 250 |
А в языке который мы рассматриваем интерфейс объектов описывается именами их методов, так что Применить не получится. ![]()
И может иметь несколько проявлений в одной и той же парадигме ![]()
для данного вопроса это неразличимо ![]() |
||||||
|
|||||||
Lazin |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3820 Регистрация: 11.12.2006 Где: paranoid oil empi re Репутация: 27 Всего: 154 |
ну так это и есть compile time полиморфизм, ведь эти алгоритмы работают и с голыми указателями, и с классами указателей, не имеющими ничего общего между собой ![]() |
|||
|
||||
atomicxp |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 58 Регистрация: 2.5.2009 Где: Удмуртия, Ижевск Репутация: нет Всего: 1 |
Просто в твоём примере надо было наследовать два класса от одного класса, потом проводить приведение типов к базовому классу и через него уже использовать нужную функциональность. Если необходимо базовый класс тоже может иметь множество его базовых классов. Полиморфизм не через наследование, а через обобщение тоже полиморфизм. Но я же нахожусь в поисках абстракций реализованных по принципу обобщённого объектно-ориентированного программирования, следовательно алгоритмы написанные по другим принципам лишь кусочки для сборки системы. |
|||
|
||||
Любитель |
|
|||
Программист-романтик ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3645 Регистрация: 21.5.2005 Где: Воронеж Репутация: нет Всего: 92 |
А какое отношение данный пример имеет к ФП?! |
|||
|
||||
mes |
|
|||
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 79 Всего: 250 |
не в моем. ![]()
"Полиморфизм через наследование" - динамический полиморфизм. "Полиморфизм относительно его интерфейса" - статический (он же compile time) полиморфизм. Тут я сути не уловил ![]() Добавлено @ 17:30 то что в шаблоне была описана функция, а не класс ![]() ![]() Это сообщение отредактировал(а) mes - 3.5.2009, 17:31 |
|||
|
||||
atomicxp |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 58 Регистрация: 2.5.2009 Где: Удмуртия, Ижевск Репутация: нет Всего: 1 |
Lazin уже привёл пример. Вот как-то так и надо делать функции, то есть они должны быть не глобальными, а принадлежать классу и являться полиморфными, что опять же не исключает их обобщающую суть, которая состоит в подмене типов и генерации новых классов. |
|||
|
||||
mes |
|
|||
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 79 Всего: 250 |
Во первых, зачем ? А во вторых, Вы слышали о "минимизации интерфейса" ? Ну а в третьих, как сторонику чистого ООП, некрасиво употреблять слово "класс". ![]() Это сообщение отредактировал(а) mes - 3.5.2009, 17:53 |
|||
|
||||
atomicxp |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 58 Регистрация: 2.5.2009 Где: Удмуртия, Ижевск Репутация: нет Всего: 1 |
Предположим у нас есть операция сложения. Вопрос как лучше её воспринимать, функцией, следуя парадигме функционального программирования или как сущность в объектно-ориентированном переопределяя однотипные методы.
В языке C++ существуют операторы, благодаря им есть возможность записывать последовательность определённых видов операций в кратком виде выражением, однако сути это не меняет. Для начала можно написать что-либо наподобие этого, все равно в последствии оно будет оптимизировано исключив повторные определения, потому что Addition и operator+ одно и тоже, а static Addition почти.
Интересен тот факт, что данный интерфейс работает прежде всего с последовательностями. Иными словами используются ли числа для полиморфного интерфейса или последовательности, но воспринимается он как единое понятие. |
|||
|
||||
mes |
|
|||
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 79 Всего: 250 |
Во первых подобная оптимизация не относится к виртуальным функциям Во вторых зачем вообще там виртуальные функции ? Для решения задачи хватает статического полиморфизма. Я опять не уловил сути, что доказывает Ваш пример ? |
|||
|
||||
![]() ![]() ![]() |
Правила форума "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. |