
- •1. Признаки сложных систем. Сложность, присущая программному обеспечению.
- •2. Компоненты объектно-ориентированного подхода.
- •3. Объекты и классы с точки зрения объектно-ориентированного проектирования.
- •4. Модели и диаграммы, используемые в объектно-ориентированном подходе.
- •5. Техника отладки.
- •6. Работа с многофайловыми проектами. Использование включаемых файлов.
- •9. Простое наследование. Контроль доступа к атрибутам класса.
- •10. Виртуальные функции (вф) и абстрактные классы.
- •11. Множественное и виртуальное наследование.Множественное наследование
- •12 Перегрузка операций
- •13. Шаблоны функций, макросы, inline-функции.
- •14. Шаблоны классов.
- •15. Обработка исключительных ситуаций, структурная обработка исключений.
- •16. Пространства имён. Кратко о механизме пространства имен
- •Зачем нужен механизм пространства имен?
- •Имитация средствами языка Си
- •Правило составления имени
- •Недостатки
- •17 Строки и потоки.
- •18.Стандартная библиотека: Контейнеры
- •19 Реализация устойчивости объектов средствами mfc.
- •20. Структура Windows-приложения WinApi
- •21. Структура Windows-приложения, использующего библиотеку mfc
- •Документы и их представление
- •22. Обработка сообщений
- •23. Контекст устройства
- •24.Объекты gdi
- •25.Использование контекста отображения в памяти.
- •26.Режимы отображения.
- •27.Работа с меню. Обработка сообщений.
- •28.Работа с диалогами. Обработка сообщений.
- •29. Работа с полями ввода и кнопками.
- •30. Работа со списками и выпадающими списками. Работа со списком
- •Работа с комбинированном списком
- •Инициализация
- •Операции со строками
- •31. Классы CimageList и CtreeCtrl. Класс cImageList
- •Изменение содержимого списка
- •32. Классы CimageList и ClistCtrl. Класс cImageList
- •Изменение содержимого списка
- •Создание просмотра списка
- •Работа со столбцами
- •Функции для работы со списком в целом
- •Рабочие области просмотра списка
- •Поиск и сортировка записей
- •33. Классы CprogressCtrl, cRichEdit Ctrl, CsliderCtrl, cSpinButton Ctrl.
- •34. Классы cPropertySheet и cPropertyPage.
- •35. Передача информации в диалог и обратно.
- •36. Работа со стандартными диалогами.
- •37.Обработка сообщений от клавиатуры и мыши(wm_char,wm_keYxxx,wm_xButtoNxxx,
- •38 Таймеры, использование времени простоя программы и локального цикла обработки сообщений.
- •39. Библиотеки динамической компоновки. Явная и неявная загрузка dll.
- •Согласование экспортируемых элементов с импортируемыми
3. Объекты и классы с точки зрения объектно-ориентированного проектирования.
Объект – нечто, обладающее состоянием, поведением и идентичностью. Структура и поведение схожих объектов – класс.
Отношения между объектами:
Связь – использование;
Агрегация – включение;
1 и 2 часто могут сочетаться.
Класс – совокупность объектов с одинаковой структурой и поведением.
Состояние объекта характеризуется перечнем всех св-в и текущим значением всех свойств.
Перечень – статический, поведение – динамическое.
Поведение – это то, как объект действует и реагирует на внешнее воздействие, выражается через состояние объекта и сообщения. Поведение – наблюдаемая извне и проверяемая деятельность.
Операции:
1. Селекторы – организуют считывание состояния, не меняя его.
2. Модификаторы – изменение состояния.
3. Итераторы - организуют доступ к объекту в определённой последовательности.
4. Конструкторы – функция особого рода – член класса, предназначенная в первую очередь для инициализации переменных класса и резервирование памяти.
5. Деструкторы – специальная функция – член класса, кот служит для освобождения динамической памяти, занимаемой удаляемым объектом.
Объект удобно представлять в виде конечного автомата.
Идентичность – свойство, позволяющее отличать один объект от другого. (Надо отличать сам объект и указатель на него)
Отношения между классами:
1. Ассоциация или связь, может быть:
один к одному,
один ко многим,
многие ко многим.
Пример – клиент и карточка клиента (один к одному)
2. Наследование
3. Агрегация - включение
4. Использование(развитие ассоциации)
5. Дистанцирование – создание экземпляра шаблонного типа
6. Метакласс – (класс класса) – класс, объектами кот являются другие классы (например генератор классов)
4. Модели и диаграммы, используемые в объектно-ориентированном подходе.
При проектировании используется стандартная нотация.
Статические модели – информационные.
Динамические модели – те, где учитывается поведение системы.
Диаграммы классов – информационная модель, модель состояний, процессов.
5. Техника отладки.
Диагностический сервис, предоставляемый библиотекой MFC, значительно упрощает отладку приложений. Он включает в себя макросы и глобальные функции, которые позволяют отслеживать распределение памяти, содержимое дампа объекта и осуществлять печать отладочной информации во время выполнения.
Необходимо постоянно поддерживать инвариант – св-во, знающее состояние объекта.
Основные макросы:
ASSERT (booleanExpression) – прерывает выполнение программы, если вычисляемое выражение booleanExpression равно FALSE, и печатает сообщение об ошибке в следующей форме:
Assertion failed in file <имя_файла> in line<номер_строки>, где номер строки - та строка, где произощла ошибка.
VERIFY(booleanExpression) – тоже самое, но программу не завершает.(действует аналогично макросу ASSERT, но для рабочей версии библиотеки)
ASSERT_VALID(pObject) – используется для оценки доступности внутреннего состояния pObject (сначала проверка pObject на NULL, затем вызов его метода AssertValid). Если хотя бы одна проверка приводит к возникновению ошибки, то выводится сообщение аналогичное ASSERT.
ASSERT_KINDOF (класс, указатель) – проверяет является ли тот объект на кот передан указатель, объектом данного класса.
#ifdef
_DEBUG
………
#endif
для виртуальной функции (CObject())
AssertValid – вариант истина или нет
Для борьбы с утечкой памяти:
Вирт ф-я
Dump(CdumpContext &dc)
{ dc<<name;
dc<<age;
}
_GetMemDumpAllObjectsSince(_CrtMemState*) – сбросить все объекты с момента сохранения в памяти.
_CrtMemCheckPoint(_CrtMemState*)
_CrtCheckMemory – проверка памяти
AfxIsValidAdress
_CMemoryState
_CheckPoint() – записать
_DumpAllObjects
_Difference – сравнивает 2 метода state
#define new DEBUG_NEW позволяет запоминать строку программы, где произошла утечка памяти.