Главная » Просмотр файлов » И.А. Волкова, А.В. Иванов, Л.Е. Карпов - Основы объектно-ориентированного программирования. Язык программирования С++ (ЧБ)

И.А. Волкова, А.В. Иванов, Л.Е. Карпов - Основы объектно-ориентированного программирования. Язык программирования С++ (ЧБ) (1114895), страница 2

Файл №1114895 И.А. Волкова, А.В. Иванов, Л.Е. Карпов - Основы объектно-ориентированного программирования. Язык программирования С++ (ЧБ) (И.А. Волкова, А.В. Иванов, Л.Е. Карпов - Основы объектно-ориентированного программирования. Язык программирования С++ (ЧБ)) 2 страницаИ.А. Волкова, А.В. Иванов, Л.Е. Карпов - Основы объектно-ориентированного программирования. Язык программирования С++ (ЧБ) (1114895) страница 22019-05-08СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 2)

Язык C++ вобрал в себя не только некоторые концепции языкаС, а также и некоторых других языков. Например, концепция классов взята автором С++ из языка Simula [10], а концепция наследования – из языка Smalltalk.Следует отметить, что развитие языка C++, а также сопряженное с нимразвитие технологии программирования, в частности, развитие COM (ComponentObject Model) технологии [5] приводит к некоторому отступлению от строгойтеории ООП. Так, в COM-технологии требуется наличие базового надкласса, чтоотсутствует в теории ООП.Некоторые отступления также имеются в визуальных реализациях C++:Visual C++ [6] в рамках пакета Microsoft Visual Studio, C++ Builder [3] фирмыBorland.В данном учебном пособии C++ рассматривается в строго теоретическомаспекте.1.1.Краткий обзор основных парадигм программированияВ соответствии с концепцией фон-Неймана – основателя теоретическойконцепции компьютерной техники, процессор обрабатывает данные, выполняяинструкции (команды), которые находятся в той же оперативной памяти, что иданные.Таким образом, можно выделить две основные сущности процесса обработки информации: код, как совокупность инструкций, и данные.

Все программыв соответствии с выбранной технологией программирования концептуально организованы вокруг своего кода или вокруг своих данных.Рассмотрим основные на сегодняшний день парадигмы программирования:1) Процессно-ориентированная парадигма, при которой программапредставляет собой ряд последовательно выполняемых операций – модельфон-Неймана. При этом код воздействует на данные. Языки, реализующие эту парадигму, называются процедурными или императивными.

Такими языками являются, например, C, Pascal и др.52) Объектно-ориентированная парадигма, при которой программа рассматривается как совокупность фрагментов кода, обрабатывающих отдельные совокупности данных – объекты. Эти объекты взаимодействуютдруг с другом посредством так называемых интерфейсов. При этомданные управляют доступом к коду.При повышении сложности алгоритма процессно-ориентированная парадигма сталкивается с существенными проблемами. Переход к объектным принципам программирования позволяет значительно улучшить внутреннюю организацию программы, в результате чего повышается производительность приразработке программных комплексов.Наряду с двумя вышеизложенными основными в настоящее время парадигмами программирования используются еще две парадигмы:3) Аппликативная или функциональная парадигма.

Основная идея данного подхода заключается в формализованном определении функции,которую выполняет программа. Таким образом, вместо определения последовательности состояний, через которые должен пройти компьютер,чтобы получить требуемый результат, необходимо определить функцию,при применении которой к исходным данным получается требуемое решение:y = f (x)Разработка программы при этом подходе сводится к конструированиюсложной функции из имеющихся стандартных простых функций:y = f1 ( f 2 ( f 3 (...), f 4 (...),...))Языками, поддерживающими такую парадигму, являются, например, языкиLISP и ML.

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

При этом подходе операторы программы выполняются не в той последовательности, в которой они написаны, а на основе анализа разрешающих условий (РУ).Программа при такой парадигме состоит из списка пар:6РУ1 → D1РУ 2 → D 2................РУ N → DNЗдесь D1 , D2 ,..., DN – действия, выполняемые в случае истинности соответствующих разрешающих условий РУ1 , РУ 2 ,..., РУ N .Выполнение программы заключается в циклической проверке разрешающихусловий и выполнения действий, соответствующих разрешающим условиям, вслучае истинности последних.Примером языка логического программирования является язык PROLOG.Структура программы при логическом программировании концептуальносвязана с теоретической концепцией нормальных алгоритмов Маркова, представляющей алгоритм преобразования информации в виде совокупности подстановок:T11 → T12T21 → T22.............TN 1 → TN 2Операторы с разрешающими условиями и подстановки просматриваютсяциклически до обнаружения завершающего условия.В данном курсе рассматривается парадигма ООП.1.2.Основные принципы ООПЦентральной идеей ООП является реализация понятия "абстракция".Смысл абстракции заключается в том, что сущность произвольной сложностиможно рассматривать, а также производить определенные действия над ней, какнад единым целым, не вдаваясь в детали внутреннего построения и функционирования.При создании программного комплекса необходимо разработать определенные абстракции.Пример: Задача составления расписания занятий.Необходимые абстракции: студент, курс лекций, преподаватель, аудитория.Операции:− Определить студента в группу− Назначить аудиторию для группы− ..........Одним из основных способов создания абстракции является использованиеконцепции иерархической классификации.

