Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
67
Добавлен:
11.04.2015
Размер:
209.92 Кб
Скачать

Объектно-ориентированное программирование

Методические указания к лабораторным работам

НОВОСИБИРСК

2001

Министерство образования

Российской Федерации

НОВОСИБИРСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ

____

ОБЪЕКТНО-ОРИЕНТИРОВАННОЕ ПРОГРАММИРОВАНИЕ

Методические указания к лабораторным работам

для студентов II курса АВТФ

(направления 550200 и 552800)

дневной формы обучения

НОВОСИБИРСК

2001

Составитель: А.В. Гунько, канд. техн. наук, доц.

Рецензент Л.Г. Макаревич, ст. преп. каф. ВТ

Работа подготовлена на кафедре автоматики

© Новосибирский государственный технический университет, 2001 г.

ВВЕДЕНИЕ

Объектно-ориентированное программирование (ООП) — это совокупность понятий (класс, объект, инкапсуляция, полиморфизм, наследование) и приемов их использования при проектировании программ, а Си++ - инструмент этой технологии.

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

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

Для выполнения лабораторных работ предполагается использование среды программирования Borland C++ версии 3.1.

Лабораторная работа №1 Работа с проектами в среде Borland c.

  1. Цель работы

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

  1. Краткие теоретические сведения

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

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

Класс - описание множества таких объектов и выполняемых над ними действий.

Это определение можно проиллюстрировать средствами классического Си:

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; // операций

Класс - определенный программистом базовый тип данных.

Объект - переменная класса.

  1. Методические указания

    1. При использовании структур целесообразно разделять их описания и описания собственно структурных переменных:

struct date { int day, month, year; };

struct date today;

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

struct date *td;

int d=31, m=12;

long y=2000;

set_date(*td, d, m, y);

    1. Для создания проекта необходимо предпринять следующие действия:

Выбрать команду меню «Project»/«Open Project». В имени файла проекта вместо *.prj ввести имя, нажать «OK». Для каждого файла, включаемого в проект, выбрав команду меню «Project»/«Add Item» или нажав клавишу Insert, указать имя файла, включаемого в проект, нажать «Add». По завершении выбора файлов, нажать «Done».

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

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;

}

    1. Для вызова функций - членов структур используется следующий синтаксис:

struct date today;

. . .

today.set_date(d,m,y);

  1. Порядок выполнения работы

    1. Разработать программу для работы со структурами согласно варианту.

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

    3. Модифицировать программу, используя функции-члены.

  2. Варианты заданий

Вариант 1.

Построить программу для работы со структурой Дата. Программа должна обеспечивать простейшие функции для работы с данными структурами: увеличение/уменьшение на 1 день, ввод значений, вывод значений.

Вариант 2.

Построить программу для работы со структурой Время. Программа должна обеспечивать простейшие функции для работы с данными структурами: увеличение/уменьшение на 1 час, минуту, секунду, ввод значений, вывод значений.

Вариант 3.

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

Вариант 4.

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

Вариант 5.

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

Вариант 6.

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

Вариант 7.

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

Вариант 8.

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

  1. Контрольные вопросы

    1. Классы и объекты

    2. Методы

    3. Описание и вызов методов класса

Соседние файлы в папке Программирование