- •Лекция 1 Создание консольного приложения
- •2. Консоль. Построение консольного проекта
- •3. Запуск приложения
- •4. Сохранение и редактирование проекта
- •Лекция 2
- •4. Функции форматированного ввода и вывода
- •4.1. Функция форматированного ввода с клавиатуры
- •4.2. Функция форматированного вывода на экран
- •5. Математические функции
- •Лекция 3 Линейные вычислительные процессы
- •1. Алгоритм. Управляющие структуры
- •2. Линейные вычислительные алгоритмы
- •2.1. Условный оператор if()
- •2.2. Условное выражение
- •2.3. Оператор выбора switch()
- •Лекция 5 Программирование разветвляющихся вычислительных процессов
- •Лекция 6 Циклические вычислительные процессы.
- •1. Типы циклов
- •3. Операторы безусловного перехода
- •Лекция 7 Вычисление последовательностей
- •4. Примеры вычисления последовательностей
- •5. Структура алгоритмов вычисления рекуррентных последовательностей
- •Лекция 8 Одномерные массивы
- •1. Массивы
- •1.1. Примеры программ обработки одномерных массивов
- •1.2. Сортировка выбором
- •1.3. Сортировка простыми вставками
- •Лекция 10 Двухмерные массивы
- •1. Двухмерные массивы
- •Лекция 11 Алгоритмы матричной алгебры
- •1. Алгоритмы матричной алгебры
- •Лекция 12 Динамические массивы
- •1. Память компьютера. Адресное пространство
- •2. Динамическая память
- •3. Адреса и указатели
- •4. Указатели и массивы. Динамические массивы
- •5. Проблемы, связанные с указателями
- •6. Поразрядные операции
- •1.2. Способы объявления и обращения к элементам двухмерных массивов
- •Лекция 14 Символы и строки
- •1. Символьный тип данных
- •2. Строки
- •Лекция 15 Структуры
- •1. Понятие структуры
- •2. Определение нового имени типа
- •3. Массивы структур. Указатели на структуры
- •3.1. Определение статического массива структур
- •3.1. Определение динамического массива из n структур
- •Лекция 16 Файлы
- •1. Потоковый ввод-вывод данных
- •3. Понятие файла. Функции работы с файлами
- •Лекция 17 Файлы
- •Лекция 18 Функции пользователя
- •I. Приёмы построения алгоритмов
- •2. Понятие функции
- •2.1. Определение функции
- •2.2. Область видимости переменных
- •2.3. Параметры функции
- •2.4. Описание функции
- •2.5. Организация вызова функции
- •2.5. Передача параметров в функцию
- •3. Рекурсия
- •Лекция 20 Нахождение приближенного значения корня нелинейного уравнения
- •На отрезке [a;b] с заданной точностью eps
- •1.1. Метод дихотомии (половинного деления)
- •1.2. Метод хорд
- •1.3. Метод касательных (Ньютона)
- •Лекция 22 Объектно-ориентированное программирование
- •Полиморфизм – это свойство класса, позволяющее определить одно и то же по имени, но разное по смыслу действие. Основные этапы ооп:
- •Уточнённое имя принадлежит классу (т.Е. Компонентной) функции
- •Лекция 23 Объектно-ориентированное программирование
- •1. Конструкторы и деструкторы
- •1.2. Определение компонентных функций
- •Лекция 25 Объектно-ориентированное программирование
- •1. Свойства классов
- •1.1. Наследование классов
- •1.2. Полиморфизм
- •Библиографический список
Лекция 25 Объектно-ориентированное программирование
Цели:
-
изучить основные свойства класса;
-
методику написания алгоритмов с использованием основных свойств классов и перевода таких алгоритмов на язык программирования С++ и разработки соответствующего проекта в среде Visual C++ 6.0.
1. Свойства классов
Как уже было упомянуто выше, класс обладает тремя основными свойствами: инкапсуляцией, наследованием и полиморфизмом. Но если инкапсуляцией (свойством класса содержать в себе одновременно переменные и функции их обработки, т.е. свойства и методы) обладают все классы, наследование и полиморфизм расширяют наши понятия о классах.
1.1. Наследование классов
Каждый объект является конкретным представителем класса. Объекты одного класса имеют разные имена, но одинаковые по типам и внутренним именам данные. Объектам одного класса для обработки своих данных доступны одинаковые компонентные функции класса и одинаковые операции, настроенные на работу с объектами класса. Таким образом, класс выступает в роли типа, позволяющего вводить нужное количество объектов, имена (названия) которых программист выбирает по своему усмотрению.
Объекты разных классов и сами классы могут находиться в отношении наследования, при котором формируется иерархия объектов, соответствующая заранее предусмотренной иерархии классов. Иерархия классов позволяет определять новые классы на основе уже имеющихся. Имеющиеся классы обычно называются базовыми (иногда порождающими или родительскими), а новые классы, формируемые основе базовых, - производными (порождёнными), иногда классами-потомками или наследниками. Производные классы «получают наследство» - данные и методы своих базовых классов – и, кроме того, могут пополняться собственными компонентами (данными и собственными методами). Наследуемые компоненты не перемещаются в производный класс, а остаются в базовых классах. Сообщение, обработку которого не могут выполнить методы производного класса, автоматически передаётся в базовый класс. Классы могут наследовать свойства и методы нескольких родительских классов одновременно. Это называется множественное наследование.
Форма записи класса-наследника:
Класс-наследник – x
Родительские классы – y, z
// Наследование свойств и методов одного класса y
class x: <спецификатор доступа (как правило, public)> y
{…};
// Множественное наследование
class x: <спецификатор доступа)> y, z
{…};
Пример.
Описать 2 класса. Первый класс «точка»: свойства – координаты точки, метод – ввод-вывод координат. Второй класс «вектор в трёхмерном пространстве»: свойства – три координаты, методы – ввод-вывод координат, определение длины вектора.
class Point
{
private:
float x, y;
public:
void get_x (float x1);
void get_y (float y1);
void print ( );
};
void Point : : get_x (float x1)
{ x=x1; }
void Point : : get_y (float y1)
{ y=y1;}
void Point : : print ( )
{ printf (“{%f; %f}\n”, x, y); }
class V_3D : public Point
{
float z;
public:
void get_z (float z1);
void print ();
float len ();
};
void V_3D : : get_z (float z1)
{z=z1;}
void V_3D : : print ()
{print( “{%f;%f;%f}\n”,x, y, z); }
float V_3D : : len ()
{ return (sqrt (( x*x + y*y + z*z));}