- •Что понимается под качеством по ? Связь внешних и внутренних факторов качества.
- •Что понимается под качеством исходного кода?
- •Перечислите желательные внутренние характеристики проекта (т.Е. Внутренние факторы качества исходного кода)?
- •Приведите примеры типичных неправильных архитектурных решений в исходном коде.
- •Желательные характеристики проекта
- •Для чего нужны/используются паттерны проектирования?
- •Дайте определение паттернам проектирования.
- •Перечислите и дайте краткую характеристику основным элементам паттерна в понимании GoF.
- •Описание паттерна (GoF)
- •Какие существуют основные механизмы повторного использования в объектно-ориентированном программировании?
- •Omt, описание классов
- •Перечислите, какие связи между классами выделяются в графической нотации omt, как они обозначаются?
- •Поясните разницу между агрегированием и осведомленностью.
- •Опишите графическую нотацию omt для диаграмм взаимодействия.
- •В чем заключается принцип программирования в соответствии с интерфейсом, а не реализацией?
- •Изобразите диаграмму классов для паттерна «Абстрактная фабрика».
- •Как связаны между собой паттерны «Фабричный метод» и «Абстрактная фабрика»?
- •Опишите на языке c# несколько классов/интерфейсов, в совокупности реализующих паттерн «Абстрактная фабрика».
- •В каких ситуациях следует использовать паттерн «Прототип»? с помощью каких средств в .Net можно реализовать данный паттерн?
- •В каких ситуациях следует использовать паттерн «Заместитель»?
- •Придумайте пример конкретной задачи, когда целесообразно было бы использовать паттерн «Состояние». Изобразите диаграмму классов для данного примера.
- •Опишите на языке c# несколько классов/интерфейсов, в совокупности реализующих паттерн «Стратегия».
- •Что общего и в чем отличие между паттернами «Состояние» и «Стратегия»?
- •Изобразите диаграмму классов для паттерна «Шаблонный метод».
- •В каких ситуациях следует использовать паттерн «Посетитель»?
- •Напишите фрагмент/фрагменты кода на языке c#, соответствующего диаграмме взаимодействия, представленной на рисунке:
Желательные характеристики проекта
Минимальная сложность (интегральная характеристика)
Простота сопровождения (программы давно уже пишут для людей, а не машин)
Слабое сопряжение (минимальное число соединений между различными частями программы)
Расширяемость (возможность расширять/улучшать систему не затрагивая ее основную структуру)
Повторное использование кода (устранения любых дублирований кода)
Высокий коэффициент объединения по выходу (к конкретному классу обращается большое число других классов)
Низкий или средний коэффициент разветвления по входу (конкретный класс обращается с малым числом других классов)
Портируемость (простота адаптирования системы к другой среде)
Минимальная, но полная функциональность
Стратификация (разделение уровней декомпозиции, позволяющее изучить систему на любом уровне, не потеряв при этом согласованное ее представление; проще говоря – разделение по уровням)
Соответствие стандартным методикам
Для чего нужны/используются паттерны проектирования?
Есть стандартные решения для определенных задач – паттерны проектирования.
Паттерны проектирования – описание взаимодействия объектов и классов, адаптированных для решения общей задачи проектирования в конкретном контексте @ GoF
Предложены хорошими специалистами
Проверены временем
Составляют удобный словарь для общения
Дайте определение паттернам проектирования.
Паттерны проектирования - стандартные решения для определенных задач.
Паттерны проектирования – описание взаимодействия объектов и классов, адаптированных для решения общей задачи проектирования в конкретном контексте @ GoF
Под классическими паттернами проектирования понимаются повторяющиеся элементы дизайна приложений для объектно-ориентированных языков программирования со статической типизацией (С++, C#, Java, Object Pascal и др.)
Перечислите и дайте краткую характеристику основным элементам паттерна в понимании GoF.
Канонические паттерны - GoF-паттерны.
Имя
Как устоявшийся профессиональный термин может использоваться для четкого описания архитектурного решения в документации, при обсуждении с коллегами и т.п. Присваивание паттернам имен позволяет в дальнейшем проектировать на более высоком уровне абстракции.
Задача
Описание того, когда следует применять тот или иной паттерн. В задаче может описываться конкретная проблема проектирования, например, способ представления алгоритмов в виде объектов. В задаче может отмечаться, какие структуры классов или объектов свидетельствуют о негибком дизайне, также может приводится перечень условий, при которых имеет смысл применять данный паттерн.
Решение
Описание элементов дизайна, отношений между ними, функций каждого элемента. Речь идет не о конкретном дизайне или реализации для конкретной задачи, а о шаблоне решения, применимом в различных, но схожих ситуациях.
Результаты
Следствия применения паттерна и разного рода компромиссы. Описание результатов позволяет оценить преимущества и недостатки того или иного паттерна и выбрать решение между различными вариантами дизайна.
Описание паттерна (GoF)
Название и классификация паттерна
Назначение
Известен также под именем
Мотивация
Применимость
Структура
Участники
Отношения
Результаты
Реализация
Пример кода
Известные применения
Родственные паттерны