Книжная полка Сохранить
Размер шрифта:
А
А
А
|  Шрифт:
Arial
Times
|  Интервал:
Стандартный
Средний
Большой
|  Цвет сайта:
Ц
Ц
Ц
Ц
Ц

Прикладное программирование на языке C++

Покупка
Новинка
Артикул: 842305.01.99
Доступ онлайн
1 000 ₽
В корзину
Раскрыты основные принципы объектно-ориентированного программирования. Приведены фрагменты теоретического материала по прикладному программированию на языке С++, описания заданий для разработки программ, объяснения алгоритмов и исходные тексты программ по различным темам. Для студентов 1-го и 2-го курсов всех специальностей МГТУ им. Н.Э. Баумана.
Волосатова, Т. М. Прикладное программирование на языке C++ : учебное пособие / Т. М. Волосатова, С. В. Родионов, Д. Т. Шварц. - Москва : Издательство МГТУ им. Баумана, 2015. - 148 с. - ISBN 978-5-7038-4101-3. - Текст : электронный. - URL: https://znanium.ru/catalog/product/2169596 (дата обращения: 24.11.2024). – Режим доступа: по подписке.
Фрагмент текстового слоя документа размещен для индексирующих роботов
Московский государственный технический университет 
 имени Н.Э. Баумана 
Т.М. Волосатова, С.В. Родионов,  Д.Т. Шварц 
Прикладное программирование  
на языке С++  
 
Учебное пособие 
 
 
 
 
 
 
 
 
 
 
 
 
 


УДК 681.3.066  
ББК 32.973-018.2 
         В68 
 
Издание доступно в электронном виде на портале ebooks.bmstu.ru 
по адресу: http://ebooks.bmstu.ru/catalog/229/book1064.html 
Факультет «Робототехника и комплексная автоматизация» 
Кафедра «Системы автоматизированного проектирования» 
Рекомендовано Редакционно-издательским советом 
МГТУ им. Н.Э. Баумана в качестве учебного пособия 
Рецензенты: 
разработчик ООО «Яндекс»  Е.В. Гобарева;  
канд. техн. наук  М.В. Филиппов 
 
Волосатова, Т. М. 
Прикладное программирование на языке С++ : учебное 
В68 
пособие / Т. М. Волосатова, С. В. Родионов, Д. Т. Шварц. — 
Москва : Издательство МГТУ им. Н. Э. Баумана, 2015. — 
146, [2] с. : ил. 
ISBN 978-5-7038-4101-3 
Раскрыты основные принципы объектно-ориентированного 
программирования.  Приведены фрагменты теоретического материала по прикладному программированию на языке С++, описания заданий для разработки программ, объяснения алгоритмов и 
исходные тексты программ по различным темам. 
Для студентов 1-го и 2-го курсов всех специальностей МГТУ       
им. Н.Э. Баумана. 
 
 
 
 
УДК 681.3.066 
ББК 32.973-018.2  
  
 МГТУ им. Н.Э. Баумана, 2015 
 
 
 Оформление. Издательство  
ISBN 978-5-7038-4101-3 
 
МГТУ им. Н.Э. Баумана, 2015  
2 


ПРЕДИСЛОВИЕ 
Учебное пособие содержит фрагменты теоретического материала по прикладному программированию на языке С++, задания 
для разработки программ, объяснения алгоритмов и прокомментированные исходные тексты программ по различным темам. 
Цель пособия — помочь студентам расширить свои знания 
языка С++ и освоить рациональные приемы составления программ 
на этом объектно-ориентированном языке. 
В настоящее время объектно-ориентированная технология 
(парадигма) программирования наиболее распространена и востребована. При объектно-ориентированном подходе к программированию программа представляет собой совокупность взаимодействующих между собой данных — объектов. Функциональную 
возможность и структуру объектов задают классы — типы данных, 
определенные пользователем. 
Изучение 
объектно-ориентированного 
программирования 
(ООП) целесообразно начать на примере объектно-ориентированного языка программирования C++ как наиболее теоретически выдержанного. Другие языки, поддерживающие идеи ООП, 
такие как Object Pascal [4], Java [7], разрабатывались в первую 
очередь с учетом удобства программирования задач в соответствующих предметных областях. 
Язык C++, унаследовав язык C (стандарт С90), был разработан 
Б. Страуструпом с наиболее возможной реализацией теоретических концепций ООП. Язык C++ вобрал в себя отдельные концепции не только языка С, но и некоторых других языков. Например, 
концепция классов взята автором языка С++ из языка Simula, а 
концепция наследования — из языка Smalltalk. 
3 


