- •99. Типы диаграмм языка uml
- •98. Унифицированный язык моделирования uml.
- •100. Диаграмма классов (class diagram).
- •Концептуальная точка зрения — диаграмма классов описывает модель предметной области, в ней присутствуют только классы прикладных объектов;
- •Точка зрения спецификации — диаграмма классов применяется при проектировании информационных систем;
- •Точка зрения реализации — диаграмма классов содержит классы, используемые непосредственно в программном коде (при использовании объектно-ориентированных языков программирования).
- •102. Компонентно-ориентированное проектирование
- •Объектно-ориентированное проектирование на основе иерархии классов.
- •93. Гетерогенные контейнеры adt шаблонов
- •Компонентные классы как основа систем визуального программирования.
- •Построение каркасов приложений в среде современных систем программирования.
- •Производные классы: наследование.
- •Термин наследование и применение к классам и их характеристикам
- •Создание объекта производного класса.
- •Расширение производного класса.
- •Создание объекта производного класса и вызов конструкторов
- •Производные классы: полиморфизм.
- •Множественное наследование в классе, порождённом от нескольких родительских классов-предков.
- •Производные классы: полиморфная функция
- •Иерархия классов
- •39.Простые манипуляторы для управления потоком
- •Прядок вызова конструкторов в производных классах
- •Виртуальные базовые классы.
- •Порядок построения виртуальных базовых классов.
- •25. Указатель на абстрактный класс.
- •28.Технология объектно-ориентированного программирования.
- •Интерфейс пользователя и абстрактный класс.
- •35.Предопределенные объекты-потоки.
- •29. Применение шаблонов классов и шаблонов функций.
- •30.Объекты класса и указатели на объекты класса.
- •31.Члены данных объекта и указатели на члены данных класса.
- •32.Указатели на функции-члены класса и указатели на статические члены данных.
- •36.Стандартный ввод-вывод.
- •34.Создание и организация взаимодействие потоков ввода-вывода.
- •37.Методы позиционирования потоков.
- •38.Способы управления форматом выходных данных.
- •42.Организация ввода-вывода для пользовательского типа
- •40.Параметризованные манипуляторы и форматирующие функции.
- •41.Состояния потока.
- •43.Методы опроса и установки состояния потока.
- •44.Обработка ошибок в потоке через определение и установку состояния потока.
- •45.Последовательность действий при создании ostream.
- •46.Открытие и закрытие файла.
- •47.Методы ввода-вывода.
- •13.Преобразование типов в производных классах.
- •14.Разрешение области видимости в производных классах
- •15.Виртуальные функции.
- •16.Нестатические компонентные функции класса.
- •17.Применение виртуальных функций.
- •18.Вызов виртуальных функций в конструкторе.
- •19.Вызов полиморфных функций базового класса.
- •20.Вызов полиморфных функций через базовые классы.
- •21.Вызов виртуальной функции через таблицу виртуальных методов.
- •22.Ограничения на использование виртуальных функций.
- •23.Чистая виртуальная функция.
- •24.Абстрактный класс и его использование.
- •80.Контейнер объектов List
- •82.Контейнеры шаблонов fds (Fundamental Data Structures).
- •76.Класс итераторов объектов: внешние и внутренние итераторы.
- •81.Контейнер объектов Stack
- •71.Контейнерные классы объектов: понятие контейнерного класса.
- •72.Итераторы в контейнерных классах объектов как друзья класса.
- •48.Бинарные файлы.
- •49.Чтение бинарных файлов.
- •50.Запись в бинарные файлы.
- •51.Инициализация потоков с помощью конструктора.
- •52.Текстовые файлы для ввода-вывода.
- •60.Дружественные шаблоны.
- •53.Форматирование в памяти с использованием потоков strstream.
- •54.Шаблон класса.
- •69.Механизм обработки исключений.
- •56.Создание шаблонного класса.
- •57.Шаблон функции, объявление.
- •61.Функциональное замыкание при разработке приложений.
- •58.Запись шаблона функции с несколькими обобщенными аргументами.
- •65.Исключение как статический объект.
- •64.Объектно-ориентированный подход к обработке исключений.
- •66.Генерации исключения.
- •85.Гомогенные и гетерогенные контейнеры шаблонов fds.
- •63.Использование конструкторов и деструкторов в роли «вступления» и «заключения».
- •67.Операторы throw и catch.
- •68.Обработчик исключений.
- •70.Понятие контролируемого блока при обработке исключений.
- •84.Способы хранения элементов в контейнерах шаблонов fds.
- •83.Вектора и списки в контейнере шаблонов.
- •Стандартные контейнеры библиотеки stl
- •86.Fds контейнеры шаблонов векторов
- •62.Функциональное замыкание через наследование.
- •87.Fds контейнеры шаблонов списков
- •89.Способы реализации и префиксы имен adt-контейнеров шаблонов.
- •88.Контейнеры шаблонов adt (Abstract Data Types) и их классификация.
- •90.Типы adt-контейнеров шаблонов.
- •91.Массивы adt-контейнеров шаблонов.
- •92.Стеки adt-контейнеров шаблонов.
- •78.Контейнер объектов Array
- •74.Класс контейнеров объектов: разбиение контейнеров на группы.
- •77.Иерархия классов итераторов объектов
- •79.Контейнер объектов SortedArray
- •73.Библиотека контейнерного класса структур данных.
83.Вектора и списки в контейнере шаблонов.
Контейнер – это класс, который предназначен для хранения объектов какого-либо типа (возможна реализация контейнера, который хранит объекты разных типов: в этом случае в нем хранятся указатели на базовый тип для всех желаемых типов, т.е. формально хранятся объекты одного типа, а фактически указатели ссылаются на элементы разных типов).
Стандартные контейнеры библиотеки stl
Vector < T > - динамический массив
List < T > - линейный список
Stack < T > - стек
Queue < T > - очередь
Deque < T > - двусторонняя очередь
Priority_queue < T > - очередь с приоритетами
Set < T > - множество
Bitset < N > - множество битов (массив из N бит)
Multiset < T > - набор элементов, возможно, одинаковых
Map < key, val > - ассоциативный список
Multimap < key, val > - ассоциативный список для хранения пар ключ/значение, где с каждым ключом может быть связано более одного значения.
Контейнер вектор
template < class T , class A = allocator < T > > сlass vector {
.......
public:
// vector – имя контейнера,
// T – тип элементов контейнера (value_type),
// A – распределитель памяти (allocator_type) - необязательный параметр.
Доступ к элементам
reference operator [] (size_type n); // доступ без проверки диапазона
const_reference operator [] (size_type n) const;
reference at (size_type n); // доступ с проверкой диапазона (если индекс
// выходит за пределы диапазона, возбуждается исключение out_of_range)
const_reference at (size_type n) const;
reference front (); // первый элемент вектора
const_reference front () const;
reference back (); // последний элемент вектора
const_reference back () const;
// Конструкторы и т.п.
//
// конструкторы, которые могут вызываться с одним параметром , во
// избежание случайного преобразования объявлены explicit, что означает,
// что конструктор может вызываться только явно (vector<int> v=10 - ошибка,
// попытка неявного преобразования 10 в vector<int>)
explicit vector (const A&=A()); //создается вектор нулевой длины
explicit vector (size_type n; const T& value = T(); const A& = A());
// создается вектор из n элементов со значением value (или с "нулями" типа
// Т, если второй параметр отсутствует; в этом случае конструктор
// умолчания в классе Т обязателен)
template <class I> vector (I first, I last, const A& = A()); // инициализация вектора копированием элементов из [first, last), I - итератор для чтения
vector (const vector < T, A > & obj ); // конструктор копирования
vector& operator = (const vector < T, A > & obj );
~vector();
//……
// Некоторые функции-члены класса vector
//
iterator erase (iterator i ); // удаляет элемент, на который указывает данный
// итератор. Возвращает итератор элемента, следующего за удаленным.
iterator erase (iterator st, iterator fin); // удалению подлежат все элементы
// между st и fin, но fin не удаляется. Возвращает fin.
Iterator insert ( iterator i , const Т& value = T()); // вставка некоторого
// значения value перед i. Возвращает итератор вставленного элемента).
void insert (iterator i , size_type n, const T&value); // вставка n копий
// элементов со значением value перед i.
void push_back ( const T&value ) ; // добавляет элемент в конец вектора
void pop_back () ; // удаляет последний элемент (не возвращает значение!)
size_type size() const; // выдает количество элементов вектора
bool empty () const; // возвращает истину, если вызывающий вектор пуст
void clear(); //удаляет все элементы вектора
……….
}
Контейнер список
template < class T , class A = allocator < T > > сlass list {
...........
public:
// list – имя контейнера,
// T – тип элементов, которые будут храниться в списке,
// A – распределитель памяти.
// Доступ к элементам
//
reference front (); // первый элемент списка
const_reference front () const;
reference back (); // последний элемент списка
const_reference back () const;
//