Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
vstup.docx
Скачиваний:
26
Добавлен:
13.03.2016
Размер:
1.28 Mб
Скачать

3. Методи боротьби з помилками, що виникають в каналах передачі даних. Завадостійке кодування. Екзаменаційний білет № 10

1. Поліморфізм. Поняття, сфери застосування.

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

называется перегрузкой функции. Полиморфизм может применяться и к операторам, т.е. выполняемые оператором действия также могут зависеть от типа данных (операндов). Такой тип полиморфизма называется перегрузкой операторов.

Имеются два термина, которые часто ассоциируются с объектно-ориентированным программированием вообще и с C++ в частности. Этими терминами являются раннее связывание (early binding) и позднее связывание (late binding).

Раннее связывание относится к событиям, о которых можно узнать в процессе компиляции. Особенноэто касается вызовов функций, которые настраиваются при компиляции.

Функции раннего связывания — это "нормальные" функции, перегружаемые функции, невиртуальные функции-члены и дружественные функции. При компиляции функций этих типов известна вся необходимая для их вызова адресная информация. Главным преимуществом раннего связывания (и доводом в пользу его широкого использования) является то, что оно обеспечивает высокое быстродействие программ. Определение нужной версии вызываемой функции во время компиляции программы — это самый быстрый метод вызова функций. Главный недостаток — потеря гибкости.

При позднем связывании адреса вызываемых функций-членов определяются динамически во время выполнения программы, а не статически во время компиляции, как в традиционных языках, в которых применяется раннее связывание. Позднее связывание выполняется только для виртуальных функций. Главным преимуществом позднего связывания является гибкость во время работы программы. Программа может легко реагировать на случайные события. Его основным недостатком является то, что требуется больше действий для вызова функции. Это обычно делает такие вызовы медленнее, чем вызовы функций раннего связывания.

Парадигмой объектно-ориентированного программирования является представление решаемой задачи не в виде алгоритмической модели, а в виде совокупности объектов различных классов, которые обмениваются запросами. Объект, получивший запрос, отвечает на него посредством вызова соответствующей функции-члена. Нахождение общности между типами объектов задачи – далеко не простой процесс. Он осуществляется на стадии объектно-ориентированного проектирования. На этой стадии вначале рассматривается

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

В случае принятия решения о применимости ООП на следующем этапе проектирования разрабатываются классы как строительные блоки для других типов и изучаются возможности выделения в классах тех свойств, которые могут быть переданы базовому классу. Затем проектируются те запросы, которыми будут обмениваться объекты, и осуществляется программная реализация разработанных объектов и запросов.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]