Ее суть заключается в том, чтосложные системы разбиваются на более простые фрагменты.Практически все сложные системы иерархичны, и уровни их иерархии отражают различные уровни абстракции. Для каждой конкретной задачи рассмат7ривается соответствующий уровень. Выбор низшего уровня абстракции достаточно произволен. Выбранный уровень в одном случае в качестве низшего уровняможет оказаться уровнем достаточно высокой абстракции в другом проекте.Различают типовую иерархию и структурную иерархию, которые далеемы будем называть соответственно структурой классов и структурой объектов.Во всех объектно-ориентированных языках программирования реализованыследующие основные механизмы (постулаты) ООП:• Инкапсуляция• Наследование• ПолиморфизмВсе эти механизмы важны для разработки и использования абстракций.1) Инкапсуляция – механизм, связывающий вместе код и данные, которыми он манипулирует, и одновременно защищающий их от произвольногодоступа со стороны другого кода, внешнего по отношению к рассматриваемому.Доступ к коду и данным жестко контролируется интерфейсом.Основой инкапсуляции при ООП является класс.Механизма инкапсуляции позволяет оставлять скрытыми от пользователянекоторые детали реализации класса (то есть инкапсулировать их в классе), чтоупрощает работу с объектами этого класса.fork - exec2) Наследование – механизм, с помощью которого один объект (производного класса) приобретает свойства другого объекта (родительского, базовогокласса).

При использовании наследования новый объект не обязательно описывать, начиная с нуля, что существенно упрощает работу программиста. Наследование позволяет какому-либо объекту наследовать от своего родителя общие атрибуты, а для себя определять только те характеристики, которые делают егоуникальным внутри класса.Наследование есть очень важное понятие, поддерживающее концепциюиерархической классификации.3) Полиморфизм – механизм, позволяющий использовать один и тот жеинтерфейс для общего класса действий.Пример: Имеются 3 типа стека для хранения:o целых чиселo чисел с плавающей точкойo символовВместо трех подпрограмм управления в объектно-ориентированной программе требуется всего одна подпрограмма (один интерфейс)Общая концепция полиморфизма: один интерфейс – много методов.Выбор конкретного действия (метода) применительно к конкретной ситуации возлагается на компилятор.

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

Однако в данном случае полиморфизм проявляется неявно.1.3.Абстрактные типы данныхТипы данных, создаваемые пользователем (программистом), называютсяпользовательскими типами данных. Пользовательский тип данных с полностью скрытой (инкапсулированной) внутренней структурой называется абстрактным типом данных (АТД).В С++ АТД реализуется с помощью классов, в которых нет открытых членов-данных, то есть вся структура этих классов скрыта от внешнего пользователя.2.Отличия С и С++Объектно-ориентированный язык программирования С++ унаследовал типыданных, операции и управляющие конструкции процедурного языка С (стандартС90).Кроме реализации принципов объектно-ориентированного программирования в язык С++ по сравнению с С внесены и некоторые другие изменения, которые сделали его лучше и удобнее, чем С.

Рассмотрим основные их них.2.1.Работа с динамической памятьюВ языке C++ для работы с динамической памятью введены операции new иdelete, которыми можно пользоваться наряду с функцией стандартной библиотекиС malloc.Операция new используется как для выделения памяти для одного объекта(при этом возможна инициализация выделенной памяти передаваемым значением), так и для массива однородных объектов. Операция new возвращает адресначала выделенной динамической памяти соответствующего типа.Ее синтаксис:new тип;new тип (выражение-инициализатор);new тип [выражение_размерность_массива];Пример:int * p;int * q;p = new int(5);////q = new int[10]; ////выделение памяти и инициализациязначением 5выделение памяти для массива из 10элементов9Операция delete освобождает распределенную операцией new память. Еесинтаксис:delete указатель_на_объект;delete [ ] указатель_на_массив_объектов;Первая форма используется, если операцией new размещался единичный(скалярный) объект.

Характеристики

Список файлов книги

Свежие статьи
Популярно сейчас
Как Вы думаете, сколько людей до Вас делали точно такое же задание? 99% студентов выполняют точно такие же задания, как и их предшественники год назад. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6418
Авторов
на СтудИзбе
307
Средний доход
с одного платного файла
Обучение Подробнее