Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции_С++_последная.doc
Скачиваний:
40
Добавлен:
07.05.2019
Размер:
876.54 Кб
Скачать

7.2. Новые концепции программирования

В результате борьбы с проблемой сложности программного кода были выработаны три новые концепции программирования:

- объектно-ориентированное программирование (ООП);

- унифицированный язык моделирования (UML);

- специализированные средства разработки программного обеспечения.

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

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

Типичная программа на языке С++ состоит из совокупности объектов, взаимодействующих между собой посредством вызова методов друг друга. Структура программы на С++ приводится на рис. 1.

Рис. 1. Объектно-ориентированный подход

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

Инкапсуляция – это ограничение доступа к данным и их объединение с методами, обрабатывающими эти данные. Доступ к отдельным частям класса регулируется с помощью специальных ключевых слов: public (открытая часть), private (закрытая часть) и protected (защищенная часть).

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

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

Класс – это тип, определяемый программистом, в котором объединяются структуры данных и функции их обработки.

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

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

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

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

Подобно этому в программировании класс также может породить множество подклассов. В C++ класс, который порождает все остальные классы, называется базовым классом, остальные классы наследуют его свойства, одновременно обладая собственными свойствами. Такие классы называются производными.

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

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

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

Специализированные средства разработки программного обеспечения являются наиболее широко употребительными. Наиболее популярной средой разработки для С++ является продукт, совместно разработанный компаниями Microsoft и Borland.