Файл: «Основные понятия объектно-ориентированного программирования» (Понятие об объектно-ориентированном программировании).pdf

ВУЗ: Не указан

Категория: Курсовая работа

Дисциплина: Не указана

Добавлен: 28.03.2023

Просмотров: 112

Скачиваний: 2

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

ВВЕДЕНИЕ

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

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

В процессе программирования выделяют этапы алгоритмизации и реализации алгоритма. На первом этапе выполняется разработка алгоритма решения задачи, которая начинается с формулировки задачи, метода ее решения с последующей разработкой алгоритма.

Затем алгоритм выполняется на алгоритмическомязыке программирования– формальном языке для записи и реализации алгоритмов.

Объектом в курсовой работе выбран объектно-ориентированный язык программирования С++. Предметом работы являются основные понятия объектно-ориентированного программирования в языке С++.

Цель работы состоит в изучении основных понятий объектно-ориентированного программирования в языке С++.

Для достижения поставленной цели решены следующие задачи:

– рассмотреть основы объектно-ориентированного программирования;

– изучить структуру программ на языке С ++;

– изучить основные понятия объектно-ориентированного программирования в языке С++;

– выделить достоинства и недостатки объектно-ориентированного подхода.

ГЛАВА 1
ОСНОВЫ ОБЪЕКТНО-ОРИЕНТИРОВАННОГО ПОДХОДА

1.1 Понятие об объектно-ориентированном программировании

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


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

Помимо объектов, ООП поддерживает различные функции, примеры которых приведены ниже[1,2]:

– классы;

– инкапсуляция;

– абстракция;

– наследование;

– полиморфизм.

Программы, написанные на ООП, используют классы и объекты, а также вышеуказанные функции. Язык программирования считается истинным объектно-ориентированным языком программирования, если все, что он представляет, использует объект. Например, Smalltalk – это язык, который является чисто объектно-ориентированным языком программирования.Язык программирования C ++, рассматриваемый в курсовой работе, называется частичным объектно-ориентированным языком программирования[2,3].

Язык C ++ был разработан в основном для использования объектно-ориентированных функций языка C.Хотя язык C ++ поддерживает такие функции ООП, как классы, объекты, наследование, инкапсуляция, абстракция и полиморфизм, существует несколько причин, по которым C ++ классифицируется как частичный объектно-ориентированный язык программирования.Некоторыепричины этогоприведены ниже[1,3].

1) Создание класса/объектов не является обязательным.

В C ++ функция main является обязательной и всегда находится вне класса. Следовательно, можно иметь только одну основную функцию в программе и обходиться без классов и объектов.Это первое нарушение чисто объектно-ориентированного языка программирования, где все представлено как объект.

2) Использование глобальных переменных.

В C ++ заложена концепция глобальных переменных, которые объявляются вне программы и могут быть доступны любому другому объекту программы. Это нарушает инкапсуляцию. Хотя C ++ поддерживает инкапсуляцию по отношению к классам и объектам, он не заботится об этом в случае глобальных переменных.

3) Наличие дружественной функции.

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

1.2 Структура и способы описания языков программирования
высокого уровня


Для каждого языка программирования определены способы организации данных и действий над ними. Также выделяют понятие «элементы языка», которое состоит из множества символов (алфавита), лексем и других изобразительных средств языка программирования. Несмотря на большое количество языков, изучение их проходит примерно по одинаковой схеме. Связано это с общностью структуры разных языков программирования высокого уровня, показанной на рис. 1 [4].

Рис. 1. Структура языков программирования высокого уровня

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

Поэтому в любом языке программирования выделяют три основные составляющие – алфавит, синтаксис, семантику [5,6].

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

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

Для описания синтаксиса языка программирования также требуется какой–то язык. В этом случае речь идет о метаязыке, который предназначен для описания других языков. Наиболее известными метаязыками в программировании являются металингвистические формулы Бекуса–Наура (язык БНФ) и синтаксические диаграммы. Синтаксические диаграммы более наглядны и воспринимаютсялегче. Далее для удобства будем обращаться к отдельным элементам языка БНФ [4-6].

