- •1. Net Framework – единый каркас среды разработки. Исполнительная среда clr. Понятие и функции среды разработки. Управляемый и неуправляемый код. Сборщик мусора.
- •2. Управляемый и неуправляемый код. .Net Framework: особенности разработки приложений с использованием библиотеки .Net Framework. Необходимость установки нескольких версий библиотеки.
- •3. Единство каркаса Framework .Net. Встроенные примитивные и структурные типы.
- •4. Классификация типов данных языка с#. Система типов .Net Framework и языка с#: особенности применения. Преобразования типов. Семантика присваивания. Преобразование к типу Object.
- •6. Массивы языка с#. Статические и динамические массивы. Массивы объектов. Семантика присваивания.
- •7. Строки c#. Классы String и StringBuilder. Назначение, основные возможности, отличие.
- •8. Строки c#. Класс String. Конструкторы класса. Методы работы со строками.
- •9. Строки c#. Класс String. Методы Join и Split.
- •10. Строки c#. Класс StringBuilder. Конструкторы класса. Методы работы со строками. Основные методы. Емкость буфера.
- •11. Структуры c#. Синтаксис. Возможные ситуации использования классов и структур. Перечисления в c#. Назначение. Синтаксис.
- •12. Классы в c#. Роль классов в ооп. Синтаксис классов в c#: обычных, абстрактных, универсальных. Поля и методы классов. Области видимости.
- •13. Процедуры и функции на примере языка с#. Определение. Синтаксис. Использование ключевых слов для передачи параметров.
- •14. Классы в c#. Методы-свойства. Назначение. Синтаксис. Пример описания.
- •15. Классы в c#. Статические поля и методы. Конструкторы и деструкторы. Статический конструктор класса: пример объявления и использования.
- •16. Классы в c#. Отношения между классами. Клиенты и наследники. Отношение вложенности. Расширение клиента класса.
- •17. Классы в c#. Отношения между классами. Отношения между клиентами и поставщиками.
- •18. Классы в c#. Наследование. Конструкторы родительских классов и классов потомков. Возможности изменения классом потомком методов родительского класса.
- •19. Классы в c#. Статический контроль типов и динамическое связывание. Реализация полиморфизма.
- •20. Классы в c#. Абстрактные классы. Классы без потомков.
- •21. Интерфейсы в c#. Реализация интерфейса. Преобразование к классу интерфейса. Множественное наследование. Проблемы множественного наследования.
- •22. Функциональный тип в c#. Делегаты. Делегаты как свойства классов.
11. Структуры c#. Синтаксис. Возможные ситуации использования классов и структур. Перечисления в c#. Назначение. Синтаксис.
Структура - это частный случай класса. Можно пользоваться следующими правилами:
• если необходимо отнести класс к развернутому типу, делайте его структурой;
• если у класса число полей относительно невелико, а число возможных объектов относительно велико, делайте его структурой. В этом случае память объектам будет отводиться в стеке, не будут создаваться лишние ссылки, что позволит повысить эффективность работы;
• в остальных случаях проектируйте настоящие классы.
Синтаксис объявления структуры аналогичен синтаксису объявления класса:
[атрибуты][модификаторы]struct имя_структуры[:список_интерфейсов]
{тело_структуры}
Перечисление - это частный случай класса, класс, заданный без собственных методов. Перечисление задает конечное множество возможных значений, которые могут получать объекты класса перечисление. Поскольку у перечислений нет собственных методов, то синтаксис объявления этого класса упрощается - остается обычный заголовок и тело класса, содержащее список возможных значений. Вот формальное определение синтаксиса перечислений:
[атрибуты][модификаторы]enum имя_перечисления[:базовый класс]
{список_возможных_значений}
12. Классы в c#. Роль классов в ооп. Синтаксис классов в c#: обычных, абстрактных, универсальных. Поля и методы классов. Области видимости.
Объектно-ориентированное программирование и проектирование построено на классах. Любую программную систему, выстроенную в объектном стиле, можно рассматривать как совокупность классов, возможно, объединенных в проекты, пространства имен, решения, как это делается при программировании в Visual Studio .Net.
У класса две различные роли: модуля и типа данных. Класс - это модуль, архитектурная единица построения программной системы. Модульность построения - основное свойство программных систем. В ООП программная система, строящаяся по модульному принципу, состоит из классов, являющихся основным видом модуля.
Вторая роль класса не менее важна. Класс - это тип данных, задающий реализацию некоторой абстракции данных, характерной для задачи, в интересах которой создается программная система. С этих позиций классы - не просто кирпичики, из которых строится система. Каждый кирпичик теперь имеет важную содержательную начинку.
Начнем с синтаксиса описания класса:
[атрибуты][модификаторы]class имя_класса[:список_родителей]
{тело_класса}
Каждое поле имеет модификатор доступа, принимающий одно из четырех значений: public, private, protected, internal. Атрибутом доступа по умолчанию является атрибут private. Если поля доступны только для методов класса, то они имеют атрибут доступа private, который можно опускать. Такие поля считаются закрытыми, но часто желательно, чтобы некоторые из них были доступны в более широком контексте. Если некоторые поля класса A должны быть доступны для методов класса B, являющегося потомком класса A, то эти поля следует снабдить атрибутом protected. Такие поля называются защищенными. Если некоторые поля должны быть доступны для методов классов B1, B2 и так далее, дружественных по отношению к классу A, то эти поля следует снабдить атрибутом internal, а все дружественные классы B поместить в один проект (assembly). Такие поля называются дружественными. Наконец, если некоторые поля должны быть доступны для методов любого класса B, которому доступен сам класс A, то эти поля следует снабдить атрибутом public. Такие поля называются общедоступными или открытыми.
Методы класса синтаксически являются обычными процедурами и функциями языка.