Объектная декомпозиция приложения



Московский государственный технический университет

имени Н.Э. Баумана

Факультет Информатика и системы управления

Кафедра Компьютерные системы и сети

 

Г.С. Иванова

 

 

Создание многооконных приложений

с Использованием библиотеки Qt

 

Учебное пособие по дисциплине «Практикум по программированию»

для студентов 1 курса специальностей ИУ6 и АК5

 

 

МОСКВА                            2013

Аннотация

Настоящее пособие содержит описание наиболее часто используемых при разработке многооконных приложений полей и методов классов библиотеки Qt на примере разработки приложения Записная книжка. Показано, как разрабатывается интерфейс, продумывается объектная декомпозиция, определяется набор сообщений, а затем на этой основе создаются интерфейсные классы программы, как строятся классы, обеспечивающие ввод, вывод, а также хранение данных на жестком диске. Продемонстрирован способ организации вывода результатов в виде таблицы в окно специальной формы. Кроме этого рассмотрен один из вариантов создания класса, обеспечивающего взаимодействие программы и данных, хранящихся на жестком диске. 

Пособие предназначено для студентов кафедр ИУ6 и АК5, выполняющих третью часть практикума по программированию с использованием классов библиотеки Qt.

Введение

Как уже упоминалось ранее библиотека Qt – профессиональная библиотека, включающая не только классы для создания виджетов. Она также содержит большое количество классов для реализации сложных структур данных, таких как списки и деревья, классы для работы с базами данных, классы для работы с файлами и т. п.

Описывать все множество классов Qt в рамках пособия нецелесообразно, поскольку с этими описаниями можно ознакомиться, используя специальное приложение Qt Assistant, посвященные библиотеке Qt сайты в Интернете или соответствующую литературу [2]. Вместо этого использование перечисленных в заголовке параграфа классов продемонстрируем на примере создания несложного многооконного приложения «Записная книжка».

 

Проектирование многооконного приложения

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

· ввод данных об абоненте: фамилия и/или имя и телефон;

· хранение данных на жестком диске;

· вывод всех хранящихся данных;

· поиск данных по фамилии и/или имени.

 

Разработка форм интерфейса

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

Рисунок 1 – Формы интерфейса приложения Записная книжка:

а – главная форма приложения; б – форма добавления данных; в – форма запроса на поиск данных; г – форма вывода результатов поиска или всего содержимого файла

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

Разработка диаграммы состояний интерфейса

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

Условные обозначения:

1 – нажатие кнопки Добавить;

2 – нажатие кнопки Показать;

3 – нажатие кнопки Найти;

4 – нажатие кнопки Выход;

5 – нажатие кнопки Назад:

6 – нажатие кнопки Найти после ввода ключей [Записи найдены];

7 – нажатие кнопки Найти после ввода ключей [Записи не найдены];

8 - нажатие кнопки OK

Рисунок 2 – Диаграмма состояний интерфейса приложения Записная книжка

Объектная декомпозиция приложения

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

Рисунок 3 – Объектная декомпозиция приложения Записная книжка

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

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

В соответствии с внешним видом форм приложения,  изображенных на рисунке 1, объекты Форма Вывод всех записей и Форма Вывод результатов поиска можно проектировать как объекты одного класса. Таким образом  всего необходимо разработать 5 классов:

· класс главной формы;

· класс формы добавления записей;

· класс формы вывода записей на экран;

· класс формы поиска;

· класс данных.

Компоновка приложения

Как и ранее при разработке оконных приложений на языке С++ при компоновке приложения целесообразно поместить описание каждого класса в свой модуль, состоящий из двух файлов:

· файла с расширением .h, содержащего объявление класса;

· файла с расширение .cpp, содержащего описание методов класса.

Файл основной программы соответственно назовем main.cpp.


Дата добавления: 2018-04-04; просмотров: 1414; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!