- •Назначение и структура платформы .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. Классификация видов тестирования
Назначение и состав общей системы типов cts. Основные используемые типы в Net-приложениях.
CTS (общая система типов) представляет собой формальную спецификацию, в которой описано то, как должны быть определены типы для того, чтобы они могли обслуживаться в CLR-среде. CTS описывает не просто примитивные типы данных, а целую развитую иерархию типов, включающую хорошо определенные точки, в которых код может определять свои собственные типы. Иерархическая структура общей системы типов (CTS) отражает объектно-ориентированную методологию одиночного наследования IL и показана на следующей схеме:
Основные используемые типы:
Типы классов
В каждом совместимом с .NET языке поддерживается понятие типа класса – центральная роль в ООП. Каждый класс может включать в себя члены (таких как конструкторы, свойства, методы и события) и точки данных (полей). В C# классы объявляются с помощью ключевого слова class.
Типы интерфейсов
Интерфейсы представляют собой не более чем просто именованную коллекцию определений абстрактных членов, которые могут поддерживаться (т.е. реализоваться) в данном классе или структуре. В C# типы интерфейсов определяются с помощью ключевого слова interface.
Типы структур
Понятие структуры тоже сформулировано в CTS. Попросту говоря, структура может считаться "облегченным" типом класса с основанной на использовании значений семантикой. Обычно структуры лучше всего подходят для моделирования геометрических и математических данных, и в C# они создаются с помощью ключевого слова struct.
Типы перечислений
Перечисления (enumeration) представляют собой удобную программную конструкцию, которая позволяет группировать данные в пары "имя-значение". Вместо того чтобы использовать и отслеживать числовые значения для каждого варианта, в этом случае гораздо удобнее создать соответствующее перечисление с помощью ключевого слова enum.
Типы делегатов
Делегаты (delegate) являются .NET-эквивалентом безопасных в отношении типов указателей функций в стиле С. Главное отличие заключается в том, что делегат в .NET представляет собой класс, который наследуется от System.MulticastDelegate, а не просто указатель на какой-то конкретный адрес в памяти. В C# делегаты объявляются с помощью ключевого слова delegate.
И, наконец, последним, что следует знать о спецификации CTS, является то, что в ней содержится четко определенный набор фундаментальных типов данных. Хотя в каждом отдельно взятом языке для объявления того или иного встроенного типа данных из CTS обычно предусмотрено свое уникальное ключевое слово, все эти ключевые слова в конечном итоге соответствуют одному и тому же типу в сборке mscorlib.dll.
Отличительные особенности сборки, пространства имен и типов. Подключение библиотечных и дополнительных пространств имен.
Пространства имен: область, в пределах которой названия типов должны быть уникальны. Обычно: типы – в иерархических пространствах имен с целью избежать конфликта названий и чтобы названия типов было легко найти. Пространство имен – неотъемлемая часть в названии типа.
Ключевое слово namespace – задаёт пространство имен для всех типов в следующем после ключевого слова блоке. Ссылаются на тип используя полное уточненное (квалифицированное) имя. Типы, не включённые ни в одно пространство имен – в глобальном пространстве имен.
Типы: это некая общая схема значения (данных). Переменная — участок памяти, который может содержать разные значения (в отличие от константы, которая может содержать только одно значение). Диапазон возможных значений переменной определяется ее типом. Например встроенный тип int лежит в System.int.
Любая библиотека .NET представлена в виде файла сборки (assembly), которая может содержать внутри себя любое количество пространств имён, которые в свою очередь содержат любое количество типов (классы, структуры и так далее), а типы в свою очередь могут содержать любое количество членов (поля, методы, свойства и так далее).
Для того чтобы обратиться к методу “Ремонт” сначала нужно указать: пространство имён “Гараж”, затем тип (класс) “Авто” и лишь только потом указываем имя метода.
Пространства имен мб вложенными.
Директива using – импортирует пространство имен и делает возможным ссылаться на типы без использования их полных уточненных имен. Using можно использовать только при статическом подключении.
Что бы добавить внешнюю библиотеку необходимо добавить в ссылки.