
- •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.
- •Согласование экспортируемых элементов с импортируемыми
6. Работа с многофайловыми проектами. Использование включаемых файлов.
Большой проект разбивается на множество файлов, чтобы систематизировать и упорядочить сам проект а также чтобы облегчить работу по созданию проекта.
Работа с многофайловыми проектами(обработка файлов)
выполняется препроцессором
преобразуется компиллятором
выполняется библиотекарем(сборка из нескольких файлов)
с помощью компоновщика собирается исполнительный файл .exe
Использование включаемых файлов:
Если посмотреть начало любого файла, то заметно, что одной из первых в них стоит строка #include “stdafx.h”. Этот включаемый файл служит для подключения к программе необходимых ей библиотечных файлов. Когда пишутся большие приложения (многофайловые проекты), обязательно требуется использование заранее откомпилированных заголовочных файлов, это помогает существенно сократить время компилляции. Перекомпилированные заголовки удобны, если у вас есть несколько заголовков, которые должны быть включены во все или в большинство исходных файлов. Однако, их использование полезно только в том случае, если сами они не меняются между компилляциями.
При первой компилляции созданного проекта компиллируются все файлы, при повторной же – только те, которые были изменены.
Пример:
F1.cpp
Int I=0;
Void f(int)
{
}
_ _ _ _ _
f2.cpp //внешняя функция
extern int I;
void f(int);
void main()
{
I=2;
F(i);
}
extern – значит, что переменная встретится ещё где-то, кроме f1.cpp, те достаточно в одном файле её(переменную) объявить как extern и далее в других файлах просто использовать(отдельно объявлять не нужно).
если библиотека большая:
f1.h
extern int I;
void f(int); и далее в файле F2.cpp «делаем» #include “f1.h”
_ _ _ _ _ _
f2.cpp
#include “f1.h”
static int I=2; //static – переменная не будет доступна извне.
F1.cpp
Static int I=0;
7. Объекты и классы в С++
Целью введения концепции классов в С++ явл-ся предоставление программисту средств создания новых типов, кот. настолько же удобны в использовании, как и встроенные. Кроме того, производные классы и шаблоны представляют способы организации классов, имеющих между собой нечто общее. Класс – это некоторый абстрактный тип памяти, кот. содержит в себе атрибуты состояния и поведения объектов класса, это определяемый пользователем тип. Атрибуты состояния – екот. Множество идентификаторов абстрактных классов. Атрибуты поведения – различные ф-ии, т.к. класс это тип, то сам по себе он явл. Только хар-кой некот. Абстрактной области памяти. Конструкция class X {…}; наз-ся определением класса или объявлением класса. Управление доступом:
Class Date{
Int d,m,y;
Public:
void init date(int dd, int mm,int yy); // инициализация
void add_year(int n); //прибавить n лет, месяцев, дней.
void add_month(int n);
void add_ day(int n);
};
метка Public (определяет, что перечисленные атрибуты м.б. видны вне объекта класса): разделяет тело класса на две части. Имена в первой могут использоваться только функциями – членами. Вторая открытая часть образует открытый интерфейс объектов класса. Ф-ия, кот. назначена для инициализации, и кот. конструирует значения данного типа наз-ся конструктором. Имя его совпадает с названием класса. Если класс имеет конструктор, все объекты этого класса будут проинициализированы. Если конструктору требуются аргументы, они д. б. предоставлены. Часто удобно иметь несколько способов инициализации объекта класса, этого можно добиться, введя несколько конструкторов. Пока конструкторы значительно различаются типами своих аргументов, компилятор может выбрать нужный в каждом конкретном случае. Объекты – физическая реализация данного абстрактного типа, т.е. объекты класса – это физич. Область памяти, структуры кот. соответствует типу класса. Классы объявляются как обычные типы и имеют ключевое слово class. Класс имеет метки видимости атрибутов: Public, private (определяет закрытые атрибутыт.е. эти атрибуты могут исп-ся только в ф-ях, кот принадлежат самому классу.),protected(исп-ся при организации наследования классов). Объекты: могут создаваться несколькими способами. Некоторые явл-ся локальными переменными, другие – глобальными, третьи – членами классов и т.д. конструкторы инициализируют объект, т.е. создают среду, в кот. работают функции-члены. При этом происходит захват ресурсов (файлов, блокировка, патять), кот. д. б. освобождены после их использования. Для этого есть ф-я, кот. будет гарантированно вызвана при уничтожении объекта. Это деструктор. Определении ф-ии в классе: ф-я, определенная в пределах опрелеления класса, явл-ся встроенной ф-ей-членом. Т. е, определение ф-й-членов в классе предназначено для небольших по размеру и часто используемых ф-й.
8.Конструкторы и деструкторы. Работа со статической, автоматической и динамической памятью. Конструктор – метод, вызываемый при создании объекта данного класса. В классе может быть несколько конструкторов, а может и ни одного. Деструктор – метод, вызывакмый при разрушении объета данного класса. Название конструктора определяется по названию класса. Имя деструктора носит имя класса и начинается с тильды. Работа с автоматической памятью: переменными автоматической памяти наз-ся те, кот. объявлены внутри ф-ции. Время жизни и область видимости – блок, где они описаны. Int f() {Aa;}Статические переменные описываются вне ф-ий, либо в них, но с символом static. Время жизни – вся программа. Конструктор объявлен до главной ф-ии main, а деструктор после неe.
Aa;
Int f() {
Static Aa; }
динамическая память – память выделенная с помощью оператора new:
Aa;
Int f() {
A*a=new A;
Delete a; }