Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ТП_ЛабРаботы.doc
Скачиваний:
13
Добавлен:
28.09.2019
Размер:
716.8 Кб
Скачать

Методика выполнения

  1. Разработайте модель организации данных и представьте ее в виде рисунка. Изобразите на схеме выполнение операции перестановки элементов при сортировке массива. Сделайте то же самое для статического массива. Сравните способы организации данных.

  2. Запустите MS Visual Studio и откройте проект консольного приложения из работы №3.

  3. Измените определение переменной, предназначенной для хранения данных в памяти программы.

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

  5. Методом пошаговой детализации разработайте функции поиска, редактирования и сортировки записей. Используйте при этом разработанную модель организации данных и схему выполнения операций.

Содержание отчета

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

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

  1. Что такое указатель?

  2. Каковы основные операции с указателями?

  3. Что такое адресная арифметика?

  4. Как используются указатели в статических массивах?

  5. Какой тип данных имеет идентификатор трехмерного статического массива целых чисел?

  6. Что представляет собой двумерный динамический массив?

  7. Как создаются и уничтожаются динамические массивы?

  8. Как создать динамический массив с переменным количеством элементов в каждой строке?

Лабораторная работа №5 использование объектно-ориентированного программирования в разработке приложений

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

Задание

  1. Разработать на языке С++ 4-ю версию консольного приложение для хранения и отображения сведений об объектах некоторого вида (варианты указаны в работе №2). Объекты в программе представить экземплярами класса.

  2. Для представления набора объектов в оперативной памяти использовать динамический массив (массив указателей на объекты класса).

  3. Обеспечить выполнение следующих операций:

    1. Ввод сведений об объекте.

    2. Вывод данных об объектах на экран в виде таблицы.

    3. Вставка объектов в массив.

    4. Удаление объектов из массива.

    5. Сортировка объектов в массиве.

    6. Поиск объекта в массиве.

    7. Редактирование сведений об объекте.

    8. Сохранение сведений об объектах в бинарном файле.

    9. Загрузка данных из бинарного файла в массив.

  4. Функции консольного и файлового ввода/ вывода и редактирования реализовать в виде методов класса.

  5. Переопределить для разработанного класса операторы << и >> для консольного ввода/вывода.

Краткая теория

Понятие класса в C++

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

В общем виде схема описания класса выглядит следующим образом.

class Class_Name {

private:

// Здесь расположены данные и методы, которые недоступны извне обычным,

// прямым способом. Они доступны только в методах класса Class_Name

protected:

// Здесь расположены данные и методы, недоступные прямо.

// Они доступны в методах класса и в методах производных классов

public:

// Здесь расположены данные и методы, доступные обычным,

// прямым способом из внешних процедур

};

При отсутствии описателей члены класса по умолчанию имеют тип private.

class А {

public:

char* Name;

uint Age;

void method ()

{

printf ("\nOk");

}

};

void main()

{

//----- Возможные объявления переменных класса А ---------//

A obj; // Объект класса А

А *р; // Указатель на объекты класса А

A &ref = obj; // Ссылка на класс А

А аrrау[7]; // Массив объектов класса А

A func(); // Функция, возвращающая объект класса А

p=&obj; // р указывает на obj

//----- Обращение к элементам класса ---------//

obj.Age=21; // Прямое обращение к полю данных

p->Name=new char[25]; // То же, но с помощью указателя obj.method(); // Сообщение объекту

(&obj)->method(); //То же, но с помощью адреса

p->method(); // То же, но с помощью указателя }

В операторе (&obj)->method() скобки обязательны, так как приоритет операции выбора с помощью указателя выше, чем операции взятия адреса.

Язык C++ временно допускает неполную декларацию класса:

class А; //Неполная декларация класса А

class В { А *ра; }; // Указатель на класс А — член класса В

class А { В *pb;}; // Класс А декларирован полностью

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

сlass MyClass{

…. // Объявления переменных и методов

float func();

};

float MyClass::func() {

…. // операторы метода

return x;

}