- •Объект, класс. Понятие, примеры
- •Структура класса, использование классов
- •Причины возникновения ооп
- •Технология применения ооп при разработке и реализации ис
- •Абстрагирование в ооп, инкапсуляция – понятие и примеры
- •Наследование в ооп, понятие и примеры
- •Модульность в ооп, связность и связанность
- •Иерархия в ооп, полиморфизм, определения и примеры
- •Диаграмма классов, нотация uml
- •Технология руп - базисная структура и принципы Структура продукта процесса
- •Итерация руп, структура и цели итерации
- •Цели и задачи моделирования бизнес – процессов в руп
- •Структура модели бизнес – процесса в руп, пример
- •Требования в руп, формирование и анализ, примеры
- •Use Case моделирование, субъекты, роли и прецеденты Субъекты
- •Прецеденты
- •Логическое представление руп, понятие и примеры
- •Представление выполнения руп
- •Объекты и классы в руп Объекты
- •Этап руп «Анализ и проектирование», общие понятия и задачи этапа
- •Технология Use Case. Основные принципы, примеры.
- •Диаграмма последовательности, определение и примеры.
- •Инструментальная среда поддержки руп
- •Структура системы Enterprise Architect
- •Формирование моделей бизнес – процессов в еа
- •Формальные требования в еа, структура и формирование
- •Моделирование функций системы в еа
- •Структура динамической модели в еа
- •Диаграмма состояния в еа
- •Диаграмма деятельности в еа
- •Диаграмма последовательности в еа
- •Потоки деятельности в еа
- •Создание Case-проекта в Enterprise Architect.
- •Диаграммы реализации в еа
- •Что такое конструктор и для чего он нужен, Какие типы конструктора существуют
- •Деструктор, назначение деструктора.
- •Методы класса, наследование и перекрытие методов.
- •Статические компоненты класса
- •Шаблоны классов, библиотека mfc
- •Списки, технология списков, операции вставить, удалить узел списка
- •Технология связных списков
- •Класс List, свойства и методы класса
- •Абстрактный список, операции над списками в классе List
-
Шаблоны классов, библиотека mfc
Шаблоны классов
Шаблоны классов так же, как и шаблоны функций поддерживают механизм обобщенного программирования, т. е. программирования с использованием типов в качестве параметров. Механизм шаблонов в C++ допускает применение абстрактного типа в качестве параметра при определении класса. Такой класс называется параметризованным. После того как шаблон класса определен, он может использоваться для определения конкретных классов. Процесс генерации компилятором определения конкретного класса по шаблону класса и аргументам шаблона называется инстанцированием шаблона.
Определение параметризованного (шаблонного, обобщенного) класса имеет вид:
template <параметры шаблона>
class имя_класса
{
...
};
Ниже рассмотрен шаблон класса group, предназначенного для определения контейнерных типов с элементами любых типов (как стандартных, так и определённых программистом).
template <typename T> class group
//Т – параметр шаблона
{
public:
group();
void push_back(T);
void for_each(void (*)(T&));
protected:
node<T>* last;
node<T>* first;
};
При включении шаблона класса в программу никакие классы не генерируются до тех пор, пока не будет создан экземпляр шаблонного класса, в котором вместо параметра шаблона указывается конкретный тип. Экземпляр создается либо объявлением объекта, либо объявлением указателя на инстанцированный шаблонный тип с присваиванием ему адреса с помощью операции new.
Правила описания шаблонов:
-
шаблоны методов (функций) не могут быть виртуальными;
-
шаблоны классов могут содержать статические элементы, дружественные функции и классы;
-
шаблоны могут быть производными, как от шаблонов, так и от обычных классов, а также являться базовыми и для шаблонов, и для обычных классов.
Главная часть библиотеки MFC состоит из классов, используемых для построения компонентов приложения. С каждым MFC-приложением связывается определяющий его на верхнем уровне объект theApp, принадлежащий классу, производному от CWinApp.
Как правило, структура приложения определяется архитектурой Document-View (документ-облик). Это означает, что приложение состоит из одного или нескольких документов - объектов, классы которых являются производными от класса CDocument (класс "документ"). С каждым из документов связаны один или несколько обликов - объектов классов, производных от CView (класс "облик ") и определяющих облик документа.
Класс CFrameWnd ("окна-рамки") и производные от него определяют окна-рамки на дисплее. Элементы управления, создаваемые при проектировании интерфейса пользователя, принадлежат семейству классов элементов управления. Появляющиеся в процессе работы приложения диалоговые окна - это объекты классов, производных от CDialog.
Классы CView, CFrameWnd, CDialog и все классы элементов управления наследуют свойства и поведение своего базового класса CWnd ("окно"), определяющего по существу Windows-окно. Этот класс в свою очередь является наследником базового ласса CObject ("объект").
