
Вопросы по курсу «Объектно-ориентированное программирование» 2012/2013 уч. гг. Лектор: к.т.н., доцент каф. ВТ Тельминов О.А.
1.● Этапы развития С++. Перечислите языки-предшественники С++. ● Перечислите основные этапы развития С в и версии С++. ● Укажите автора STL, название и суть его способа программирования. ● Каково назначение объекта при решении задач? Укажите составляющие объекта и связь между ними. ● В чем состоит и как применяется идея разграничения доступа? Определение инкапсуляции и объекта. Проиллюстрируйте взаимодействие объекта, друга, наследника и другого объекта с точки зрения обеспечения доступа. ● Определение полиморфизма. Какие два способа определения принадлежности метода к классу используются в С++ и от чего они зависят? ● Определение наследования. Какие свойства и методы необходимо вынести в базовый класс? Как запрограммировать метод в иерархии классов с общим интерфейсом, но различной реализацией? Проиллюстрируйте на примере с графическими примитивами: точкой, линией и полилинией.
2.● Организация вычислительного процесса: архитектура, состав и назначение МП, ОЗУ, ВЗУ. ● Перечислите операторы С++ для изменения линейного хода выполнения программы и правила их использования. Приведите программный пример цикла в
вариантах с goto и while, укажите изменения программного счетчика МП. ● Проиллюстрируйте процессы при подготовке, выполнении и завершении вызова функции с указанием стека и программного счетчика МП. Отобразите, как на карте памяти располагаются переменные, отвечающие за количество и содержание переданных аргументов командной строки в main/WinMain.
3.● Перечислите простые и составные типы C++. Укажите их размер в байтах, для целых чисел также и диапазон представления. Дайте определения Прямого, Обратного и Дополнительного кодов числа. Проиллюстрируйте работу с union для знакового и беззнакового целого. ● Проиллюстрируйте в двоичном виде и запишите выражения на C++ для следующих действий с регистром: сброс состояния и установка флагов; установка заданных флагов с сохранением предыдущего состояния; сброс только заданных флагов; опрос заданных флагов.
4.● Определение указателя, операций взятия адреса и разыменования указателя. Пример с записью значения по указателю, инкрементом значения по указателю и инкрементом указателя: укажите все изменения ячеек памяти на карте. ● 7 операций, применимых к указателю и по 3 операции для сложения и вычитания. Указатель на функцию (пример). Какие ограничения существуют для указателя на void*? Пример с преобразованием типа такого указателя внутри функции. ● Два примера вычисления суммы вектора, заданного константами: доступ к элементу по индексу и с помощью перемещения указателя по вектору. Способ определения размерности вектора. Отобразите состояние ячеек вектора и указателей в процессе работы на карте памяти. Дан трехмерный массив. Какой тип данных получится, если определить 3 индекса, 2 индекса, 1 индекс (пример)? Назначение и способы обращения с аргументами main (int argc, char **argv), main (int argc, char *argv[]).
5.● Приведите особенности хранения данных в переменных и в динамической памяти. Изобразите на карте памяти стек, кучу, области глобальных данных и кода программы. Опишите основные принципы их использования. ● Дайте определение и назначение указателя на константу, приведите программный пример и иллюстрацию. Аналогично для константного указателя. Какой метод класса не может изменить значение объекта? Приведите название, синтаксис и программный пример.
6.● Определение класса и объекта. Как реализовано управление доступом? Приведите программный пример, в котором доступ по чтению и записи к защищенным данным осуществляется отдельными функциями. Отличия и сходства между классом, структурой и объединением – пример и карта памяти. ● Приведите свойства и ограничения элементов-данных, проиллюстрируйте на программном примере. Применение extern, auto, register, enum, битовые поля – примеры. ● В каких двух случаях функция является встроенной? Когда невстроенной? Укажите достоинства и недостатки обоих вариантов. Их работу проиллюстрируйте на примере методов SetXY, GetXY класса CPoint.
7.● Дайте определение ссылки и 3 правила работы с ней. Проиллюстрируйте на программном примере. Сравните на примере использование ссылки и указателя в качестве формальных и фактических параметров функции: передача фактических и обработка формальных параметров. ● Приведите синтаксис объявления ссылки на функцию, синтаксис определения и ее использования. Проиллюстрируйте на примере. Приведите и поясните программный пример использования функции для нахождения элемента с максимальным значением в векторе с возможностью присваивать этому элементу новое значение. Укажите роль ссылки.
8.● Даны два объекта. Создайте и используйте ссылку и указатель на них. Какие способы доступа к полям объекта существуют при обращении через имя объекта, указатель и ссылку на объект? Ответ также проиллюстрируйте на карте памяти. ● Запишите синтаксис указателя на функцию и его использования. Какие параметры необходимы и достаточны для указателя на функцию? Приведите программный пример с вызовом функции f класса A через аргумент-указатель с помощью другой функции класса и отдельной функции, объяснив применение .* и ->*. ● В какие функции передается указатель this? На какой тип он указывает? Как получить указатель и ссылку на объект при возвращении результата функции? Как передаются данные в функцию установки значения двух координат данной точки? Приведите программный пример.
9.● Пример применения конструктора, конструктора копии, операции присваивания, деструктора, операций new и delete, а также двух вариантов функций преобразования. Проиллюстрируйте их работу, включая передачу параметров, на карте памяти. В чем отличительные особенности этих операций?
10.● Операция присваивания: определение, возвращаемый тип, список аргументов, наследование, применение модификаторов, реакция компилятора на отсутствие операции присваивания, особенности вызова, защита объекта от копирования. ● Деструктор: определение, возвращаемый тип, список аргументов, наследование, возможность применения различных модификаторов, реакция компилятора на отсутствие деструктора, особенности вызова. Операции new и delete для объектов и массивов.● Преобразование
конструктором и функцией-элементом: определение, возвращаемый тип, наследование, применение модификаторов, реакция компилятора на отсутствие конструктора, особенности вызова, пример.
11.● Конструктор: определение, возвращаемый тип, наследование, возможность применения различных модификаторов, реакция компилятора на отсутствие конструктора, особенности вызова. Конструктор со значениями по умолчанию, ограничения на них. Инициализация элементов-констант и элементов-ссылок (пример)? ● Конструктор копии: определение, возвращаемый тип, список аргументов, наследование, возможность применения различных модификаторов, реакция компилятора на отсутствие конструктора копии, особенности вызова. На что влияет модификатор перед аргументом конструктора копии? Как защитить объект от копирования? Приведите программный пример по рассмотренным вопросам.
12.● Приведите таблицу, отображающую основные свойства элементов-функций и функций-друзей класса (9 типов функций): наследуется ли от базового класса, может ли быть виртуальной, может ли возвращать значение, является функцией-членом или статической функцией-членом или функцией-другом, генерируется ли автоматически компилятором. ● Проиллюстрируйте и приведите программный пример, поясняющий работу конструктора, конструктора копии, операции присваивания, функций преобразования (экспорт и импорт), деструктора для объектов Flower, Branch, Bush.
13.● С какой целью применяются друзья класса? Приведите программный пример и иллюстрацию для доступа дружественного класса, дружественной функции класса и дружественной функции к объекту. Запишите правила работы с друзьями: this для унарной и бинарной операций, operator =, private, protected, public, взаимность,
наследование, переходное свойство. Проиллюстрируйте дружественность на диаграммах.
14.● Определение перегруженных функций-элементов и функций-операций. Запрещенные и основные разрешенные к перегрузке операции. Приоритеты и правила ассоциаций, их влияние на перегруженные функции и операции (примеры). Перегрузка функции-операции для встроенного типа данных. Наследование и аргументы по умолчанию для функций-операций. ● Бинарные операции: передача операндов, перегрузка. Возврат значения: через временную переменную, ссылку и аргумент. Модификаторы const. ● Обеспечьте выполнение "Object ОПЕРАЦИЯ A" и "A ОПЕРАЦИЯ Object", где Object - объект класса, A - объект другого типа, ОПЕРАЦИЯ - бинарная операция. Перегрузка операций присваивания и сложения.
15.● Программные примеры перегруженных операций отношения, логических и унарных. Перегрузка пре- и постфиксной форм. ● Программа и карта памяти: объект класса CPointMsg хранит сообщение типа char* в заданной точке экрана, один объект присваивается другому, при этом у каждого объекта – персональные данные. Обоснуйте применение ссылки как типа возвращаемого значения и аргумента. ● Обеспечьте посимвольный доступ к сообщению по чтению и записи, с контролем допустимых значений индекса с помощью исключений. Предоставьте доступ только по чтению ко всему сообщению.
16.● Какие элементы класса могут быть статическими? Укажите два правила для данных и пять для функций. Приведите программный пример учета количества созданных объектов. ● Перечислите четыре правила для константных элементов-функций класса и приведите программный пример для иллюстрации работы с константными объектами.
17.● Запрограммируйте класс mystr. Конструктор получает размер буфера для хранения текста (по умолчанию нулевой). Предоставьте возможность преобразования конструктором строки, завершающейся нулем. При копировании новый объект использует память для хранения строки от уже существующего объекта. Деструктор высвобождает динамическую память, если на объект более нет ссылок. Объекту можно присвоить строку, завершающуюся нулем, или другой объект mystr. Символы строки доступны по чтению/записи с проверкой диапазона индекса. Объекты можно записывать/считывать в/из поток(а) и сравнивать с Си-строкой. Приведите полное содержание h-файла; краткое содержание cpp-файла класса mystr, файла с функцией main и файла проекта; иллюстрацию операций с объектами на карте памяти, связанных с реализацией перечисленных выше требований к классу.
18.● Обеспечьте работу класса mystr для строк. Конструктор запрашивает размер буфера для хранения текста (по умолчанию нулевой). Предоставьте возможность преобразования конструктором строки, завершающейся нулем. При копировании новый объект использует память хранения строки от уже существующего объекта. Деструктор высвобождает динамическую память, если на объект более нет ссылок. Объекту можно присвоить строку, завершающуюся нулем, или другой объект mystr. Символы строки доступны по чтению/записи с проверкой диапазона индекса. Объекты можно записывать/считывать в/из поток(а) и сравнивать с Си-строкой. Приведите полное содержание h-файла и cpp-файла класса mystr, полное содержание файла с функцией main и краткое содержание файла проекта. Для каждой операции в main укажите вызываемую функцию класса и проиллюстрируйте ее работу.
19.● Определение наследования и классов, в нем участвующих. Синтаксис наследования от нескольких классов и уровень доступа к элементам классов. Таблица зависимости уровней доступа от влияющих параметров (девять строк). ● Пример со всеми вариантами доступа из этой таблицы, доступ к public-функции класса, унаследованного как private? ● Определение и пример простого наследования с классом «точка» и «сообщение в заданной точке». Правила вызова конструкторов и деструкторов при наследовании. Список инициализации. Схема обработки сообщений в иерархии классов. Как она действует для рассмотренного примера?
20.● Графический интерфейс для задачи: пользователь выбирает одну из трех фигур для изображения на графическом поле ввода. Схема иерархии классов для представления трех фигур. Интерфейс и реализация функции рисования фигур, способ хранения объектовфигур в памяти и способ поиска соответствующей реализации функции рисования фигур. Суть механизма С++ для этой функции. Обработчик события нажатия на клавишу мыши
при создании новой фигуры и функция перерисовки фигур на изображении. ● Виртуальная функция и ее синтаксис, отличие от перегруженной функции. Когда проявляется виртуальность? Указатели и ссылки на классы иерархии. В каких классах
иерархии требуется указывать свойство виртуальности? ● Пример классов иерархии фигур с виртуальным базовым классом.
21.● Виртуальный класс. Требования к телу виртуальной функции, включая =0. Определение класса с такой функцией, его особенности. Когда проявляется динамический полиморфизм? Пример. ● Работа с vtable, vptr: инициализация vptr, правило смещений в vtable, пошаговый процесс вызова виртуальной функции. Пример: 3 класса фигур, унаследовавших один общий класс и имеющих каждый по три виртуальных функции. ● Полиморфизм и позднее связывание, пример виртуального деструктора для корректного высвобождения динамической памяти при использовании иерархии. Отключение виртуального механизма.
22.● Дайте определение и синтаксис множественного наследования. Приведите два основных способа такого наследования, диаграммы иерархии, последовательность вызова конструкторов и деструкторов. Какое правило существует и как оно реализуется для конструкторов в иерархии наследования? Приведите программную реализацию для двух рассмотренных выше способов наследования.
23.● Изложите суть проблемы, когда один класс наследует другой через две параллельные ветви, в каждой из которых по одному классу. Изобразите диаграмму наследования. Какой модификатор необходимо применить к базовому классу для устранения неоднозначности? Приведите программный пример, когда три класса хранят числа, а последний класс в иерархии вычисляет их произведение. ● Дайте определение абстрактному классу, перечислите его свойства и ограничения. Проиллюстрируйте на программном примере и диаграмме наследования.
24.● Подсистема распознавания типа объекта во время выполнения программы, ключевые слова, встроенный класс и назначение системы. Пример с typeid, когда один объект базового типа B хранит координаты со знаком, другой (D1, наследник B)- абсолютные координаты, третий (D2, наследник B) - относительные координаты, а отдельная функция определяет квадрант точки на координатной плоскости по указателю на объект типов B, D1 или D2.
25.● Как называется подсистема распознавания типа объекта во время выполнения программы? Какие ключевые слова и встроенный класс она использует? Укажите назначение системы. Опишите синтаксис и назначение двух операций сравнения и одной функции определения названия для этой системы. Приведите программный пример их использования. Перечислите и опишите назначение пяти Casting-операций этой системы. ● Приведите программный пример сравнения двух функционально сходных Castingопераций.
26.● Библиотека C++ для ввода-вывода. Определение потока, классификация по направлению (3 типа) и по типам устройств (4 типа). Определение и назначение буфера. ● Название класса, абстрагирующего работу с потоками от физических устройств. Название и назначение одного-двух производных от него класса. Классы форматированного ввода, вывода и ввода-вывода. Наследниками какого класса они являются? Изобразите все эти
классы на диаграмме иерархии. Что есть флаги и статус потока? В каком классе они хранятся?
27.● Приведите названия стандартных потоков, их принадлежность к классам, назначение. Как ведут себя операции <<, >> для встроенных типов и как их перегрузить для пользовательских типов? Приведите программный пример и объясните применение всех ссылок в прототипе этих операций. ● Приведите названия всех функций, флагов и манипуляторов для форматирования потоков. Изложите оба варианта форматирующей функции ширины поля, их применение для потоков ввода/вывода, обнулением, связь с символом-заполнителем и функционально схожим манипулятором. Укажите синтаксис и значение по умолчанию для функции-заполнителя.
28.● Форматирование потоков: изложите оба варианта функции точности вещественных чисел, значение по умолчанию, интерпретацию значения в зависимости от флагов и функционально схожий манипулятор. Приведите программные примеры для иллюстрации рассмотренных функций.
29.● Названия всех функций, флагов и манипуляторов для форматирования потоков. Использование групп флагов выравнивания; основания системы счисления и его отображения; пробельных символов; отображения десятичной точки; вида вещественного числа; буферизации. ● Перечислимый тип fmt_flags содержит описание следующих констант (в порядке перечисления): boolalpha, dec, fixed, hex, internal, left, oct, right, scientific, showbase, showpoint, showpos, skipws, unitbuf, uppercase, группы: adjustfield = left | right | internal, basefield = dec | oct | hex, floatfield = scientific | fixed. Какое правило действует для их значений?
30.● Функции: возвращающая текущую комбинацию флагов; возвращающая текущую и устанавливающая новую комбинацию флагов. Прототипы функций: устанавливающая; сбрасывающая заданный флаг в комбинации флагов. Прототип функции установки флага в одной из трех групп флагов. Пример: вывод текущей, установка новой, восстановление исходной комбинации флагов. ● Определение манипуляторов. Какие из них хранят значение до следующей установки? Названия и назначение всех простых манипуляторов. Названия, параметры и значения по умолчанию для манипуляторов: установки основания системы счисления, установки флагов, сброса флагов, установки заполнителя, точности и ширины поля ввода-вывода. Примеры простых и параметризированных манипуляторов. ● Назначение, принадлежность классу и значения флагов goodbit, eofbit, failbit, badbit, hardfail.
31.● Потоки, прототипы функций с указанием анализируемых флагов: возвращающую текущую комбинацию флагов, записывающую новое состояние. В чем отличие методов void* и operator! для потока? Что возвращает и какие флаги анализируют функции fail и bad? Прототипы и назначение функций eof() и good().● Запишите выражение на C++ выражение для некоторого потока strm, используя методы rdstate и clear, названия реальных флагов. Ситуации: [1] В регистре необходимо установить только три указанных флага, остальные сбросить. [2] Аналогично, но остальные не изменять. [3] Сбросить только два заданных флага. [4] Узнать, установлен ли один из двух заданных флагов. [5] Сбросить все флаги.
32. ● Какие классы файловых потоков существуют в С++? Какие классы являются их предками? Что они наследуют? Дайте определения файлу, буферу и дескриптору. Перечислите по 4 варианта конструкторов для файловых потоков ввода, вывода, вводавывода и укажите их особенности: отношение к файлу, буферу, дескриптору, прототипы со значениями по умолчанию. Приведите программные примеры для них.
33.● Классы файловых потоков: какое назначение и значения у следующих констант, к
какому перечислимому типу они принадлежат: app, binary, in, out, trunc, ate, nocreate, noreplace? Как открыть файловый поток на дозапись? ● Приведите программный пример замены буфера потока: емкость буфера 5 символов, используются только 4 с учетом '\0', сначала запись в поток производится до заполнения буфера, затем с принудительным опорожнением буфера. Проиллюстрируйте пошагово работу программы. Какие особенности функции close?
34.● Бинарный и текстовый режим при чтении/записи (пример) ● Две пары функций для работы с raw data. Отличие использования знакового/беззнакового типа и длины буфера. Пример записи и чтения double-числа в поток – сколько байт информации будет передано? Особенность типа данных буфера. ● Установка и выяснение положения указателя для потоков ввода и вывода (по три функции). Константы для относительной адресации. Диапазон изменения указателя. Минимально адресуемый участок потока.
35.● Укажите 3 варианта функции get с одним и менее параметров, назначение и программный пример. Для чего используются get с тремя параметрами и getline, в чем их различие? Приведите программный пример с get-ignore и getline. Каково назначение и какие прототипы у функций gcount, peek и putback?
36.● Шаблоны функций: определение, назначение, синтаксис. Приведите шаблон для поиска минимального значения из двух заданных. Снабдите необходимой операцией класс, хранящий сумму в виде руб.-коп., для работы шаблона. Перегрузите шаблон для поиска минимума в векторе. Выполните специализацию для строковых констант. Какие три правила действуют при разрешении ссылок?
37.● Шаблоны классов: определение, назначение, синтаксис. Создайте шаблон стека, хранящий данные в динамической памяти, с конструктором и деструктором, функциями push и pop. Как реализована специализация и перегрузка для шаблонов класса? Приведите выводы по работе с шаблонами.
38.● Управление исключениями: определение, достоинства, два вида, смысл работы. Ключевые слова. Программный пример: одна функция выбрасывает строку, другая - целое. Последовательность обработки исключений - целое, строка и все остальные. Рассмотрите по шагам отдельно выброс строки и отдельно выброс целого. Где должны располагаться секции-ловушки исключений? Какой аргумент у универсальной ловушки и где она размещается? Где разрешен выброс исключений и почему?
39.● Библиотека STL: определение списка, контейнера и итератора. Пример добавления трех элементов и вывода значения второго. Приведите спецификацию списка, 4 вида
конструктора. Назначение explicit, Allocator, InIter. Приведите 6 операций, определенных для списка.
40. ● STL: список, названия и назначение элементов-функций класса: [1] доступа к элементу (2 ссылки, 2 итератора, 2 реверсивных итератора), [2] текущих параметров (3 для оценки количества элементов и распределитель памяти), [3] упорядочивания (3 функции), [4] добавления в список (для добавления набора одинаковых значений, 3 варианта вставки, 2 варианта вставки и переопределения размера), [5] удаления из списка (всех, по итератору, в заданном диапазоне элементов, крайних, с заданным значением, 2 вида с true-
предикатами, дубликатов). Примеры push_back, empty, pop_front, begin, end, iterator, sort (сортировка CCoord).
41.● Библиотека STL - дайте определение и назначение. Приведите определения контейнера, алгоритма, итератора. Перечислите пять видов итераторов и их назначение. Дайте определение распределителя памяти, предиката и функции сравнения (приведите название и назначение любых трех). Дайте определение контейнерным классам и приведите названия и назначения для битового множества, очередей (двух видов), дека, списка, отображений (двух видов), множеств (двух видов), стека и динамического массива. Что означают sizetype, const_reference, const_reverse_iterator, key_compare?
42.● Библиотека STL, map: определение, шаблонная спецификация с классами Key, T, Comp и Allocator. Три формы конструктора: новое пустое, новое на основе существующего, новое на основе существующего в заданном диапазоне. Пары «ключзначение»: шаблонная спецификация, три типа конструкторов, спецификация функции make_pair.
43.● Библиотека STL, map: определение, шаблонная спецификация с классами Key, T, Comp и Allocator. Что означают: rbegin/rend, operaror[], find, equal_range, key_comp, count, swap? Приведите программные примеры map для ASCII-таблицы (int-char) и текста в заданной точке (char[]-CCoord).
44.● Библиотека STL: спецификации и назначение count и count_if. Программный пример определения гласного звука в строке. Спецификация, назначение и программный пример использования для: remove_copy, replace_copy, двух вариантов transform.
45.● UML: определение, применение, создатели, OMG. Обоснуйте название UML: унификация - 6 областей; модель - цель, семантика, нотация, основные черты. ● Лучшие практики разработки ПО, визуальное моделирование, основные понятия ООП и объектноориентированного анализа и проектирования. Канонические диаграммы UML 1.0 и 2.0.
46.● UML: сформулируйте техническое задание на климат-систему: цель, входные данные, процесс работы, выходные данные. Разработайте диаграммы: Use Case, Deployment, State Chart и Activity. ● UML 2.0: назначение диаграммы Use Case, нотация:
вариант использования, актер, отношения ассоциации (association), зависимости
(dependency), включения (include), расширения (extend), обобщения (generalization);
условие выполнения для отношения расширения; функциональные требования; сценарии
для Use Case; последовательность разработки, показатели качества и типичные ошибки для модели Use Case.
47.● UML: сформулируйте техническое задание на климат-систему: цель, входные данные, процесс работы, выходные данные. Разработайте диаграммы: Sequence, Collaboration, Class и Component. ● UML 2.0: назначение диаграммы Class, ее нотация; разновидности классов; атрибут класса, его видимость, модификаторы, кратность; операции класса, формат и параметры, пре- и постусловия; отношения на диаграмме классов: ассоциация (association), обобщение (generalization) и множество обобщения, агрегация (aggregation), композиция (composition), реализация (realization), зависимость (dependency); навигация и кратность ассоциаций; интерфейс, квалификатор, шаблон.
48.● UML. Программная реализация климат-системы. Класс CController, свойства: заданный график температуры, окружающая среда, нагреватель, охладитель, лог, датчик. Класс CController, методы: конструктор, деструктор, обработка состояния (до конца графика). Работа с объектом CController в main. Класс CPlan, методы с реализацией STLсписка: конструктор, добавление точки, определение температуры, получение времени отключения системы.
49.● UML. Программная реализация климат-системы. Класс CDevice, свойства: статус (вкл./выкл.), предыдущий отсчет времени, коэффициент изменения температуры; методы: конструктор, статус, вкл., выкл., настроить коэфф. изменения температуры, вычислить изменение температуры за последний промежуток времени. ● Приведите график изменения температуры (заданную и достигнутую) с участками работы нагревателя и охладителя.
50.● UML 2, диаграмма последовательности. Назначение, нотация, линия жизни, спецификация выполнения, сообщение (сорт и вид), операторы взаимодействия и примеры (alt, break, ignore, loop, opt, seq, assert, critical, consider, neg, par, strict). Продолжение (continuation), временное ограничение (time constraint), продолжительность (duration) и ограничение на продолжительность. ● UML 2, диаграмма конечного автомата: поведение, состояние, переход. Нотация: состояние, начальное и конечное состояние, история и глубокая история, переход, выбор и соединение. Внутренние действия: entry, do, exit, event-name. События и триггеры. Ортогональные регионы. Типы входов и выходов в/из простого композитного состояния. Передача и прием сигнала.
Примечания.
1.Экзаменационный билет состоит из 3-х пунктов: вопрос из диапазона номеров 1-25, вопрос из диапазона номеров 26-50, задача. Всего 25 билетов.
2.Задача – из решенных в семестре на семинарах, лекциях или лабораторных работах. Обратите внимание, что будут задачи на тестирование в соответствии с лабораторной работой № 8: покрытие логики, разбиение на классы эквивалентности, анализ граничных значений, причинно-следственные диаграммы, прогнозирование ошибок; описаны в литературе Г. Майерс, Т. Баджетт, К. Сандлер: Искусство тестирования программ, 3-е изд.: Пер. с англ. – М.: ООО «И.Д. Вильямс», 2012.; гл. 4 «Проектирование тестов».
3.Информация по UML 2 содержится на сайте http://www.intuit.ru.