
- •Объектно-ориентированное программирование
- •Лабораторная работа №1 Работа с проектами в среде Borland c.
- •Лабораторная работа №2
- •Лабораторная работа №3 Переопределение операций.
- •Лабораторная работа №4 Производные классы.
- •Лабораторная работа №5 Ввод-вывод в потоки.
- •Лабораторная работа №6
- •Курсовой проект
- •Литература
- •Объектно-ориентированное
№
Объектно-ориентированное программирование
Методические указания к лабораторным работам
НОВОСИБИРСК
2001
Министерство образования
Российской Федерации
НОВОСИБИРСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ
№ ____
ОБЪЕКТНО-ОРИЕНТИРОВАННОЕ ПРОГРАММИРОВАНИЕ
Методические указания к лабораторным работам
для студентов II курса АВТФ
(направления 550200 и 552800)
дневной формы обучения
НОВОСИБИРСК
2001
Составитель: А.В. Гунько, канд. техн. наук, доц.
Рецензент Л.Г. Макаревич, ст. преп. каф. ВТ
Работа подготовлена на кафедре автоматики
© Новосибирский государственный технический университет, 2001 г.
ВВЕДЕНИЕ
Объектно-ориентированное программирование (ООП) — это совокупность понятий (класс, объект, инкапсуляция, полиморфизм, наследование) и приемов их использования при проектировании программ, а Си++ - инструмент этой технологии.
В рамках данного курса лабораторных работ предполагается освоение среды программирования, изучение приемов инкапсуляции данных и методов, перегрузки операций, работы с производными классами и виртуальными функциями, потоками ввода - вывода, а также средств и приемов обработки вычислительных операций.
Во всех лабораторных работах используется один и тот же объект, который последовательно приобретает новые методы - функции - члены, конструкторы, перегруженные операции, виртуальные функции, функции работы с потоками, функции обработки исключительных ситуаций.
Для выполнения лабораторных работ предполагается использование среды программирования Borland C++ версии 3.1.
Лабораторная работа №1 Работа с проектами в среде Borland c.
Цель работы
Изучить среду программирования, освоить навыки работы с проектами. Восстановить навыки работы со структурами, освоить приемы использования функций - членов структур.
Краткие теоретические сведения
Технология ООП прежде всего накладывает ограничения на способы представления данных в программе. Любая программа отражает в них состояние физических предметов либо абстрактных понятий (назовем их объектами программирования), для работы с которыми она предназначена. В традиционной технологии варианты представления данных могут быть разными. В противоположность этому все данные об объекте программирования и его связях с другими объектами можно объединить в одну структурированную переменную. В первом приближении ее можно назвать объектом. Кроме того, с объектом связывается набор действий, иначе называемых методами. С точки зрения языка программирования это функции, получающие в качестве обязательного параметра указатель на объект. Технология ООП запрещает работать с объектом иначе, чем через методы, то есть внутренняя структура объекта скрыта от внешнего пользователя. Описание множества однотипных объектов называется классом.
Объект - структурированная переменная, содержащая всю информацию о некотором физическом предмете или реализуемом в программе понятии.
Класс - описание множества таких объектов и выполняемых над ними действий.
Это определение можно проиллюстрировать средствами классического Си:
struct myclass
{ int data1;
...
};
void method1(struct myclass *this,...)
{ ... this->data1 ... }
void method2(struct myclass *this,...)
{ ... this->data1 ... }
struct myclass obj1, obj2;
... method1(&obj1,...); ... method2(&obj2,...);
В синтаксисе классического Си зафиксирован перечень базовых типов данных и операций над ними. Переменные производных типов данных, в том числе и структуры, могут обрабатываться только с использованием выражений (функций). В Си++ класс обладает синтаксическими свойствами базового типа данных:
- класс определяется как структурированный тип данных (struct);
- объекты определяются как переменные класса;
- возможно переопределение и использование стандартных операций языка, имеющих в качестве операндов объекты класса, в виде особых методов в этом классе.
struct matrix
{
// определение структурированного типа matrix и методов,
// реализующих операции matrix * matrix, matrix * double
};
matrix a,b; // Определение переменных -
double dd; // объектов класса matrix
a = a * b; // Использование переопределенных
b = b * dd * 5.0; // операций
Класс - определенный программистом базовый тип данных.
Объект - переменная класса.
Методические указания
При использовании структур целесообразно разделять их описания и описания собственно структурных переменных:
struct date { int day, month, year; };
struct date today;
При вызове функций, изменяющих содержимое структурной переменной, необходимо в качестве параметра использовать указатель на структурную переменную:
struct date *td;
int d=31, m=12;
long y=2000;
set_date(*td, d, m, y);
Для создания проекта необходимо предпринять следующие действия:
Выбрать команду меню «Project»/«Open Project». В имени файла проекта вместо *.prj ввести имя, нажать «OK». Для каждого файла, включаемого в проект, выбрав команду меню «Project»/«Add Item» или нажав клавишу Insert, указать имя файла, включаемого в проект, нажать «Add». По завершении выбора файлов, нажать «Done».
Для описания функций - членов структуры можно включить их внутрь структуры, либо включив в структуру прототип функции, для ее описания использовать оператор видимости:
struct date { int day, month, year;
void set_date(int, int, int);
. . .
};
void date::set_date(int d, int m, int y)
{
today.day=d;
today.month=m;
today.year=y;
}
Для вызова функций - членов структур используется следующий синтаксис:
struct date today;
. . .
today.set_date(d,m,y);
Порядок выполнения работы
Разработать программу для работы со структурами согласно варианту.
Разработать демонстрационную программу, перенеся объявление структурных переменных и вызов соответствующих функций в отдельный модуль, объединить модули в проекте.
Модифицировать программу, используя функции-члены.
Варианты заданий
Вариант 1.
Построить программу для работы со структурой Дата. Программа должна обеспечивать простейшие функции для работы с данными структурами: увеличение/уменьшение на 1 день, ввод значений, вывод значений.
Вариант 2.
Построить программу для работы со структурой Время. Программа должна обеспечивать простейшие функции для работы с данными структурами: увеличение/уменьшение на 1 час, минуту, секунду, ввод значений, вывод значений.
Вариант 3.
Построить программу для работы со структурами - строками. Структура должна включать следующие поля: массив для хранения строки, его длину, время создания строки. Программа должна обеспечивать простейшие функции для работы с данными структурами: изменение строки, вывод строки, нахождение подстроки в строке.
Вариант 4.
Построить программу для работы со структурами - окнами. Структура должна включать соответствующие поля: размер окна, его положение на экране, цвет. Программа должна обеспечивать простейшие функции для работы с данными структурами: отображение окна, удаление окна, изменение цветов.
Вариант 5.
Построить программу для работы со структурами - многочленами. Структура должна включать соответствующие поля: порядок, набор коэффициентов. Программа должна обеспечивать простейшие функции для работы с данными структурами: вычисление значения многочлена для данного параметра, вывод многочлена в удобной форме.
Вариант 6.
Построить программу для работы со структурами - квадратными матрицами. Структура должна включать соответствующие поля: порядок, набор коэффициентов. Программа должна обеспечивать простейшие функции для работы с данными структурами: ввод матрицы, транспонирование матрицы, вывод матрицы в удобной форме.
Вариант 7.
Построить программу для работы со структурами - правильными дробями. Структура должна включать соответствующие поля: числитель, знаменатель. Программа должна обеспечивать простейшие функции для работы с данными структурами: сложение, вычитание, умножение, деление, вывод дроби в удобной форме.
Вариант 8.
Построить программу для работы со структурами - комплексными числами. Структура должна включать соответствующие поля: вещественную и мнимую часть числа. Программа должна обеспечивать простейшие функции для работы с данными структурами: сложение, вычитание, умножение, деление, вывод числа в удобной форме.
Контрольные вопросы
Классы и объекты
Методы
Описание и вызов методов класса