Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ответы на ЯП.docx
Скачиваний:
5
Добавлен:
01.07.2025
Размер:
661.54 Кб
Скачать

Связь: ooa→oop→ood

• На результатах OOA формируются модели, на которых основывается OOD, OOD в свою очередь создает фундамент для окончательной реализации системы с использованием методологии ООП.

ОО ЯП

•Язык программирования является объектно-ориентированным тогда и только тогда, когда выполняются следующие условия:

1) Поддерживаются объекты, т.е. абстракции данных, имеющие интерфейс в виде именованных операций и собственные данные, с ограничением доступа к ним.

2) Объекты относятся к соответствующим типам (классам).

3) Типы (классы) могут наследовать атрибуты супер типов (суперклассов).

Преимущества объектной модели:

+Позволяет использовать возможности ОО языка программирования.

+Повышает уровень унификации разработки и пригодность для повторного использования программ и проектов.

+Приводит к построению систем на основе стабильных промежуточных описаний, что упрощает процесс внесения изменений.

+Уменьшает риск разработки сложных систем. ОО проектирование – это единственная методология, позволяющая справиться со сложностью, присущей большим системам.

+Ориентирована на человеческое восприятие мира.

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

  • Классы позволяют проводить конструирование из полезных компонент, обладающих простыми инструментами, что дает возможность абстрагироваться от деталей реализации.

  • Данные и операции вместе образуют определенную сущность и они не «размазываются» по всей программе, как это нередко бывает в случае процедурного программирования.

  • Локализация кода и данных улучшает наглядность и удобство сопровождения программного обеспечения.

  • Инкапсуляция информации защищает наиболее критичные данные от несанкционированного доступа.

Недостатки:

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

17. Полиморфизм в объектно-ориентированном программировании. Виртуальные функции. Таблицы виртуальных функций.

Полиморфизмом называется способность функции обрабатывать данные разных типов.

Полиморфизм – Некоторые части (методы) родительского класса заменяются новыми реализующими специфические для данного потомка действия.

Полиморфизм – это свойство системы использовать объекты с одинаковым интерфейсом без информации о типе и внутренней структуре объекта.

• Полиморфизмом в ООП называется переопределение наследником функций-членов базового класса.

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

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

Полиморфизм позволяет упростить исходные тексты программ, обеспечивает их развитие за счет введения новых методов обработки.

• Виртуальные функции - применяются для реализации динамического полиморфизма

• Чистая виртуальная функция – это функция-член, которая объявлена со спецификатором = 0 вместо тела:

• Чистая виртуальная функция не имеет определения и не может быть непосредственно вызвана.

• Чистая виртуальная функция применяется для создания абстрактных классов.

• Она создает в общем базовом классе сигнатуру – прототип, которая не имела бы собственного определения , но позволяла создавать такие определения в классах – потомках и вызывать их через указатель на общий базовый класс.

• Функция – член объявляется чистой виртуальной тогда, когда ее определение для базового класса не имеет смысла.