Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Принципы и свойства объектно-ориентированного программирования



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

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

Красивый термин «парадигма» означает набор теорий, стандартов и методов, ко­торые совместно представляют собой способ организации знаний — иными сло­вами, способ видения мира. В программировании этот термин используется для определения модели вычислений, то есть способа структурирования информа­ции, организации вычислений и данных. Объектно-ориентированная программа строится в терминах объектов и их взаимосвязей.

Выбор степени абстракции определяется типом задачи, которую требуется ре­шить. Не имеет смысла использовать сложные технологии для решения простых задач, а попытка «врукопашную» справиться со сложными проблемами обречена на провал. С другой стороны, сложные технологии требуют больших затрат вре­мени на их освоение.

Конкретные величины типа данных «класс» называются экземплярами класса, или объектами. Объекты взаимодействуют между собой, посылая и получая со­общения. Сообщение — это запрос на выполнение действия, содержащий набор необходимых параметров. Механизм сообщений реализуется с помощью вызова соответствующих функций. Таким образом, с помощью ООП легко реализуется так называемая «событийно-управляемая модель», когда данные активны и управляют вызовом того или иного фрагмента программного кода.

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

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

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

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

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

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

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





Дата публикования: 2014-11-28; Прочитано: 340 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.006 с)...