Генерация объекта на обнаружения ошибки.
Для этого есть синтаксическая конструкция throw имя класса;
Конструктор генерирует объект этого класса и передает в программу, т.е. throw - это генерация исключений (в методе класса этот оператор пишется)
Процесс поиска реакции на исключительную ситуацию идет по цепочке вызовов ф-и. Сначала рассматривается наличие реакции в ф-ии где произошла эта ситуация, если в данной ф-ии не описана реакция, то осуществиться возврат из этой ф-и в точку ее вызова, и осуществиться поиск реакции на этом уровне, и так до тех пор, пока мы не вернемся в основную программу. Если в основной программе нет обработки этой ситуации, то программа завершается.
В одном блоке try могут возникать исключения разных типов. В этом случае после блока try должно следовать обработки для исключений нужного типа. Компиляторы будут их пытаться запускать в порядке их следования.
Пример:
void f() {
try {
g() }
catch (V::Err1){cum1}
catch (V::Err2){cum1}
catch (V::Err3){cum1}
catch (...){...}
w();}
Группировка ситуаций
Это построение производных классов, каждый из которых является признаком некоторых ситуаций.
При указании в обработчике базового класса исключений и при условии, что было сгенерировано производное исключения. В обработчик будет передаваться базовая часть объекта. Но при повторном исключении будет передан весь объект, а не только производная часть.
Чтобы избежать потерю информации (получить информацию о производном классе в целом) надо исключить передачу параметров посылке.
Стандартные Исключения
exception
| \ \ \
Logic_error Ruttime_error bad_error ...
| | \
Legnth_error Range_error Overflow_error
Шаблоны
Шаблоны используются для задания множества родственных классов или ф-й. Механизм шаблонов позволяет описать обобщенные классы (ф-и) в которых типы и значения компонентов задаются параметрами (т.е. описываются параметрически построенными классами и фу-й)
По описанию шаблона компилятор сгенерирует описание конкретного класса или ф-ии.
Сгенерированна по шаблону ф-я или класс, называется соответственно шаблонным классом или ф-ей.
Каждый шаблон должен иметь уникальное имя и его описание должно быть глобальным в программе.
Синтаксис: template Список формальных параметров {тело класса или ф-ии}
При описании шаблона функции каждый параметр должен быть использован при описании аргумента ф-ии
template <class T> void f(T); - пример использования как аргумент ф-ии.
Эквивалентные шаблонные классы
Пара шаблонных класса относятся к одному типу, если совпадают их шаблоны и значения фактических параметров при их объявлении.
Объектно-Ориентированный анализ и проектирование
1 Алгоритмический (на действия)
2 Объекты (на сущностях, на понятиях)
Преимущество второго подхода - он более продуктивный, т.к. процесс разбиение по понятиям более прост для человека, представить иерархию объектов легче, чем иерархию действий.
Процесс разработки ПО - это сущность видов деятельности, необходимых для преобразования требований пользователя в программную систему.
Участники процесса проектирования:
Пользователи
Архитектор ---------------- Тестеры
/программная \
Менеджер \система / Проектировщик (код) ---------------
проекта
Аналитики (пост. зад.)
Артефакт - некоторая информация, которая используется в процессе проектирования.
Примеры артефактов: -описание требований, - тестовый пример.
Построение программной системы - это построение моделей и их использование для описания различных аспектов программной системы.
Модель - это некоторая абстракция, описывающая программную систему, с определенной точки зрения и на определенном уровне абстроктирования.
Проблемы разработки:
Исходный код - если основной программист ушел из организации, то исходный код необходимо весь переделывать заново => ущерб для фирмы, занимающийся разработкой ПО.
Язык который позволяет зафиксировать модели, был разработан, чтоб их можно было потом передать другим, а так же есть возможность автоматизировать преобразование из UML в исходный код и обратно.