- •Что понимается под качеством по ? Связь внешних и внутренних факторов качества.
- •Что понимается под качеством исходного кода?
- •Перечислите желательные внутренние характеристики проекта (т.Е. Внутренние факторы качества исходного кода)?
- •Приведите примеры типичных неправильных архитектурных решений в исходном коде.
- •Желательные характеристики проекта
- •Для чего нужны/используются паттерны проектирования?
- •Дайте определение паттернам проектирования.
- •Перечислите и дайте краткую характеристику основным элементам паттерна в понимании GoF.
- •Описание паттерна (GoF)
- •Какие существуют основные механизмы повторного использования в объектно-ориентированном программировании?
- •Omt, описание классов
- •Перечислите, какие связи между классами выделяются в графической нотации omt, как они обозначаются?
- •Поясните разницу между агрегированием и осведомленностью.
- •Опишите графическую нотацию omt для диаграмм взаимодействия.
- •В чем заключается принцип программирования в соответствии с интерфейсом, а не реализацией?
- •Изобразите диаграмму классов для паттерна «Абстрактная фабрика».
- •Как связаны между собой паттерны «Фабричный метод» и «Абстрактная фабрика»?
- •Опишите на языке c# несколько классов/интерфейсов, в совокупности реализующих паттерн «Абстрактная фабрика».
- •В каких ситуациях следует использовать паттерн «Прототип»? с помощью каких средств в .Net можно реализовать данный паттерн?
- •В каких ситуациях следует использовать паттерн «Заместитель»?
- •Придумайте пример конкретной задачи, когда целесообразно было бы использовать паттерн «Состояние». Изобразите диаграмму классов для данного примера.
- •Опишите на языке c# несколько классов/интерфейсов, в совокупности реализующих паттерн «Стратегия».
- •Что общего и в чем отличие между паттернами «Состояние» и «Стратегия»?
- •Изобразите диаграмму классов для паттерна «Шаблонный метод».
- •В каких ситуациях следует использовать паттерн «Посетитель»?
- •Напишите фрагмент/фрагменты кода на языке c#, соответствующего диаграмме взаимодействия, представленной на рисунке:
Какие существуют основные механизмы повторного использования в объектно-ориентированном программировании?
Наследование («прозрачный ящик»)
Наследование класса определяется статически на этапе компиляции
Нарушение инкапсуляции родителя для потомков
Тесная связь родителя и потомков
Нельзя изменить унаследованную от родителя реализацию во время выполнения программы
Композиция («черный ящик»)
Композиция объектов – это альтернатива наследованию класса
Для композиции требуется, чтобы объединяемые объекты имели четко определенные интерфейсы
Композиция объектов определяется динамически во время выполнения, следовательно, реализация может меняться во время выполнения
Композиция объектов в большинстве случаев предпочтительнее наследованию классов
Обобщенное программирование
Классификация GoF-паттернов
Порождающие паттерны
Отвечают за создание объектов
Структурные паттерны
Организуют структуру классов (на этапе разработки) или объектов (на этапе выполнения программы)
Паттерны поведения
Характеризуют, как классы и объекты взаимодействуют между собой
Перечислите порождающие GoF-паттерны проектирования.
Фабричный метод (Factory Method)
Абстрактная фабрика (Abstract Factory)
Прототип (Prototype)
Строитель (Builder)
Одиночка (Singleton)
Перечислите структурные GoF-паттерны проектирования.
Адаптер (Adapter)
Декоратор (Decorator)
Заместитель (Proxy)
Компоновщик (Composite)
Мост (Bridge)
Приспособленец (Flyweight)
Фасад (Facade)
Перечислите поведенческие GoF-паттерны проектирования.
Интерпретатор (Interpreter)
Итератор (Iterator)
Команда (Command)
Наблюдатель (Observer)
Посетитель (Visitor)
Посредник (Mediator)
Состояние (State)
Хранитель (Memento)
Цепочка обязанностей (Chain of Responsibility)
Шаблонный метод (Template Method)
Приведите возможные отрицательные последствия использования паттернов.
Два момента:
При использовании паттернов может возникнуть усложнение архитектуры, или порождение сложностей при внесении определенных изменений. Например:
- при использовании Фабричного метода - возникает дополнительный уровень подклассов
- использование Абстрактной фабрики - фиксирует набор объектов, которые можно создать. Расширение "Абстрактной фабрики" для изготовления новых объектов часто затруднительно
(некоторые отрицательные моменты можно найти в использовании почти любого паттерна)
2. Если программист не имеет достаточного опыта проектирования, он может выбирать неверные паттерны для решения задачи, или использовать их там, где их использование не было оправдано. Это опять же усложняет написание и понимание архитектуры приложения
Omt, описание классов
Класс обозначается прямоугольником
В верхней части напечатано имя класса
Описание переменных располагается ниже описания методов
Можно ставить имя типа перед методом, переменной экземпляра или фактического параметра
Курсивом в имени обозначаются абстрактные классы (соответственно и интерфейсы) и методы
При описании паттернов проектирования бледным шрифтом часто обозначают клиентов, которые не входят в состав участников паттерна