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

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

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

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

Добавлен: 04.04.2023

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

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

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

Введение

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

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

Таким образом актуальность выбранной мною темы определяется широким распространением использования языка C++ для решения самых разных задач.

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

Для этого требуется выполнить следующие задачи:

  1. Изучить понятия типов данных и самые распространенные из них в языке C++;
  2. Изучить алгоритмические структуры: условия и циклы;
  3. Изучить основных понятий ООП в рамках C++ (классы, объекты, полиморфизм и др.);
  4. Изучить особенности организации кода в C++;
  5. Самостоятельно разработать учебное приложение на языке C++ с использование объектно-ориентированного подхода.

Глава 1. Язык C++

История языка

Язык C++ был создан одним из работников известной компании Bell Labs - Бьерном Страуструпом. Ему хотелось объединить силу и скорость языка C с высокоуровневой абстракцией, которую давали такие языки, как Simula или Smaltalk. Так он начал работу над новым языком, которые сперва назывался C с классами. Первоначально язык разрабатывался самим Страуструпом и лишь в конце 90-ых годов был опубликован первый международный стандарт известный как C++ 98 разработанный специальным комитетом из ISO (International Organization for Standardization – международной организация стандартизации).

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


Несмотря на свой возраст, язык до сих пор активно поддерживается и развивается. В последние годы новые стандарты языка выпускаются каждые 3 года – C++ 11, C++ 14, C++ 17 и уже известны некоторые нововведения C++ 20.

Базовые понятия

Любая программа на языке C++ начинается с определения функции main (Рисунок 1).

Рисунок 1. Функция main.

Запуск программы по сути является запуском данной функции. Ключевое слово int означает тип данных, которые возвращает функция. Операция возвращения данных происходит с помощью ключевого слова return. В случае с функцией main любое число отличное от нуля означает, как правило, что во время выполнения программы произошла какая-то ошибка.

В состав языка входят различные библиотеки, которые можно использовать сразу же. Одна из самых часто используемых на этапе изучения языка библиотек – iostream (in-out stream – поток ввода-вывода). Подключение библиотеки выполняется с помощью инструкции #include <название библиотеки>;. Библиотека iostream позволяет использовать такие методы, как std::cout и std::cin для вывода текста в консоль и считывания ввода из консоли соответственно (Рисунок 2).

Рисунок 2. Использование библиотеки iostream.

Здесь мы на 1 строчке подключаем библиотеку. На 5 строке в консоль выводится традиционное сообщение «Hello, world!». Символ \n означает перевод строки.

На 6 строке объявляется переменная с типом int и на 7 строке ей присваивается значение, введенное пользователем в консоли. Переменную можно представить, как некий ящик, в котором хранится то или иное значение. Тип данных означает, что в этот ящик можно положить только определенные значения. Запись вида int a; называется объявлением переменной, а запись a = 2; - инициализацией переменной. При желании можно объявлять переменные и производить их инициализацию в одном выражении (например, int a = 22;).

Типы данных

C++ является языком со строгой типизацией. Это означает, что у каждой переменной должен быть явно задан её тип.

Целочисленные переменные обозначаются short (short int), int, long (long int) и long long (long long int). Они занимают разное количество байт и соответственно могут числа в определенном диапазоне. Кроме того, каждому типу может предшествовать ключевое слово signed или unsigned. Слово unsigned означает, что переменная не может хранить отрицательные числа, что увеличивает максимальное положительное число, которое можно в неё записать.


Таблица 1.

Целочисленные типы данных

Тип данных

Знак

Диапазон

Размер, бит

short

signed

от -32767 до 32767

>=16

short

unsigned

от 0 до 65535

>=16

int

signed

от -2 147 483 647 до 2 147 483 647

>=32

int

unsigned

от 0

до 4 294 967 295

>=32

long

signed

± 9,22 · 1018

>=64

long

unsigned

от 0 до 1,84 · 1019

>=64

long long

signed

± 9,22 · 1018

>=64

long long

unsigned

от 0 до 1,84 · 1019

>=64

Нужно отметить, что размер и соответственно диапазон варьируется в зависимости от процессора и компилятора. При этом всегда гарантировано, что sizeof(long long) >= sizeof(long) >= sizeof(int) >= sizeof(short), где sizeof() возвращает размер. Таким образом, в переменную типа long гарантировано можно записать значение из переменных типа int и short.

Для записи чисел с плавающей точкой используются переменные типа float, long float и double. При этом long float и double имеют, как правило, один и тот же размер.

Таблица 2.

Типы данных с плавающей точкой

Тип данных

Знак

Диапазон

Размер, бит

float

signed

от -2 147 483 648.0