В данном учебном пособии C++ рассматривается в строго теоретическом аспекте. 
Объектно-ориентированная парадигма — программа рассматривается как совокупность фрагментов кода, обрабатывающих 
отдельные совокупности данных — объекты. Такие объекты взаимодействуют между собой посредством так называемых интерфейсов. При этом данные управляют доступом к коду. 
Выбор тем и изложение материала в пособии таковы, что студент сможет освоить: 
 синтаксис, семантику и выразительные возможности языка 
С++; 
 три основных принципа ООП; 
 принципы реализации на языке С++ классических алгоритмов обработки информации.  
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
  
4 


1. ОСНОВНЫЕ ПРИНЦИПЫ ОБЪЕКТНООРИЕНТИРОВАННОГО ПРОГРАММИРОВАНИЯ 
Центральной идеей ООП является реализация понятия «абстракция». Смысл абстракции заключается в том, что сущность 
произвольной сложности можно рассматривать, а также осуществлять определенные действия над ней как над единым целым, не вдаваясь в детали внутреннего построения и функционирования. Поэтому при создании программного комплекса необходимо разработать 
определенные абстракции. 
Одним из основных способов создания абстракции является 
использование концепции иерархической классификации. Ее суть 
заключается в том, что сложные системы разбиваются на более 
простые фрагменты. 
Практически все сложные системы иерархичны, а уровни их 
иерархии отражают различные уровни абстракции. Для каждой 
конкретной задачи рассматривается соответствующий уровень. 
Выбор низшего уровня абстракции достаточно произволен. При 
этом выбранный в качестве низшего уровень в одном случае может 
оказаться уровнем достаточно высокой абстракции в другом проекте. 
Различают типовую и структурную иерархии, которые далее 
будут называться соответственно структурой классов и структурой объектов. 
Во всех объектно-ориентированных языках программирования 
реализованы следующие основные механизмы (постулаты) ООП: 
 инкапсуляция, 
 наследование, 
 полиморфизм. 
Все эти механизмы важны для разработки и использования абстракций. 
Инкапсуляция — механизм, связывающий вместе код и данные, которыми он манипулирует, и одновременно защищающий 
5 


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


2. КЛАССЫ И ОБЪЕКТЫ В ЯЗЫКЕ С++ 
Центральным понятием ООП на С++ является класс, используемый для описания типа, на основе которого создаются объекты 
этого типа (переменные типа класс). 
Класс, как и любой тип данных, характеризуется множеством 
значений, которые могут принимать объекты класса, и множеством функций, задающих операции над объектами. 
Класс полноценно определяет тип данных как совокупность 
множества значений и набора операций над этими значениями. 
2.1. Синтаксис описания класса 
Грамматика описания класса выглядит следующим образом: 
class имя_класса { определение_членов_класса }; 
Члены класса можно разделить на информационные члены и 
функции-члены (методы) класса. Информационные члены описывают внутреннюю структуру информации, хранящейся в объекте, 
который создается на основе класса, а методы класса — алгоритмы 
обработки этой информации. 
Данные, хранящиеся в информационных членах, описывают состояние объекта, созданного на основе класса. На состояние объекта 
влияют изменения хранящихся данных с помощью методов класса. 
Алгоритмы, заложенные в реализации методов класса, определяют 
поведение объекта, т. е. реагирование объекта на поступающие 
внешние воздействия в виде входных данных. 
2.2. Управление доступом к членам класса  
Принцип инкапсуляции обеспечивается вводом в класс областей доступа: 
private (закрытый, доступный только собственным методам); 
7 


