Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатика
ИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханика
ОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторика
СоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансы
ХимияЧерчениеЭкологияЭкономикаЭлектроника

Лабораторная работа №1. Использование «утверждений» при разработке устойчивых программных систем.

Читайте также:
  1. Credits / В разработке участвовали
  2. D. Использование несколькими пользователями.
  3. I. Работа с окнами
  4. I. ЧТО ЕСТЬ ДИПЛОМНАЯ РАБОТА И ЗАЧЕМ ОНА
  5. I.3. Чем дипломная работа может пригодиться после университета
  6. II. Использование различных типов фотоплёнок.
  7. II. Психокоррекционная и развивающая работа

 

Задание. Используя технологию объектно-ориентированного проектирования решить задачу разработки проблемно-ориентированного программного обеспечения (ПО). Средствами языка С++ разработать класс, предназначенный для хранения информации об некотором объекте информатизации (автоматизации). Все члены данных (атрибуты класса) должны быть определены в «закрытой» секции. Для всех вариантов заданий обязательным является требование о наличии в классе членов-данных, отвечающих за хранение информации о дате и времени «создания» объекта предметной области, подлежащего автоматизации. Для разрабатываемого класса определить следующие конструкторы: конструктор по умолчания, перегруженный конструктор, конструктор копирования. Открытый интерфейс класса должен как минимум содержать следующие методы, предназначенные для работы с атрибутами класса: get (), set (), print (). Кроме этого, необходимо определить дружественные перегруженные операции operator >> и operator << для ввода/вывода объектов в стандартные символьные потоки (Character OUTput, Character INput).

Создать две программы, демонстрирующие механизмы использование массива объектов экземпляров класса (динамический и статический массивы). Например:

/* ---------- класс, определенный пользователем ---------- */

class MyClass {...};

 

MyClass MyStorage{ /* Класс «Хранилище» */

private:

enum{SIZE=1024};

MyClass Arr[SIZE]; /* статический массив экземпляров объектов класса */

};

 

MyClass MyStorage{ /* Класс «Хранилище» */

private:

int SIZE;

MyClass* Arr; /* динамический массив … */

};

 

Объяснить, какие конструкторы были использованы в процессе создания массивом экземпляров класса. Предусмотреть программные средства контроля ошибок типа: передача некорректного значения индекса элемента массива, ошибки выделения памяти из «кучи». В качестве метода защитного программирования использовать «утверждения» (assertion). Для программ разработать тестовые примеры.

 

class MyClass {... }; // Класс для представления «объектов»

class MyStorage {... }; // Класс «хранилище»

int main() {

set_new_handler(); // Установить собственный обработчик

// «ошибок» выделения памяти в куче

MyClass* p = NULL;

int num_objects, i;

// ввод количества экземпляров «объектов»

cin >> num_objects;

MyStorage stash(num_objects);

// Загрузить экземпляры класса MyClass

for(i=0; i<num_objects; i++) {

p=new MyClass();

p.set();

stash.append(p);

}

// Выполнить обработку данных, затем удалить объекты…

for(i=0; i<num_objects; i++) {

stash[i]->print(); // stash.at(i)->print();

...

}

stash.clear();

}

 

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

1. Создать «базу данных» (БД) для хранения экземпляров классов, соответствующих «объектам автоматизации».

2. Сохранить созданную в оперативной памяти, адресном пространстве приложения, БД в текстовом/бинарном файле. Предложить возможность сохранения файла в CSV -формате либо другом, «OpenDocumen»t -совместимом формате.

3. Загрузить БД из текстового/бинарного файла.

В контексте взаимодействия с БД должны поддерживаться следующие «прецеденты»:

1. Создать новую запись и задать для неё значения атрибут.

2. Сохранить новую запись в БД, то есть включить ее состав структуры хранения записей.

3. «Вставить» сохраняемую запись в БД в заданную позицию.

4. Вывести список существующих в БД записей в формате «номер записи: список атрибут». Если вся совокупность записей, сохраненных в БД, при выводе не умещаются на экране компьютера, в окне терминала, то необходимо организовать постраничный вывод.

5. Найти запись в БД по значению индекса, номера в массиве экземпляров класса объектов MyClass, и вывести ее на экран в формате «номер записи: список атрибут».

6. Редактировать атрибуты существующей в БД записи. Для указания записи пользователь вводит ее номер.

7. Очистить БД, то есть удалить из нее все записи.

8. Удалить из БД часть записей, указав значения диапазона индексов для записей подлежащих удалению. После удаления записей произвести «дефрагментацию» хранилища данных.

Общие требования к структуре класса MyStorage и его интерфейсам:

1. Создание динамического либо статического массива экземпляров объектов класса MyClass.

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

3. В случае, когда в классе MyStorage используется динамический массив экземпляров класса MyClass, предусмотреть контроль над процессом освобождения ресурсов.

4. Для обработки программных ошибок использовать макрос assert (), входящий в состав стандартной библиотеки языка С.

 


Дата добавления: 2015-08-18; просмотров: 98 | Нарушение авторских прав


Читайте в этой же книге: Лабораторная работа №3 Программирование с использованием шаблонов | К ЛАБОРАТОРНЫМ РАБОТАМ | Полезные и часто используемые команды ОС GNU/Linux |
<== предыдущая страница | следующая страница ==>
Лабораторный практикум| Лабораторная работа №2. Использование «исключений» при разработке устойчивых программных систем.

mybiblioteka.su - 2015-2024 год. (0.006 сек.)