- •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.Библиотека контейнерного класса структур данных.
54.Шаблон класса.
Если рассматривать класс как некое обрамление данных, выполняющее различные операции над данными, то можно изолировать типы данных и классы друг от друга, заставляя класс работать с обобщённым типом T. Подобный класс называется шаблоном класса (описание класса) и используется компилятором для создания реального класса. Объявление начинается с template, после которого следует <class T>.
Простые шаблоны
template <class T> class List{
public:
List();
void add(T&);
void remove(T&);
void detach(T& t){remove(t);}
~List();
};
template <class T> List <T>::List() {...}
template <class T> void List <T>::add(T&) {...}
template <class T> void List <T>::remove(T&){...}
template <class T> List <T>::~List(){...}
void main(){
List <long> phone_numbers; //Создание шаблонного класса
List <char* > club_members;
static lon number=5551000;
phone_numbrs.add(number);
static char* name=”Michael”;
club_members.add(name);
}
Вложенные шаблоны
Шаблонные классы могут быть вложенными. Такие классы иногда называют контейнерными, задача которых управлять группами объектов. Шаблоны могут быть с несколькими обобщёнными аргументами. Для одного и того же класса можно объявить как обобщённые так и типизированные аргументы.
template <class First, int i, class Second, char* name>
class A{public A();...};
Шаблона класса можно объявить дружественными другому классу.
template <class A>
class Small{friend class Large <R>};public: Small();...};
template <class A>
class Large {public:Large();...};}
и любой шаблонный класс типа Large <A> будет дружественным Small <A>. Так определяется отношение дружественности для целого семейства классов.
Шаблон класса с несколькими аргументами
#include <stdlib.h>
template <class T, int i, long L>
class MyClass{
T* object;
long offset;
int size, length;
public:
MyClass(); MyClass(int(); int Foo (long);
};
template < class T, int i, long L >
MyClass <T,i,L>::MyClass(){
offset=L; //Переменная объявлена в шаблоне класса
size=i; // Переменная объявлена в функции-члене
object=new T(); // Переменная объявлена и в шаблоне класса и в функции-члене
}
template < class T, int i, long L >
MyClass <T,i,L>::MyClass(int x){
length=i; offset=L; //Присваивание аргументов шаблона private переменным
size=x; // Используется аргумент функции
object=new T (); //Использование аргумента шаблона класса
}
template < class T, int a, long L >
int MyClass <T,a,L>::Foo(long value){ return (value& 0xFF);}
class List();
void main(){
MyClass <int,5, 100 > x (2);
MyClass <float, 100,200 > y (3);
MyClass <List, 100,300 > z ();
}
69.Механизм обработки исключений.
Механизм обработки исключений в языке С++
Этот механизм очень похож на соответствующий механизм, существующий в Borland Delphi. Общий вид обработчика исключений следующий:
try
{<Операторы контролируемого блока.>}
catch (<Спецификация исключения 1.>)
{<Операторы 1-го обработчика исключений.>}
. . . .
catch (<Спецификация исключения N.>)
{< Операторы N-го обработчика исключений.>} ,
где спецификация исключения определяет тип исключения и может иметь один из трех видов:
<тип> <имя> - эта конструкция напоминает описание формального параметра в определении функции. Имя параметра используется в операторах обработки исключений. С его помощью передается информация из обрабатываемого исключения;
<тип> - этот вариант не предполагает использования значения исключения. Для обработчика важен только его тип;
… - в этом случае (многоточие) обработчик реагирует на любое исключение независимо от типа. Так как сравнение посланного исключения с типами обработчиков выполняется последовательно, то обработчик с многоточием в качестве спецификации нужно помещать только в конце списка обработчиков. В противном случае он "перехватит" все возникающие исключения.