БНФ описывает все синтаксические понятия в виде формулы из трех частей – правой и левой частей, соединенных знаком ::=, смысл которого эквивалентен словам «по определению есть». Слева от знака ::= записывается имя определяемого понятия (метапеременная), которое заключается в угловые скобки <>, а в правой части записывается формула или диаграмма, определяющая все множество значений, которые может принимать метапеременная.


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

В этой последовательности, конечным определяемым понятием является понятие программы [5,6].

1.3 Понятие объекта и класса

C++ – это язык программирования, поддерживающий несколько парадигм. Это означает, что он поддерживает разные стили программирования.

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

C++ поддерживает объектно-ориентированный (ОО) стиль программирования, который позволяет разделять сложные задачи на простые путем создания объектов.

Объект – это набор данных и функций, которые управляют этими данными. Перед созданием объекта в C++ необходимо определить класс[7].

Класс является планом объекта. Можно описать класс как эскиз (прототип) дома. Он содержит все подробности об этажах, дверях, окнах и т.д. На основе этих описаний будет построен дом. Дом является объектом. По одному и тому же описанию можно построитьмного домов, т.е. создать много объектов одного класса.

Класс определяется в C++ с использованием ключевого слова «class», за которым следует имя класса. Тело класса находится внутри фигурных скобок и заканчивается точкой с запятой в конце. Например[7,8]:

classИмяКласса

{

// данные

// функции

};

Рассмотрим также другой пример, в котором определен класс под названием Test. Этот класс имеет два элемента данных: data1 и data2 и две функции: function1() и function2().

classTest

{

private:

int data1;

float data2;

public:

voidfunction1()

{ data1 = 2; }

floatfunction2()

{

data2 = 3.5;

returndata2;

}

};

Приведенный выше пример содержит два ключевых слова: private и public. Ключевое слово private делает данные и функции закрытыми. Закрытые данные и функции могут быть доступны только из одного класса.

Ключевое слово public делает данные и функции общедоступными. Публичные данные и функции могут быть доступны вне класса[8].

В примере data1 и data2 являются закрытыми объектами, тогда как функции function1() и function2() являются открытыми. Если попытаться получить доступ к закрытым данным вне класса, компилятор выдаст ошибку. Эта функция в ООП известна как скрытие данных.

При определении класса определяется только спецификация объекта, не выделяется ни память, ни хранилище. Для использования данных и функций доступа, определенных в классе, необходимо создать объекты[8].


Для определения объекта в C ++используется следующий синтаксис:

classNameobjectVariableName;

Рассмотрим пример создания объектов класса Test, определенных в примере выше[8,9]:

classTest

{

private:

int data1;

float data2;

public:

voidfunction1()

{ data1 = 4; }

floatfunction2()

{

data2 = 5.5;

return data2;

}

};

intmain()

{

Testt1, t2;

}

Здесь созданы объекты t1 и t2 класса Test. В приведенном классе Testdata1 и data2 являются элементами данных, а function1() и function2() – функциями данных.

Получить доступ к элементам данных и функциям можно с помощью оператора «.» (точка): t2.function1();

Это вызовет функцию function1() внутри класса Test для объекта t2.

К элементу данных можно получить доступ так: t1.data2 = 5.5;

Важно отметить, что к закрытым элементам можно получить доступ только из класса. Например, t2.function1 (); можно использовать из любой функции или класса в приведенном примере, а o1.data2 = 5,5; всегда должен быть внутри класса Test[7-9].

1.4 Преимущества и недостатки объектно-ориентированного подхода в программировании

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

В объектно-ориентированных программах каждый объект представляет собой независимую и отдельную сущность, которая делает изменения, поиск и устранение проблем в программе легкой задачей. Кроме того, любые изменения, сделанные внутри класса, не влияют на другие части программы. Таким образом, объектно-ориентированные программы просты в написании и обслуживании[10].

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

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

Объектно-ориентированное программирование позволяет повторно использовать код. То есть объекты, созданные в одной программе, могут быть повторно использованы в других программах. Кроме того, новые классы могут быть созданы с помощью существующих с использованием наследования. Это приводит к более быстрой разработке программного обеспечения и качественным программам.