- •2) Виртуальная память
- •3) Вывод информация в окно с помощью классов из библиотеки mfc.
- •4) Иерархия классов библиотеки mfc.
- •5 Императивное, функциональное и логическое программирование. Сходство и различие.
- •6)Контейнерные классы библиотеки mfc.
- •7)Контекст устройства. Классификация контекстов устройств. Функции работы с контекстами устройств
- •8. Назначение и Классификация ппп
- •9) Направления интеллектуализации пакетов прикладных программ.
- •10.Направления интеллектуализации ппп. Типология задач интеллектуализации.
- •11) Обработка исключений с помощью библиотеки mfc.
- •12)Обработка сообщений в библиотеке mfc
- •13) Общая характеристика ппп. Функциональное и системное наполнение ппп. Типовые проекты ппп.
- •14) Объекты в Win32. Классификация объектов. Функции работы с объектами Win32.
- •16)Организация асинхронного ввода. Сообщения от манипулятора типа «мышь». Сообщения от клавиатуры (см также 33!!!)
- •17 Организация взаимодействия процессов и потоков в Win32.Процессы и потоки в Win32. Приоритеты. Планирование
- •18 Основнные понятия объектно-ориентированного программирования.
- •19) Библиотека stl.
- •21)Полиморфизм. Перегрузка методов и операторов. Виртуальные методы.
- •23) Понятие сериализации.
- •24 Стандартные элементы управления
- •25) Процессы и потоки в Win32. Приоритеты. Планирование процессорного времени. Функции работы с процессами и потоками.
- •26)Архитектура «документ/представление»
- •Глава 20. Документ и его представления
- •Глава 21. Печать и предварительный просмотр документов
- •27) Реализация многопоточных приложений с использованием библиотеки mfc.
- •28 Ресурсы Windows. Способы задания ресурсов Windows-приложения и их использования.
- •29) Системы координат
- •29 Система координат
- •30 Средства реализации взаимного исключения в Win32.
- •31)Стандартные элементы управления и диалоговые панели в библиотеке mfc.
- •32 Структура windows приложения.
- •33) Структура и типология сообщений в Win32. Классиф сообщений. Очередь сооб, ф-ункции работы с ней. (см также 16!)
- •34) Таймер. Назначение, свойства и особенности использования
- •2) Можно заставить Windows пересылать сообщения другой функции этого же приложения.
- •35) Технологии конструирования по
- •36) Шаблоны классов и функций
- •37) Шрифты Типы шрифтов
- •Создание dll
14) Объекты в Win32. Классификация объектов. Функции работы с объектами Win32.
Категории объектов:
Объекты User objects (таблицы акселераторов, каретка, курсор, рабочий стол, иконки, окна, положения окон). Для этих объектов может быть создан только единственный дескриптор, нет ограничений для использования в рамках одного процесса, но в рамках системы их не может быть больше 65535, после использования эти объекты должны быть корректно удалены.
Объекты GDI (карандаш, расширенный карандаш, кисть, растровые изображения, контексты устройств, расширенные метафайлы, шрифты, дескриптор контекста памяти, метафайлы, палитры, регионы). Особенности: для них существует только один дескриптор, дескрипторы уникальны для всех процессов, в рамках одного процесса не более 16384 дескрипторов.
Объекты ядра (change notification – отслеживает изменения файлов, event log, find file – описывает текущее состояние процесса поиска, heap – описывает кучу, module - описывает динамические библиотеки DLL, update resourse – обновление ресурсов). Особенности: ограничения на количество объектов у процессов должно быть не более, чем 230; у каждого объекта существует структура Security_Attributes (права доступа), при доступе к этим объектам проверяется возможность доступа к ним.
Задачи менеджера объектов: создание объекта, проверка прав использования, создание дескриптора объекта, управление квотами (правила, гораничивающие использование) на объекты, создиние копии дескриптора, закрытие дескриптора. Функции менеджера объекта: создание
объекта, получение дескриптора, чтение изменений атрибутов дескриптора, закрытие дескриптора, удаление объекта. Классификация объектов:
объекты, имеющие один дескриптор
объекты, имеющие много дескрипторов к одному объекту.
Наследование дескриптора: если при создании объектов в структуре Security_Attributes поле InheritHandler равно 1, то дескриптор может быть наследуемым, т.е. создается копия для другого процесса. Клонирование дескриптора происходит при помощи функции DuplicateHandler (на вход – дескриптор, на выход – дубль дескриптора). Используется для передачи другому процессу. При удалении дескриптора объект удаляется в том случае, если этот дескриптор был последним. Объекты, которые можно дублировать: acces taken, communications device, console input, desktop, event, file, mutex, pipe, process. Закрытие дескрипторов: CloseHandler. Чтение и запись атрибутов: SetHandlerInformation, GetHandlerInformation (тут можно установить флаг для наследования).
15)Описание отношения наследования между классами на языке C++. Виртуальные классы.
Композиция есть включение класса А как элемента класса Б.
Наследование - создание нового класса из существующего. Употребляется для повторного использования кода.
Наследование:
Простое. Родитель, т.е. базовый класс у наследника только 1.
Множественное. Несколько родителей. class A : B,С{}
Открытое. Открытые и защищенные элементы базового становятся открытыми и защищенными наследника. (class A : public B, B - базовый., А – наследник)
Закрытое. Открытые и защищенные элементы базового – закрытыми наследника.
Защищенное. Открытые и защищенные элементы базового – защищенными наследника.
Базовый класс: 1)Прямой (Явно перечисляется в заголовке класса), 2)Косвенный. (в заголовке класса не перечисляется, но наследуется иерархически.
Особенности производного класса:
не имеет доступа к закрытым членам своего базового класса (кроме спец функций доступа из открытого интерфейса базового класса)
может доступаться к открытым и защищенным элементам базового класса.
отношения базового и наследника строго иерархичны.
при создании объекта класса наследника требуется вызвать конструктор базового класса (конструкторы и операции присваивания не наследуются)
объект производного класса = объект базового (производный класс имеет элементы, соотв. Элементам базового), но объект базового класса != объект производного.
(потому что у производного класса элементов больше, и они могут остаться неопределенными)
Полиморфизм – возможность для объектов разных классов, связанных при помощи наследования, реагировать различным образом на обращения к одной и той же функции-члену. Реализуется посредством виртуальных функций. Функция объявляется виртуальной в базовом классе, если требуется потом ее переопределение и использование в наследниках (т.е. когда есть одна функция, но надо ее использовать немного по-разному. Например, функция “рисовать фигуру” для объекта класса “круг” равносильна “рисовать круг”, для объекта класса “квадрат” – “рисовать квадрат”)
virtual function_type function_name()
если виртуальная в базовом то по умолчанию виртуальная и в наследнике.
Полиморфизм (polymorphism). Он возникает при создании иерархии классов - группы классов, связанных отношениями вида и подвида, если все они используют общий метод. Например, в иерархии классов Vehicle (Транспортные средства) таким методом может быть Move() - Движение. Реализаци этого метода для каждого из подклассов Car(), Plane() и Boat() - Автомобиль, Самолет и Лодка соответственно - может весьма различаться. Вызов метода на вершине иерархии (Vehicle) приведет к вызову специализированного метода класса-потомка.
Полиморфные функции, т.е. таких функции, в которых алгоритм специфицирован таким образом, что может быть применен к аргументам различных типов.
Использование виртуальной функции:
Динамическое связывание или позднее связывание: во время выполнения программы. Используется таблица виртуальных методов ( массив указателей на функции).
Если функция объявлена в базовом как virtual, и происходит вызов ее через указатель базового класса, указывающий на объект производного класса:
Указатель_базового_на_Объект_наследника
-> виртуальная_функция_базового();
Тип возвращаемого значения должен быть тот же.
Статическое связывание: во время компиляции.
Имя_заданного_объекта.виртуальная_функция().