- •Назначение и структура платформы .Net (NetFrameWork). Виды net-приложений и их базовые концепции (Console, WinForms, wpf, asp.Net).
- •2. Управляемый и неуправляемый код. Взаимодействие с унаследованным кодом. Структура сборки net - приложения.
- •Назначение, достоинства и недостатки msil. Процесс компиляции и исполнения net – приложения.
- •Назначение и состав общей системы типов cts. Основные используемые типы в Net-приложениях.
- •Отличительные особенности сборки, пространства имен и типов. Подключение библиотечных и дополнительных пространств имен.
- •Освобождение памяти и сборка мусора net–приложений. Стратегия поколений объектов.
- •Конфигурирование net - приложений. Назначение файлов Machine.Config, App.Config, App.Exe.Config
- •Понятие и назначение делегата. Пример использования делегата в ооп на c#.
- •Понятие и назначение события. Примеры использования событий в c#.
- •Основные элементы управления WinForms-приложений. Возможности управления поведением элементов при изменении размеров формы (элементы Anchor и Dock).
- •Виды окон, используемых для приложений WinForms. Состав файлов формы и их назначение.
- •12. Списки, очереди, стеки, словари, их применение и сравнение с массивами. Интерфейс iEnumerable и его назначение
- •13. Обработка и генерация исключений. Создание собственных исключений для приложения.
- •14. Локализация WinForms-приложений. Понятие ресурсов и подчиненной сборки.
- •15. Развертывание net-приложений. Развертывание xcopy и управление встроенными каталогами. Понятие строгого имени и развертывание общих сборок.
- •16. Понятие и назначение домена приложений. Достоинства и недостатки домена по сравнению с потоками и процессами.
- •17. Основные цели, достоинства и недостатки ооп.
- •18. Понятие объекта и задач построения ис с точки зрения объектов. Назначение и структура crc-карточек.
- •1 9. Понятия инкапсуляции и абстракции, их назначение в ооп.
- •20. Назначение и структура языка uml
- •21. Отношение зависимости, ассоциации, агрегации и композиции между классами.
- •24. Базовые принципы программирования dry, kiss, yagni.
- •25. Принцип единственности ответственности и шаблон проектирования Expert.
- •26. Шаблоны проектирования High Cohesion и Low Coupling.
- •27. Шаблон проектирования Creator
- •28. Назначение модульного тестирования. Понятие единицы автономного тестирования.
- •29. Тестирование методом черного и белого ящиков и их применение к модульному тестированию.
- •30. Назначение и целесообразность использования заглушек.
- •31. Назначение подставного объекта и его отличие от заглушки.
- •34. Понятие полиморфизма и его основные виды (классический полиморфизм, перегрузка, параметрический полиморфизм).
- •35. Классический полиморфизм на основе наследования и его применение в базовых принципах проектирования.
- •36. Обоснованность применения наследования или композиции классов. Отрицательное правило наследования.
- •37. Понятие и назначение интерфейса. Отличие реализации интерфейса от наследования. Выбор предпочтения между наследованием и реализацией интерфейса.
- •38. Состав и назначение solid-принципов.
- •39. Понятие шаблона проектирования и структура шаблонов grasp.
- •40. Принцип открытости/закрытости (ocp) и его соответствие шаблонам полиморфизм и защита от изменений.
- •41. Формулировка и назначение принципа подстановки Liskov (lsv).
- •42. Назначение и структура принципа разделения интерфейсов (isp).
- •43. Назначение и структура принципа инверсии зависимостей (dip).
- •44. Формулировка, назначение и примеры использования принципа наименьшего знания (plk).
- •45. Назначение и формулировка шаблона Controller. Основные виды контроллеров и управление сложностью функционирования ис.
- •46. Назначение, формулировка и примеры использования шаблона чистая синтетика.
- •49. Назначение правила разработки тестовых случаев (test case) и тестовых комплектов
- •50. Классификация видов тестирования
27. Шаблон проектирования Creator
Класс должен создавать экземпляры тех классов, которые он может:
Содержать или агрегировать;
Записывать;
Использовать;
Инициализировать, имея нужные данные.
Проблема: кто должен отвечать за создание нового экземпляра некоторого класса?
Создание объектов в объектно-ориентированной системе является одним из наиболее стандартных видов деятельности. Следовательно, при назначении обязанностей, связанных с созданием объектов, полезно руководствоваться некоторым основным принципом.
Решение: Назначить классу В обязанность создавать экземпляры класса А, если выполняется одно из следующих условий:
Класс В агрегирует (aggregate) объекты А;
Класс В содержит (contains) объекты А;
Класс В записывает экземпляры объектов А;
Класс В активно использует объекты А;
Класс В обладает данными инициализации, которые будут передаваться объектам А при его создании (т.е. при создании объектов А класс В является экспертом). Если выполняется несколько из этих условий, то лучше использовать класс В, агрегирующий или содержащий класс А.
Достоинства: поддерживается шаблон «Слабая связанность», способствующий снижению затрат на сопровождение и обеспечивающий возможность использования созданных компонентов в дальнейшем. Применение шаблона «Создатель» не повышает степень связанности, поскольку создаваемый класс, как правило, оказывается видимым для класса-создателя посредством имеющихся ассоциаций.
28. Назначение модульного тестирования. Понятие единицы автономного тестирования.
Тестирование ПО позволяет проверить качество ПО, но не обеспечивает кач-во кода.
Единица тестирования для структурных программ – процедура.
Тест. Единица ООП – совокупность действий от момента вызова открытого класса до получения результата.
Конечный результат для проверки в классе:
Вызванный метод возвращает значение
Видимое изменение состояния или поведения после вызова
Обращение к сторонней системе, над которой у теста нет контроля
Автономная ед. может охватывать как 1 единственный метод, так и несколько. Единица, когда можно проверить все ее возможные пути.
Парное программирование позволяет написать более оптимальный код.
Модульный тест – автоматизированная часть кода, которая вызывает тестируемую единицу работы – проверяет некоторые предположения о ед. неконечном результате.
Автономный тест стабилен и его результат не меняется, пока не меняется код.
Если тесты тестируют одну и ту же единицу тестирования. Один тест вызвал ошибку, то тест из класса эквивалентности тоже найдет эту ошибку (и наоброт).
Нужно: определить класс эквивалентности, выбрать одного представителя из каждого класса, для каждого представителя выполнить тест.
Техника граничных условий – проверка ошибок на границе классов эквивалентности.
Интеграционный тест – проводиться на последнем этапе.
Модульное тестирование, или юнит-тестирование — процесс в программировании, позволяющий проверить на корректность отдельные модули исходного кода программы.
Идея состоит в том, чтобы писать тесты для каждой нетривиальной функции или метода. Это позволяет достаточно быстро проверить, не привело ли очередное изменение кода к регрессии, то есть к появлению ошибок в уже оттестированных местах программы, а также облегчает обнаружение и устранение таких ошибок.
Автономная единица – это единица работы. Она может быть совсем мелкой – как метод – или достаточно крупной – несколько классов (а то и сборок). Есть и другие изменения, о которых вы в свое время узнаете.
Единица работы — это совокупность действий от момента вызова какого-то открытого метода в системе до единственного конечного результата, заметного тесту системы. Этот конечный результат можно наблюдать, не исследуя внутреннее состояние системы. Конечный результат может принимать следующие формы:
вызванный открытый метод возвращает значение (т. е. является функцией, возвращающей не void);
существует видимое изменение состояния или поведения системы до и после вызова, которое можно обнаружить, не опрашивая внутреннее состояние;
имеет место обращение к сторонней системе, над которой у теста нет контроля, и эта сторонняя система не возвращает никакого значения либо возвращенное значение системой игнорируется
Идея единицы работы для меня означает, что автономная единица может охватывать как один-единственный метод, так и несколько классов и функций.