Добавил:
выбрасываю тут свой мусор, надеюсь, что он кому-то может пригодится... Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
OOP-KONEChNYJ.docx
Скачиваний:
20
Добавлен:
03.12.2023
Размер:
7.72 Mб
Скачать

27. Шаблон проектирования Creator

Класс должен создавать экземпляры тех классов, которые он может:

  1. Содержать или агрегировать;

  2. Записывать;

  3. Использовать;

  4. Инициализировать, имея нужные данные.

Проблема: кто должен отвечать за создание нового экземпляра некоторого класса?

Создание объектов в объектно-ориентированной системе является одним из наиболее стандартных видов деятельности. Следовательно, при назначении обязанностей, связанных с созданием объектов, полезно руководствоваться некоторым основным принципом.

Решение: Назначить классу В обязанность создавать экземпляры класса А, если выполняется одно из следующих условий:

  • Класс В агрегирует (aggregate) объекты А;

  • Класс В содержит (contains) объекты А;

  • Класс В записывает экземпляры объектов А;

  • Класс В активно использует объекты А;

  • Класс В обладает данными инициализации, которые будут передаваться объектам А при его создании (т.е. при создании объектов А класс В является экспертом). Если выполняется несколько из этих условий, то лучше использовать класс В, агрегирующий или содержащий класс А.

Достоинства: поддерживается шаблон «Слабая связанность», способствующий снижению затрат на сопровождение и обеспечивающий возможность использования созданных компонентов в дальнейшем. Применение шаблона «Создатель» не повышает степень связанности, поскольку создаваемый класс, как правило, оказывается видимым для класса-создателя посредством имеющихся ассоциаций.

28. Назначение модульного тестирования. Понятие единицы автономного тестирования.

Тестирование ПО позволяет проверить качество ПО, но не обеспечивает кач-во кода.

Единица тестирования для структурных программ – процедура.

Тест. Единица ООП – совокупность действий от момента вызова открытого класса до получения результата.

Конечный результат для проверки в классе:

  1. Вызванный метод возвращает значение

  2. Видимое изменение состояния или поведения после вызова

  3. Обращение к сторонней системе, над которой у теста нет контроля

Автономная ед. может охватывать как 1 единственный метод, так и несколько. Единица, когда можно проверить все ее возможные пути.

Парное программирование позволяет написать более оптимальный код.

Модульный тест – автоматизированная часть кода, которая вызывает тестируемую единицу работы – проверяет некоторые предположения о ед. неконечном результате.

Автономный тест стабилен и его результат не меняется, пока не меняется код.

Если тесты тестируют одну и ту же единицу тестирования. Один тест вызвал ошибку, то тест из класса эквивалентности тоже найдет эту ошибку (и наоброт).

Нужно: определить класс эквивалентности, выбрать одного представителя из каждого класса, для каждого представителя выполнить тест.

Техника граничных условий – проверка ошибок на границе классов эквивалентности.

Интеграционный тест – проводиться на последнем этапе.

Модульное тестирование, или юнит-тестирование — процесс в программировании, позволяющий проверить на корректность отдельные модули исходного кода программы.

Идея состоит в том, чтобы писать тесты для каждой нетривиальной функции или метода. Это позволяет достаточно быстро проверить, не привело ли очередное изменение кода к регрессии, то есть к появлению ошибок в уже оттестированных местах программы, а также облегчает обнаружение и устранение таких ошибок.

Автономная единица – это единица работы. Она может быть совсем мелкой – как метод – или достаточно крупной – несколько классов (а то и сборок). Есть и другие изменения, о которых вы в свое время узнаете.

Единица работы — это совокупность действий от момента вызова какого-то открытого метода в системе до единственного конечного результата, заметного тесту системы. Этот конечный результат можно наблюдать, не исследуя внутреннее состояние системы. Конечный результат может принимать следующие формы:

  • вызванный открытый метод возвращает значение (т. е. является функцией, возвращающей не void);

  • существует видимое изменение состояния или поведения системы до и после вызова, которое можно обнаружить, не опрашивая внутреннее состояние;

  • имеет место обращение к сторонней системе, над которой у теста нет контроля, и эта сторонняя система не возвращает никакого значения либо возвращенное значение системой игнорируется

Идея единицы работы для меня означает, что автономная единица может охватывать как один-единственный метод, так и несколько классов и функций.

Соседние файлы в предмете Объектно-ориентированное программирование