Форум программистов, компьютерный форум CyberForum.ru

Objective-C

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 23, средняя оценка - 4.70
kievkao
42 / 42 / 2
Регистрация: 22.11.2012
Сообщений: 225
#1

Полиморфизм в Objective-C - Objective-C

24.02.2014, 21:48. Просмотров 3135. Ответов 3
Метки нет (Все метки)

Всем привет!

Без упоминания долгой предыстории, затронули с товарищем понятие полиморфизма в Objective-C.
Я привел популярный пример в стиле: есть класс "Музыкальный инструмент", бла-бла, передаем куда-то наследников - баян, рояль и барабаны, и вызываем у них у всех единый метод "играть", который у каждого выполняется по своему.
И, вот, нашел цитату в Википедии:

"В объектно-ориентированном программировании полиморфизм подтипов (или полиморфизм включения) представляет собой концепцию в теории типов, предполагающую использование единого имени (идентификатора) при обращении к объектам нескольких разных классов, при условии, что все они являются подклассами одного общего надкласса (суперкласса). Полиморфизм подтипов состоит в том, что несколько типов формируют подмножество другого типа (их базового класса) и потому могут использоваться через общий интерфейс."

НО, пока я победно ждал поднятие белого флага, товарищ в ответ мне кинул линк на документацию Apple, где сказаны удивительные вещи. Мол, все просто:
"The ability of different objects to respond, each in its own way, to identical messages is called polymorphism."

Ни слова о том, что у объектов должен быть общий родитель!
https://developer.apple.com/library/...05149-CH5-SW11

Это как получается, у Apple свое представление о полиморфизме?
Что вы думаете по этому поводу?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.02.2014, 21:48     Полиморфизм в Objective-C
Посмотрите здесь:

Рисование в Objective-C Objective-C
Objective-C Переход на Objective-C
Objective-C Консультации по objective-c
Objective-C Перевод в Objective C
SystemWait в Objective C Objective-C
Наследование в Objective C Objective-C
Objective-C Строки в Objective-C
Скачать Objective-C Objective-C
Objective-C Референция в Objective-C
Objective-C Objective-C и разработка
Перцептрон на objective c Objective-C
Objective-C Objective-C A to Z Started

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
glvrzzz
95 / 71 / 12
Регистрация: 12.12.2012
Сообщений: 214
25.02.2014, 06:57     Полиморфизм в Objective-C #2
Цитата Сообщение от kievkao Посмотреть сообщение
все они являются подклассами одного общего надкласса (суперкласса)
Как минимум это не так, ибо может быть единый интерфейс, а не обязательно суперкласс.

Вообще по идее Apple прав, так как в теории язык может поддерживать полиморфизм, но к примеру не поддерживать интерфейсы и наследование.
korvin_
1400 / 1171 / 175
Регистрация: 28.04.2012
Сообщений: 4,243
25.02.2014, 10:54     Полиморфизм в Objective-C #3
Цитата Сообщение от glvrzzz Посмотреть сообщение
Как минимум это не так, ибо может быть единый интерфейс, а не обязательно суперкласс.
В языке может не быть интерфейсов. Фраза в вике взята из Booch, et all 2007 «Object-Oriented Analysis and Design with Applications», которую я «не читал, но осуждаю». Следовало вместо слова «класс» использовать более общее «тип», тогда и не было бы проблемы.

Цитата Сообщение от glvrzzz Посмотреть сообщение
Вообще по идее Apple прав, так как в теории язык может поддерживать полиморфизм, но к примеру не поддерживать интерфейсы и наследование.
Вообще речь идет о вполне конкретном виде полиморфизма и определение в вике правильное, если посмотреть дальше, в раздел про субтипы:
Some languages employ the idea of subtyping to restrict the range of types that can be used in a particular case of polymorphism. In these languages, subtype polymorphism (sometimes referred to as inclusion polymorphism or dynamic polymorphism) allows a function to be written to take an object of a certain type T, but also work correctly if passed an object that belongs to a type S that is a subtype of T (according to the Liskov substitution principle). This type relation is sometimes written S <: T. Conversely, T is said to be a supertype of S—written T :> S.
kievkao
42 / 42 / 2
Регистрация: 22.11.2012
Сообщений: 225
25.02.2014, 14:00  [ТС]     Полиморфизм в Objective-C #4
То есть, получается, мы можем рассматривать в контексте полиморфизма объекты, не имеющие общего суперкласса, но, например, соответствующие одному и тому же протоколу?
Yandex
Объявления
25.02.2014, 14:00     Полиморфизм в Objective-C
Ответ Создать тему
Опции темы

Текущее время: 12:50. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru