Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методические указания по курсовой АЯИП (2 курс,....doc
Скачиваний:
8
Добавлен:
20.04.2019
Размер:
402.43 Кб
Скачать

4.6. Лабораторная работа 6.

Шаблоны.

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

Общие сведения.

В языке С++ шаблоны реализованы с использованием ключевого слова template.

Параметризованная функция описывается следующим образом: template <список параметров> функция. Список параметров задается с использованием ключевого слова typename или class.

Параметризованный класс описывается подобно функции: template <список параметров> class объявление класса.

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

Лабораторное задание

Для указанного в лабораторной работе №/1 базового класса реализовать параметризованную функцию сравнения двух объектов класса на больше, меньше или равно.

Для указанного в лабораторной работе №/1 базового класса реализовать один (или более) параметризованный класс, реализующий структуру данных в соответствии с лабораторным заданием. Параметризованный класс должен поддерживать набор базовых операций, применяемый к указанной структуре данных.

Все структуры — динамические.

Программа должна выполнить следующее:

– заполнить структуру данных;

– вывести структуру данных на экран;

– удалить все элементы из структуры данных.

Варианты лабораторных заданий

  1. Массив. Минимальный набор операций: получение значения элемента по индексу, установка значения элемента по индексу.

  2. Список. Минимальный набор операций: добавление элемента (в начало, середину и конец списка), удаление элемента.

  3. Очередь. Минимальный набор операций: вталкивание элемента, выталкивание элемента.

  4. Стек. Минимальный набор операций: вталкивание элемента, выталкивание элемента.

  5. Дек. Минимальный набор операций: вталкивание элемента, выталкивание элемента.

  6. Циклический список. Минимальный набор операций: вталкивание элемента, выталкивание элемента.

  7. Циклическая очередь. Минимальный набор операций: вталкивание элемента, выталкивание элемента.

  8. Циклический дек. Минимальный набор операций: вталкивание элемента, выталкивание элемента.

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

  1. Каково назначение шаблонов?

  2. Каким образом описывается тип данных, для которого реализуется шаблон?

  3. Допускается ли описание нескольких типов данных для одной параметризованной функции или одного параметризованного класса?

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

4.7. Лабораторная работа 7.

Библиотека STL.

Цель работы: изучение стандартной библиотеки шаблонов STL (Standard Template Library).

Общие сведения.

Библиотека STL включает набор параметризованных классов для работы со структурами данных. В состав библиотеки входят такие классы как:

string/wstring – классы для работы с Ansi и Unicode строками. Заголовочные файлы <string>/<wstring>.

vector – вектор. Класс поддержки динамического массива. Заголовочный файл <vector>.

list – список. Класс поддержки динамического списка. Заголовочный файл <list>.

map – словарь. Класс поддержки динамического отсортированного массива уникальных ключей и связанного с каждым ключом значения. Заголовочный файл <map>.

Для подключения библиотеки достаточно в исходном тексте программы описать включение требуемого заголовочного файла. Например: #include <list>.

Для прохождения по всем элементам структуры данных используются итераторы – iterator.

Лабораторное задание

Для указанного в лабораторной работе №/1 базового класса реализовать структуру данных в соответствии с лабораторным заданием. В базовом классе все строковые данные представить с использованием классов string/wstring.

Программа должна выполнить следующее:

– заполнить структуру данных;

– вывести структуру данных на экран;

– удалить все элементы из структуры данных.

Варианты лабораторных заданий

  1. vector

  2. list

  3. deque

  4. set

  5. multiset

  6. map

  7. multimap

  8. hash_set

  9. hash_multiset

  10. hash_map

  11. hash_multimap

  12. stack

  13. queue

  14. priority_queue

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

  1. Каково назначение библиотеки STL?

  2. Какие компоненты включает библиотека STL?

  3. Какие типы контейнеров включает библиотека STL?

  4. Что такое итератор?

4.8. Лабораторная работа 8.

Разработка приложения Dialog Based.

Цель работы: изучение принципов создания проекта под управлением AppWizard и разработки программ с использованием каркаса приложений MFC и архитектурой Dialog Based.

Общие сведения.

При создании проекта (например, с именем MyPrg), основанного на использовании диалогового окна (Dialog Based), автоматически создаются два класса CMyPrgApp (класс приложения) и CMyPrgDlg (класс диалога). При размещении в диалоговом окне элементов управления с использованием редактора диалога (Dialog Editor) и определении их свойств и поведения класс диалога может расширяться, и могут создаваться новые классы. Для создания элементов управления в виде кнопок (Button), флажков (CheckBox), переключателей (RadioButton), списков (List), редактируемых полей (EditBox), счетчиков (SpinEdit), бегунков (Slider) и т.д. используется панель Control Toolbar.

Лабораторное задание.

Разработать программу из л/р 5 с созданием проекта типа MFC AppWizard (exe) в виде приложения типа Dialog Based. В программе требуется создать все элементы управления, необходимые для реализации программой своих функций.

Варианты лабораторных заданий.

Варианты заданий взять из л/р 5.

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

  1. В чем заключается особенность проекта типа MFC AppWizard (exe)?

  2. Каковы особенности приложения типа Dialog Based?

  3. Каково назначение класса приложения?

  4. Найдите в исходном тексте программы код, реализующий функции элементов управления.

4.9. Лабораторная работа 9.

Разработка приложения Single Document.

Цель работы: изучение принципов создания проекта под управлением AppWizard и разработки программ с использованием каркаса приложений MFC и архитектурой «документ-представление» (DocView) с интерфейсом SDI (Single Document Interface).

Общие сведения.

В программе используются объекты трех типов:

  • Объекты, предназначенные для хранения текстовой и графической информации (например, текст и параметры его форматирования, или цвет, стиль, форма, толщина пера вычерчивания графических объектов, а также сами графические объекты). Это документная часть программы (или, просто, документ). Ее назначение – хранить параметры изображения для его повторной перерисовки.

  • Объекты, предназначенные для отображения документа в клиентской области окна. Такие объекты обеспечивают представление (отрисовку) документа.

  • Объекты-контроллеры – реагируют на ввод пользователя. Их функции Windows выполняет автоматически с помощью системы передачи и обработки сообщений.

При создании проекта, например, с именем MyPrg документ реализуется с помощью класса CMyPrgDoc. Для создания и хранения метафайла используется класс CMetaFileDC. Метафайл – это просто структура данных, содержащая команды интерфейса GDI. В метафайл должна быть записана каждая операция GDI. Если образ требуется нарисовать заново остается лишь воспроизвести метафайл в методе OnPaint().

Для представления (отображения) документа предназначен класс CMyPrgView, часто включающий методы OnPaint() и OnDraw() для полной отрисовки документа и методы OnLButtonDown(), OnMouseMove(), OnLButtonUp(), для отображения документа в процессе его формирования, а также дополнительные методы, определяемые пользователем.

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

При работе с приложениями типа SDI используются классы:

class CFrameWnd:public CWnd //base class for SDI and other frame

windows

class CDocTemplate:public CCmdTarget //creates documents

class CDocument:public CCmdTarget //the main document

data abstraction

Лабораторное задание.

Работа выполняется на базе л/р 8. Разработать программу, выполняющую функции предыдущей программы, в виде приложения SDI. Необходимо, кроме того, создать меню и панель инструментов, реализующие как стандартные, так и специфические для варианта задания функции. Предусмотреть сохранение документа в файл и его чтение из файла, а также функционирование строки состояния.

Варианты лабораторных заданий.

Варианты заданий взять из л/р 5.

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

  1. В чем заключается особенность архитектуры «документ-представление»?

  2. Каковы преимущества архитектуры DocView по сравнению с архитектурой приложений Dialog Based?

  3. Что понимается под термином «каркас приложения»?

  4. Каково назначение класса CMetaFileDC?

4.10. Лабораторная работа 10.

Разработка приложения Multiple Document.

Цель работы: изучение особенностей создания приложений с использованием каркаса приложения MFC и архитектурой «документ-представление» (DocView) с интерфейсом MDI (Multiple Document Interface).

Общие сведения.

Программы с многодокументным интерфейсом (MDI) могут открывать несколько документов одновременно. У таких программ имеется одно главное окно и несколько второстепенных дочерних окон, в которых появляются документы. В приложении MDI каждый документ автоматически имеет по меньшей мере одно представление. Для доступа к каждому документу и его окнам используется механизм указателей и ссылок. MDI-приложение использует следующие основные классы MFC (в дополнение к классам SDI-приложения):

class CMDIFrameWnd : public CFrameWnd;

class CMDIChildWnd : public CFrameWnd;

class CMiniFrameWnd : public CFrameWnd;

class CMultiDocTemplate : public CDocTemplate.