Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Краткая и подробная шпаргалка.doc
Скачиваний:
117
Добавлен:
01.05.2014
Размер:
73.73 Кб
Скачать

Генерация объекта на обнаружения ошибки.

Для этого есть синтаксическая конструкция 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 в исходный код и обратно.