public (открытый, доступный любым функциям); 
protected (защищенный, доступный только собственным методам и методам производных классов). 
Члены класса, находящиеся в закрытой области (private), недоступны для использования со стороны внешнего кода. Напротив, 
члены класса, находящиеся в открытой секции (public), доступны 
для использования со стороны внешнего кода. При описании класса каждый его член помещается в одну из перечисленных выше 
областей доступа: 
class  имя_класса  {  
private: 
определение_закрытых_членов_класса 
public: 
определение_открытых_членов_класса 
protected: 
определение_защищенных_членов_класса}; 
Порядок следования областей доступа и их количество в классе — произвольны. 
Служебное слово, определяющее первую область доступа, может отсутствовать. По умолчанию эта область считается private. 
В закрытую (private) область обычно помещаются информационные члены, а в открытую (public) — методы класса, реализующие интерфейс объектов класса с внешней средой. Если какойлибо метод имеет вспомогательное значение для других методов 
класса, являясь подпрограммой для них, то его также следует поместить в закрытую область, что обеспечивает логическую целостность информации. 
После описания класса его имя можно использовать для описания объектов этого типа. 
Доступ к информационным членам и методам объекта, описанным в открытой секции, осуществляется через объект или 
ссылку на объект с помощью операции выбора члена класса ‘.’. 
Если работа с объектом выполняется с помощью указателя на объект, то доступ к соответствующим членам класса осуществляется 
на основе указателя на член класса ‘->’. Объекты класса можно 
определять совместно с описанием класса. 
8 


2.3. Класс как область видимости 
Класс является областью видимости описанных в нем членов 
класса. Идентификатор члена класса локален по отношению к данному классу. Одноименные идентификаторы членов класса закрывают видимость соответствующих внешних идентификаторов. 
Операция ‘::’ позволяет получить доступ к одноименным объектам, внешним по отношению к текущей области видимости, в частности к глобальным функциям и переменным, следующим образом: 
имя_класса :: имя_члена_класса    
или 
:: имя — для имен глобальных функций и переменных. 
2.4. Объявление и определение методов класса.  
Спецификатор inline 
Каждый метод класса, должен быть определен в программе. 
Определить метод класса можно либо непосредственно в классе 
(если тело метода не слишком сложно и громоздко), либо вынести 
определение вне класса, а в классе только объявить соответствующий метод, указав его прототип. 
При определении метода класса вне класса для указания области видимости соответствующего имени метода используется операция ‘::’. Это позволяет повысить наглядность текста, особенно в 
случае значительного объема кода в методах, но при этом прототипы объявления и определения функции должны совпадать. 
Метод класса и любую функцию, не связанную ни с каким 
классом, можно определить со спецификатором inline: 
inline int func1(); 
Такие функции называются встроенными. 
Спецификатор inline указывает компилятору, что необходимо по 
возможности генерировать в точке вызова код функции, а не команды вызова функции, находящейся в отдельном месте выполняемого 
кода программы. Это позволяет уменьшить время выполнения программы за счет отсутствия команд вызова функции и возврата из 
функции, которые, кроме передачи управления, выполняют действия 
соответственно по сохранению и восстановлению контекста (содержимого основных регистров процессора). Методы класса, определенные непосредственно в классе, являются inline-функциям. 
9 


2.5. Указатель this 
В классах С++ неявно введен специальный указатель this — 
указатель на текущий объект. Каждый метод класса при обращении к нему получает данный указатель в качестве неявного параметра. Через него методы класса могут получить доступ к другим 
членам класса. 
Указатель this можно рассматривать как локальную константу, 
имеющую тип X*, если X — имя описываемого класса. Нет необходимости применять его явно. Он используется явно, например, в 
том случае, когда выходным значением для метода является текущий объект. 
Данный указатель, как и другие указатели, может быть разыменован. 
При передаче возвращаемого значения метода класса в виде 
ссылки на текущий объект используется разыменованный указатель 
this, поскольку, как уже отмечалось, инициализируется непосредственным значением. 
  
 
 
 
10 


Доступ онлайн
1 000 ₽
В корзину