Основные принципы архитектуры документ-вид
Основные принципы архитектуры документ-вид Концепция архитектуры документ-вид состоит в отделении хранения и обработки данных приложения от процесса отображения этих данных пользователю. Приложения, построенные на этой архитектуре, обладают более высокой внутренней логикой, их легче поддерживать и модифицировать. Библиотека классов MFC поддерживает создание остова приложения с помощью AppWizard, как использующего архитектуру документ-вид, так и не использующего ее. Тем не менее, в случае разработки достаточно большого приложения использование этой архитектуры предпочтительно. AppWizard позволяет создавать каркас приложения, построенного на архитектуре документ-вид, как с одним документом, так и со многими документами. Приложение с одним документом может содержать в каждый момент времени только один открытый документ, в случае же многодокументного приложения возможно открытие сразу нескольких документов одновременно. Примером приложения имеющего ногодокументный интерфейс является Microsoft Word, примером приложения с одним документом является программа Notepad (блокнот). Приложение MFC на основе документ-вид с одним документом При создании с помощью AppWizard приложения на основе одного документа, в нем создается специальный класс Документа, наследуемый от CDocument, в котором будут храниться данные, используемые приложением, и имеются методы для их сохранения на диск и восстановления с диска. Процесс сохранения данных документа на диск называется сериализацией, а восстановления документа с диска – десериализацией. Также AppWizard создает специальный класс Вида для отображения данных. Выбор конкретного типа этого класса осуществляется пользователем, но все эти классы наследуются от класса CView, имеющего базовые методы для отображения документа и взаимодействия с пользователем. В каркас приложения входит кроме того, класс Приложения, наследуемый от CWinApp, в котором определяется функция InitInstance, являющаяся точкой входа в приложение, и класс Рамки, ответственный за отображение элементов управления окна приложения. Отображение данных пользователю, обычно осуществляется в методе OnDraw класса Вид, который является аналогом обработчика сообщения WM_PAINT для стандартного приложения Windows API. Для взаимодействия с классом Документа, в классе Вид имеется специальный метод GetDocument, который возвращает указатель на объект Документа. Используя этот указатель, можно выводить данные документа в методе OnDraw.ClassWizard позволяет создавать обработчики для различных типов сообщений, как правило, обработчики этих сообщений помещаются в класс Вида. Используя указатель на объект Документа, эти обработчики могут менять данные приложения.Для ериализации и десериализации данных на диске в классе Документа, имеется метод Serialize, который использует 2. Принципы и составные части объектного подхода (Билет 3) Абстракция - вещь полезная, но всегда, кроме самых простых ситуаций, число абстракций в системе намного превышает наши умственные возможности. Инкапсуляция позволяет в какой-то степени устранить это препятствие, убрав из поля зрения внутреннее содержание абстракций. Модульность также упрощает задачу, объединяя логически связанные абстракции в группы. Но этого оказывается недостаточно.
1. Ален Голуб (Билет4) Ален Голуб предлагает необходимый набор пояснений, советов и технических приемов с целью помочь вам полностью использовать возможности этих чрезвычайно мощных языков. Голуб рассматривает универсальные правила, форматирование и правильную организацию программ перед тем, как углубиться в такие основополагающие вопросы, как: ♦ Практические способы организации и написания сопровождаемого кода. ♦ Объектно-ориентированное программирование и методы абстракции данных. ♦ Как избежать проблем, специфических для Си и Си++.
2. Буч – сложность - структура сложных систем (БИЛЕТ 4) Как говорит Брукс, "сложность программного обеспечения - отнюдь не случайное его свойство" [3]. Сложность вызывается четырьмя основными причинами: · сложностью реальной предметной области, из которой исходит заказ на разработку; · трудностью управления процессом разработки; · необходимостью обеспечить достаточную гибкость программы; · неудовлетворительными способами описания поведения больших дискретных систем. · Структура персонального компьютера. Персональный компьютер (ПК) - прибор умеренной сложности. Большинство ПК состоит из одних и тех же основных элементов: системной платы, монитора, клавиатуры и устройства внешней памяти какого-либо типа (гибкого или жесткого диска). Мы можем взять любую из этих частей и разложить ее в свою очередь на составляющие. Системная плата, например, содержит оперативную память, центральный процессор (ЦП) и шину, к которой подключены периферийные устройства. Каждую из этих частей можно также разложить на составляющие: ЦП состоит из регистров и схем управления, которые сами состоят из еще более простых деталей: диодов, транзисторов и т.д.Это пример сложной иерархической системы. Персональный компьютер нормально работает благодаря четкому совместному функционированию всех его составных частей. Вместе эти части образуют логическое целое. Мы можем понять, как работает компьютер, только потому, что можем рассматривать отдельно каждую его составляющую. Таким образом, можно изучать устройства монитора и жесткого диска независимо друг от друга. Аналогично можно изучать арифметическую часть ЦП, не рассматривая при этом подсистему памяти.Дело не только в том, что сложная система ПК иерархична, но в том, что уровни этой иерархии представляют различные уровни абстракции, причем один надстроен над другим и каждый может быть рассмотрен (понят) отдельно. На каждом уровне абстракции мы находим набор устройств, которые совместно обеспечивают некоторые функции более высокого уровня, и выбираем уровень абстракции, исходя из наших специфических потребностей. Например, пытаясь исследовать проблему синхронизации обращений к памяти, можно оставаться на уровне логических элементов компьютера, но этот уровень абстракции не подходит при поиске ошибки в прикладной программе, работающей с электронными таблицами. · Структура растений и животных. · Структура вещества. · Структура социальных институтов
5.1. Алан Голуб – Правила программирования на СИ++ и примеры советов с пояснениямия (Билет 5) Советы: 2.1. Не решайте проблем, которых не существует 6.1. Начинайте с комментариев 7. Читайте код (Читатель может найти ошибки, которые вы не увидели, и подать мысль, как улучшить код) 13. Заказчик всегда прав 8. Разбивайте сложные проблемы на задачи меньшего размера 20. Пустые потери времени(Если вы не можете решить неподатливую проблему, то займитесь на некоторое время чем-либо другим.) 30. Используйте аккуратные столбцы везде, где можно 44.1. Не используйте в качестве имен тарабарщину 74. Динамическая память — дорогое удовольствие С++ 90. Не смешивайте объектно-ориентированное и "структурное" проектирование 90.1. Если проект не ориетирован на объекты, то используйте Си 91. Рассчитывайте потратить больше времени на проектирование и меньше на разработку 92. Библиотеки классов Си++ обычно не могут быть использованы неискушенными пользователями 111. Откажитесь от выражений языка Си, когда программируете на Си++ 117. Избегайте дружественных классов(когда вы что-либо меняете в классе, который предоставляет дружественный статус, то должны также проверить каждую функцию в дружественном классе, чтобы убедиться, что она еще работает.) 120. Ссылочные аргументы всегда должны быть константами 137. Виртуальная функция не является виртуальной, если вызывается из конструктора или деструктора 146. Используйте перегрузку операций только для определения операций, имеющих аналог в Си 152. Используйте new/delete вместо malloc()/free() 159. Назначение исключений — не быть пойманными
2.Буч – сложность - о проектировании сложных систем (БИЛЕТ 5)
|