|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
18.07.2012, 16:04 | #1 |
Форумчанин
Регистрация: 28.05.2011
Сообщений: 309
|
Полиморфизм.
Доброго времени суток!
Хочу разобраться с тремя китами ООП - Инкапсуляция, Наследование, Полиморфизм. С двумя разобрался, а вот третий - полиморфизм не могу понять.. зачем он надо и что это такое вообще.. Может кто-то подробно, желательно с примерами объяснить что такое полиморфизм ?
Спеши медленно.
|
18.07.2012, 16:12 | #2 |
Пользователь
Регистрация: 15.12.2010
Сообщений: 78
|
вот каноничный пример:
все утки крякают, но все крякают по разному. вот так это выглядит: Код:
|
18.07.2012, 17:01 | #3 |
Форумчанин
Регистрация: 28.05.2011
Сообщений: 309
|
вроде понятно, но не очень..
Спеши медленно.
|
18.07.2012, 17:13 | #4 |
В прострации
Форумчанин
Регистрация: 13.01.2009
Сообщений: 239
|
Пол-жизни сидючи, в монитор глядючи...
|
18.07.2012, 17:20 | #5 |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
один из примеров что мне нравиться это классы TStream в Delphi/C++ Builder.
ибо он абстрактный и дает единый интерфейс для чтения/записи потоковых данных. а реализации уже это TFileStream -> класс для файлов. TMemoryStream -> класс для работы с потоком в памяти. TStringStream -> класс для работы со строкой(она в памяти естественно) TSocketStream -> класс для работы с сокетами. TZlibCompressionStream/TZlibDecompressionStream -> класс для сжатия/расжатия данных на лету в другой поток(из другого потока) Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
18.07.2012, 17:24 | #6 |
Старожил
Регистрация: 31.05.2010
Сообщений: 13,543
|
Полиморфизм - закрытость. Если вы пишете свой класс, Вы можете скрыть от пользователя класса некоторые переменные. Это даёт возможность зделать класс переносимым на разные платформы.
В некотором смысле, инкапсуляция позволяет это зделать, но полиморфизм, имеет более широкое понятие в реализации. В частности в том, что позволяет назначать функции (процедуре), с одноимённым названием, разные параметры. Напимер: Код:
Угадай, где процедура? Чел и так нуб, а тут такие заморочки. Это мне такие вещи можно рассказывать, я не обижусь .
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder Последний раз редактировалось Smitt&Wesson; 18.07.2012 в 17:34. |
18.07.2012, 17:38 | #7 |
Старожил
Регистрация: 19.08.2009
Сообщений: 2,119
|
Smitt&Wesson
Полиморфизм - закрытость. Если вы пишете свой класс, Вы можете скрыть от пользователя класса некоторые переменные. Это даёт возможность зделать класс переносимым на разные платформы. А теперь - правильный ответ :D полиморфизм не имеет ни малейшего отношения ни к "закрытости" чего бы то ни было, ни к вопросам переносимости кода на другие платформы. Главная его "фишка" - это возможность единообразного взаимодействия с разнородными по сути объектами. Угадай, где процедура? Нигде. В C/C++ нет процедур. Забыли, видимо, добавить ): полиморфическая процедура. а это ЭТО такое не знаю даже я :lol:
А вы почему со мной не соглашаетесь, у вас что, импотенция? (c) ACE Valery
Последний раз редактировалось Stilet; 18.07.2012 в 20:07. |
18.07.2012, 17:42 | #8 | ||
Старожил
Регистрация: 31.05.2010
Сообщений: 13,543
|
Цитата:
Цитата:
В C++, просто понятие процедуры не определено, но существует (как ни странно).
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder Последний раз редактировалось Stilet; 18.07.2012 в 20:18. |
||
18.07.2012, 17:46 | #9 | |||
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
Цитата:
полиморфизм ближе к гибкости. Цитата:
а еще есть pimpl. Цитата:
Код:
ибо по возвращаемому типу нет отличия, так же как и в Делфи. потому в С++ и не делают разницы между функцией и процедуры. Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. Последний раз редактировалось Пепел Феникса; 18.07.2012 в 17:54. |
|||
18.07.2012, 17:55 | #10 | |
Старожил
Регистрация: 31.05.2010
Сообщений: 13,543
|
Цитата:
Многие операционные системы, являются полиморфными. Почти ничего не "зная" о задачах, которые эти сообщения посылают, умеют на них реагировать.
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder |
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Полиморфизм | Anubys | Помощь студентам | 1 | 26.12.2011 20:42 |
Полиморфизм | Zorgan | Visual C++ | 22 | 29.08.2011 12:23 |
Полиморфизм | MasterSporta | Общие вопросы C/C++ | 3 | 10.04.2011 23:46 |
полиморфизм | slayerblya | Общие вопросы C/C++ | 1 | 27.02.2011 01:43 |
Полиморфизм | mister2010 | Общие вопросы C/C++ | 30 | 24.05.2010 01:07 |