Форум программистов, компьютерный форум 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. Просмотров 3427. Ответов 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 свое представление о полиморфизме?
Что вы думаете по этому поводу?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.02.2014, 21:48
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Полиморфизм в Objective-C (Objective-C):

Консультации по objective-c - Objective-C
iOS-разработчик с опытом работы в крупной компании дает оперативные консультации по скайпу или е-мейлу по любым вопросам, а также даю уроки...

Objective-C A to Z Started - Objective-C
Доброго времени суток господа, хотел бы получить у вас совет, решил очень усиленно начать разрабатывать приложения на ios, может кто...

Перцептрон на objective c - Objective-C
Добрый день! Я пытаюсь реализовать перцептрон на обжектив-С. Но столкнулся с проблеммой, когда через какое-то число эпох выход сети уходит...

SystemWait в Objective C - Objective-C
Доброго времені суток. У меня вот какая проблема. Я роботаю с сервером в интернете. И в припципе моя функция будет начинать работать только...

Переход на Objective-C - Objective-C
День добрый, в настоящий момент я пишу на C++. Уже давненько душа тянется к чему-то новому, хочется что-то поменять. И вот в голову пришла...

Objective-C и разработка - Objective-C
Стоит ли мне изучать Objective-C?Если да, то посоветуйте хорошую ГРАФИЧЕСКУЮ среду разработки Objective-C для Windows.

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

Вообще по идее Apple прав, так как в теории язык может поддерживать полиморфизм, но к примеру не поддерживать интерфейсы и наследование.
0
korvin_
1873 / 1352 / 212
Регистрация: 28.04.2012
Сообщений: 4,848
25.02.2014, 10:54 #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.
0
kievkao
42 / 42 / 2
Регистрация: 22.11.2012
Сообщений: 225
25.02.2014, 14:00  [ТС] #4
То есть, получается, мы можем рассматривать в контексте полиморфизма объекты, не имеющие общего суперкласса, но, например, соответствующие одному и тому же протоколу?
0
25.02.2014, 14:00
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.02.2014, 14:00
Привет! Вот еще темы с ответами:

Рисование в Objective-C - Objective-C
Доброго времени суток. Подскажите пожалуйста как на Objective-C в Xcode реализовать что та типа Paint. Подскажите хотя бы с чего начать или...

Литература C++ и Objective-C - Objective-C
Здравствуйте. Книг по C++ гораздо больше, чем по Objective-C, т.к. его область применения шире, но вот интересно, почему по Objective-C...

Скачать Objective-C - Objective-C
Здравствуйте, где можно скачать Objective-C ? В инете искал, чё-то не нашёл. Знаю, что он входит в GCC

Строки в Objective-C - Objective-C
Помогите решить такую задачу: есть NSMutableString например с таким содержанием &quot;Send email to and to and to&quot;. Нужно получить строку в...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

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