- •Назначение и структура платформы .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. Классификация видов тестирования
16. Понятие и назначение домена приложений. Достоинства и недостатки домена по сравнению с потоками и процессами.
Домен приложения — это своеобразный контейнер, внутри которого запускается программа, и который изолирует ее во время выполнения. Домен задает границы управляемой памяти для приложения и является контейнером для загруженных сборок и параметров конфигурации приложения. Каждый процесс обычно размещает только один домен приложения — стандартный домен, автоматически созданный CLR при запуске процесса. Однако в рамках одного процесса возможно создавать дополнительные домены приложений.
Домен приложения - играет роль процесса в среде .NET. Домен приложения .NET позволяет работать нескольким программам в рамках одного процесса операционной системы, не мешая друг другу. В каждом процессе ОС может быть несколько доменов.
Несколько доменов приложений обычно применяются с целью обеспечения изоляции схожей с процессами, но с меньшими накладными расходами. Когда дополнительные домены приложения созданы внутри одного и того же процесса, среда CLR обеспечивает для каждого из них уровень изоляции, сходный с таковым в случае выполнения в отдельных процессах. Каждый домен имеет отдельную память, объекты в одном домене не могут конфликтовать с объектами в другом домене, статические члены одного и того же класса в каждом домене имеют независимые значения. Например в ASP.NET для каждого сайта создается отдельный домен приложения, позволяя сайтам выполняться в одном процессе не влияя друг на друга.
Еще одна причина создания отдельного домена приложения — позволить сборкам выгружаться, не завершая процесс. После загрузки сборки файл сборки блокируется и его нельзя редактировать или заменить. Чтобы разблокировать файл, сборку надо выгрузить. Единственный способ выгрузить сборку — закрыть домен приложения, в котором она загружена. Это становится проблематично если сборка была загружена в стандартный домен приложения, так как закрытие этого домена означает закрытие приложения. Загрузка сборки в отдельный домен приложения, который может быть уничтожен, позволяет обойти данную проблему.
Использование нескольких доменов внутри одного процесса вместо нескольких процессов приводит к существенной экономии ресурсов и существенно повышает скорость взаимодействия.
Скорость взаимодействия между доменами значительно ниже вызовов внутри домена, следовательно, объем данных, передающихся через границу домена, надо стараться сделать как можно меньше;
Скорость взаимодействия между процессами значительно ниже скорости взаимодействия между доменами внутри одного процесса.
К недостаткам относится невозможность использования параллелизма на уровне потоков.
17. Основные цели, достоинства и недостатки ооп.
ООП – метод программирования, основанный на представлении программ в виде совокупности взаимодействующих объектов, каждый из которых является экземпляром класса, а классы образуют иерархию наследования. ООП использует в качестве базовых элементов объекты, а не алгоритмы.
Основные цели ООП
Абстрактное представление данных для создания чётко определённого интерфейса всех объектов;
Моделирование объектов и их взаимодействия в реальных ситуациях.
Основные принципы ООП:
Инкапсуляция – сокрытие реализации объекта от использующих их модулей, объединение методов и данных;
Наследование – выведение новых типов на базе уже существующих;
Полиморфизм – один интерфейс – множество реализаций.
Преимущество ООП:
Позволяет писать более компактные программы за счет повторного использования кода;
Возможность успешно управлять большими объемами исходного кода благодаря инкапсуляции, то есть скрытию деталей реализации объектов и упрощению структуры программ;
Создание программы эволюционным путем из отдельных подсистем (выпуска отдельными версиями);
Объектная модель более естественна для человека;
Позволяет объединять методы и данные.
Удобство сопровождения и совершенствования;
Недостатки ООП:
Некоторое снижение производительности (Код на C++ медленнее чем на Си до 10%);
Использует больше памяти (например виртуальные таблицы);
Идеи ООП не просты для понимания и в особенности для практического применения;
Большая ответственность при подходе к проектированию системы (плохая структура системы ведет к невозможности ее улучшению и дальнейшему использованию)