Студопедия Главная Случайная страница Обратная связь

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

Основные принципы архитектуры документ-вид





Основные принципы архитектуры документ-вид

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

AppWizard позволяет создавать каркас приложения, построенного на архитектуре документ-вид, как с одним документом, так и со многими документами. Приложение с одним документом может содержать в каждый момент времени только один открытый документ, в случае же многодокументного приложения возможно открытие сразу нескольких документов одновременно. Примером приложения имеющего ногодокументный интерфейс является Microsoft Word, примером приложения с одним документом является программа Notepad (блокнот). Приложение MFC на основе документ-вид с одним документом

При создании с помощью AppWizard приложения на основе одного документа, в нем создается специальный класс Документа, наследуемый от CDocument, в котором будут храниться данные, используемые приложением, и имеются методы для их сохранения на диск и восстановления с диска. Процесс сохранения данных документа на диск называется сериализацией, а восстановления документа с диска – десериализацией. Также AppWizard создает специальный класс Вида для отображения данных. Выбор конкретного типа этого класса осуществляется пользователем, но все эти классы наследуются от класса CView, имеющего базовые методы для отображения документа и взаимодействия с пользователем. В каркас приложения входит кроме того, класс Приложения, наследуемый от CWinApp, в котором определяется функция InitInstance, являющаяся точкой входа в приложение, и класс Рамки, ответственный за отображение элементов управления окна приложения.

Отображение данных пользователю, обычно осуществляется в методе OnDraw класса Вид, который является аналогом обработчика сообщения WM_PAINT для стандартного приложения Windows API. Для взаимодействия с классом Документа, в классе Вид имеется специальный метод GetDocument, который возвращает указатель на объект Документа. Используя этот указатель, можно выводить данные документа в методе OnDraw.ClassWizard позволяет создавать обработчики для различных типов сообщений, как правило, обработчики этих сообщений помещаются в класс Вида. Используя указатель на объект Документа, эти обработчики могут менять данные приложения.Для ериализации и десериализации данных на диске в классе Документа, имеется метод Serialize, который использует

2. Принципы и составные части объектного подхода (Билет 3)

Абстракция - вещь полезная, но всегда, кроме самых простых ситуаций, число абстракций в системе намного превышает наши умственные возможности. Инкапсуляция позволяет в какой-то степени устранить это препятствие, убрав из поля зрения внутреннее содержание абстракций. Модульность также упрощает задачу, объединяя логически связанные абстракции в группы. Но этого оказывается недостаточно.
Значительное упрощение в понимании сложных задач достигается за счет образования из абстракций иерархической структуры. Определим иерархию следующим образом:
Иерархия - это упорядочение абстракций, расположение их по уровням.
Основными видами иерархических структур применительно к сложным системам являются структура классов (иерархия "is-a") и структура объектов (иерархия "part of").
Примеры иерархии: одиночное наследование. Важным элементом объектно-ориентированных систем и основным видом иерархии "is-a" является упоминавшаяся выше концепция наследования. Наследование означает такое отношение между классами (отношение родитель/потомок), когда один класс заимствует структурную или функциональную часть одного или нескольких других классов (соответственно, одиночное и множественное наследование). Иными словами, наследование создает такую иерархию абстракций, в которой подклассы наследуют строение от одного или нескольких суперклассов. Часто подкласс достраивает или переписывает компоненты вышестоящего класса.
Семантически, наследование описывает отношение типа "is-a". Например, медведь есть млекопитающее, дом есть недвижимость и "быстрая сортировка" есть сортирующий алгоритм. Таким образом, наследование порождает иерархию "обобщение-специализация", в которой подкласс представляет собой специализированный частный случай своего суперкласса.


 

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)







Дата добавления: 2015-10-01; просмотров: 375. Нарушение авторских прав; Мы поможем в написании вашей работы!




Аальтернативная стоимость. Кривая производственных возможностей В экономике Буридании есть 100 ед. труда с производительностью 4 м ткани или 2 кг мяса...


Вычисление основной дактилоскопической формулы Вычислением основной дактоформулы обычно занимается следователь. Для этого все десять пальцев разбиваются на пять пар...


Расчетные и графические задания Равновесный объем - это объем, определяемый равенством спроса и предложения...


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

Трамадол (Маброн, Плазадол, Трамал, Трамалин) Групповая принадлежность · Наркотический анальгетик со смешанным механизмом действия, агонист опиоидных рецепторов...

Мелоксикам (Мовалис) Групповая принадлежность · Нестероидное противовоспалительное средство, преимущественно селективный обратимый ингибитор циклооксигеназы (ЦОГ-2)...

Менадиона натрия бисульфит (Викасол) Групповая принадлежность •Синтетический аналог витамина K, жирорастворимый, коагулянт...

Мотивационная сфера личности, ее структура. Потребности и мотивы. Потребности и мотивы, их роль в организации деятельности...

Классификация ИС по признаку структурированности задач Так как основное назначение ИС – автоматизировать информационные процессы для решения определенных задач, то одна из основных классификаций – это классификация ИС по степени структурированности задач...

Внешняя политика России 1894- 1917 гг. Внешнюю политику Николая II и первый период его царствования определяли, по меньшей мере три важных фактора...

Studopedia.info - Студопедия - 2014-2024 год . (0.011 сек.) русская версия | украинская версия