до 2 147 483 647.0

32

float

unsigned

от 0

до 4 294 967 295.0

32

long float

signed

± 9,22 · 1018

64

long float

unsigned

от 0 до 1,84 · 1019

64

double

signed

± 9,22 · 1018

64

double

unsigned

от 0 до 1,84 · 1019

64


Для представления символов используется тип char, который занимает 1 байт. Такой же по размеру тип bool используется для представления логических значений true/false.

По умолчанию в C++ нет типа данных для строк подобно тому, как это существует в других языках. Тем не менее, работать со строками можно при подключении стандартной библиотеки string (Рисунок 3).

Рисунок 3. Использование библиотеки string.

В стандартную библиотеку также входит тип vector похожий на массивы из других языков. Он позволяет хранить несколько значений одного типа в одной переменной. Значения можно добавлять при инициализации или позже с помощью метода push_back (Рисунок 4).

Рисунок 4. Использование типа vector.

Операторы

Как и во многих других языках программирования в C++ имеется стандартный набор операторов. Кратко рассмотрим их.

Арифметические операторы известны всем со школы. Это сложение (+), вычитание (-), умножение (*) и деление (/). Кроме них присутствует также оператор получения остатка от деления (%). Как и в математике, в C++ можно использовать скобки для обозначения приоритетности действий. Это касается всех операторов, а не только арифметических. Помимо этого, имеются операторы инкремента (++) и декремента (--). Они увеличивают и уменьшают значение переменной на 1 соответственно. При этом выражение int b = a++; сперва присвоит переменной b значение переменной a, и уже потом увеличит её значение. Выражение же int b = ++a; сперва увеличит значение переменной, а потом уже присвоит его переменной b.

Логические операторы используются в логических выражениях, которые возвращают тип данных bool. Список логических операторов представлен ниже в таблице.

Таблица 3.

Логические операторы

Оператор

Название

>

Больше

>=

Больше или равно

<

Меньше

<=

Меньше или равно

==

Равно

!=

Не равно

У отдельных классов могут быть определены свои операторы. Например, у уже рассмотренного объекта std::cout присутствует оператор <<. Кроме этого, отдельные операторы могут быть переопределены для отдельных классов. Так у класса std::string переопределен оператор + таким образом, что две строки соединяются в одну. Более подробно переопределение операторов рассмотрено во второй главе.


Условия и циклы

Упомянутые выше логические выражения, как правило, используются в таких конструкциях как условия и циклы. Условие позволяет в зависимости от какого-либо логического значения или выражения выполнять тот или иной код (Рисунок 5).

Рисунок 5. Использование условий.

Любое условие начинается с ключевого слова if, после которого в круглых скобках пишется логическое выражение. После этого в фигурных скобках пишется код, который будет выполнен. При необходимости можно добавить блок else, который обозначается соответствующим ключевым словом. Последующий код будет выполнен только в том случае, когда логическое выражение равно false. Между блоками if и else можно вставлять любое количество блоков else if. Таким образом, если первое логическое условие не равно true проверяется условие в блоке else if. Если оно не выполнено, то проверяется условие в следующем таком блоке или же выполняется код в блоке else.

Бывают случаи, когда блоков else if становится достаточно много, что затрудняет чтение кода. В таких случаях используют выражение switch (Рисунок 6).

Рисунок 6. Использование конструкции switch.

Здесь значение, идущее в скобках после ключевого слова switch, сравнивается со значениями после ключевого слова case и в случае их совпадения, выполняется код после двоеточия. Ключевое слово default используется для выполнения кода в случаях, когда проверяемое значение не совпало ни с одним из перечисленных в case-блоках значений. Стоит обратить внимание на то, что каждый блок заканчивается ключевым словом break, которое прерывает дальнейшую проверку. Если его не указывать, то при наличии блока default, код в нем будет выполняться всегда независимо от того, было ли совпадение ранее или нет. Так происходит, потому что после совпадения с одним из значений, программа продолжает проверять последующие значения, в том числе выполняя код в блоке default.

Часто какой-то код требуется выполнить много раз. В этом случае используются циклы. В C++ есть несколько различных циклов.

Цикл for используется обычно, когда известно точно, сколько раз нужно прогнать код (Рисунок 7).

Рисунок 7. Цикл for.

При этом выражение в круглых скобках состоит из трех частей, разделенных точкой с запятой. В первой части определяется и инициализируется переменная-счетчик. Вторая часть является логическим условием выхода из цикла. То есть цикл продолжается до тех пор, пока это условие верно. Третья часть – изменение переменной-счетчика. Это не обязательно инкремент или декремент. Здесь может быть любое выражение.