Вы находитесь на странице: 1из 1

Основными свойствами ООП являются инкапсуляция, наследование и полиморфизм.

Ниже кратко
поясняется их смысл, а полное представление о них можно получить^ после изучения этой части
книги.
Объединение данных с функциями их обработки в сочетании со скрытием не нужной для использования
этих данных информации называется инкапсуляцией (encapsulation). Эта идея не нова и применялась в
структурном и модульном программировании, а в ООП получила свое логическое завершение.
Инкапсуляция повышает степень абстракции программы: данные класса и реализация его функций
находятся ниже уровня абстракции, и для написания программы информация о них не требуется. Кроме
того, инкапсуляция позволяет изменить реализацию класса без модификации основной части программы,
если интерфейс остался прежним (например, при необходимости сменить способ хранения данных с
массива на стек). Простота модификации, как уже неоднократно отмечалось, является очень важным
критерием качества программы.
Инкапсуляция позволяет использовать класс в другом окружении и быть уверенным, что он не
испортит не принадлежащие ему области памяти, а также создавать библиотеки классов для
применения во многих программах.
Наследование — это возможность создания иерархии классов, когда потомки на следуют все свойства
своих предков, могут их изменять и добавлять новые. Свойства при наследовании повторно не
описываются, что сокращает объем про граммы. Выделение общих черт различных классов в один
класс-предок является мощным механизмом абстракции — ведь и любая наука начинается с
абстрагирования и классификации, которые помогают справиться со сложностью рассматриваемой
предметной области.
Иерархия классов представляется в виде древовидной структуры, в которой более общие классы
располагаются ближе к корню, а более специализированные — на ветвях и листьях. В C++ каждый класс
может иметь сколько угодно потомков
и предков. Иногда предки называются надклассами или суперклассами, а потомки — подклассами или
субклассами.
Третьим китом, на котором стоит ООП, является полиморфизм — возможность использовать в
различных классах иерархии одно имя для обозначения сходных по смыслу действий и гибко выбирать
требуемое действие во время выполнения про граммы.
Понятие полиморфизма используется в C++ весьма широко. Простым примером полиморфизма может
служить рассмотренная в первой части книги перегрузка функций, когда из нескольких вариантов
выбирается наиболее подходящая функция по соответствию ее прототипа передаваемым параметрам.
Другой при мер — использование шаблонов функций (в дальнейшем мы рассмотрим и шаблоны классов),
когда один и тот же код видоизменяется в соответствии с типом, переданным в качестве параметра. Чаще
всего понятие полиморфизма связывают с механизмом виртуальных методов).

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

Вам также может понравиться