Пишем игру Lines с использованием MFC

Домой Наверх Предыдущий Следующий

Архитектура Документ-Вид

Вы, конечно, не раз работали с Word'ом и знаете, что в этой программе с одним и тем же документом Вы можете работать в разных видах. Например, если Вы пишете нечто структурированное, с главами, подглавами, разделами, подразделами и т. п. (например диссертацию ;)), то удобно сначала напечатать общий план Вашего труда в режиме "Структуры документа". Т. е. Вы сначала пишете названия глав, разделов и т. п., без написания собственно текста.

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

И после того, как Вы напечатали Ваш труд, наступает последний этап - форматирование страниц. На этом этапе Вас интересует уже не текст как таковой, а как он расположен на странице: как расположены иллюстрации, нет ли висячих строк и т. п. На этом этапе Вы, как правило, переходите в другой режим просмотра Вашего файла - а именно в режим "Разметки страницы".

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

И надо сказать, что это действительно довольно-таки удачная идея - отделить содержание от представления, документ от его вида. При этом каждая часть отвечает за свою задачу. Документ ответственен за хранение данных, за сохранение их на диск и чтение с диска (и за некоторые другие задачи). Вид же служит для показа данных на экране. Одному документу при этом может при этом соответствовать несколько видов.

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

И в качестве последнего примера представьте себе, что Вы пишете программу "Часы", назначение которой - показывать текущее время. При этом понятно, что в объекте "документ" Вашей программы будет храниться текущее время. Видов же у документа может быть несколько - например Вы можете показывать Ваши часики в виде традиционного циферблата со стрелками или же другим способом - в виде цифр (как на электронном табло).

При этом и для документа, и для его вида создаются отдельные классы. Класс нашего документа будет производным от класса CDocument, а вид - от класса CView (прямо или через другие классы).

Если Вы поняли предыдущие абзацы, то Вы поняли суть архитектуры "Документ-Вид". Разные же детали этой архитектуры появятся позже. Если не поняли, то перечитайте еще раз.

Отметим пока, что архитектура "Документ-Вид" применима к документам с SDI и MDI интерфейсами. Для третьего распространённого интерфейса - приложений на основе диалоговых окон - такая архитектура не применяется.

Впрочем, если Вам такая архитектура не по душе (например, для какого-нибудь мелкого проекта, где проще обойтись без неё), то AppWizard, с помощью которого Вы строите заготовку для программы, позволяет от этой архитектуры отказаться.

Переходим теперь к практической части.

Далее

© Шмидт О.Ю.

hidden/visible

Используются технологии uCoz