logo search
FINAL (Verdana, 16)

16. Поясните ключевые концепции объектно-ориентированного языка программирования c#

CLR делит свою память на: стек и кучу. Большую часть времени типы значение создаются в стеке, а ссылочные типы – в управляемой куче. Память для ссылочных типов всегда выделяется из управляемой кучи с помощью оператора С# new, который выполняет следующие действия. Ссылочный тип: 1)память для ссылочных типов всегда выделяется из управляемой кучи;2) каждый объект, размещаемый в куче, имеет некоторые дополнительные члены, подлежащие инициализации;3)незанятые полезной информацией байты объекта обнуляются (касается полей);4)размещение объекта в управляемой куче со временем инициирует сборку мусора. Значимый тип размещаются в стеке потока.В представляющей экземпляр переменной нет указателя на экземпляр; поля экземпляра размещаются в самой переменной. Экземпляры значимых типов не обрабатываются сборщиком мусора, поэтому уменьшается интенсивность работы с управляемой кучей.

Если тип называют классом (class), речь идет о ссылочном типе. Так, классы System.Object, SystemException, System.lO.FileStream и System.Random – это ссылочные типы. В свою очередь значимые типы в документации называют структурами (structure) и перечислениями (enumeration). Все структуры являются прямыми потомками абстрактного типа System.ValueType, который в свою очередь является производным от типа System.Object.

C# является ОО языком программирования. Вся логика содержится в структурах и классах. В класс могут добавляться поля и методы, определяющие данные и поведение класса. В зависимости от цели и предназначенной функциональности класса в нем можно определить любое количество полей и методов. Все методы, которые определены в классе, могут получить доступ к полю. Каждое поле имеет имя, тип данных и модификатор доступа, по умолчанию является private. Метод это процедура или функция, определнная внутри класса. Методы используются для реализации поведения класса. Каждый метод имеет имя, список параметров, тип возвращаемого значения и модификатор доступа.

При создании объекта CLR автоматически вызывает конструктор это специальный метод, автоматически вызываемый CLR при создании объекта. При определении конструктора соблюдаются следующие правила: 1)Конструкторы имеют то же имя, что и класс, в котором они определены; 2) Конструкторы имеют то же имя, что и класс, в котором они определены; 3) Конструкторы обычно инициализируют некоторые или все поля объекта, а также могут выполнять любые дополнительные задачи инициализации, требуемые классу.

Структура очень похожа на класс, она уменьшает накладные расходы из-за способа, которым CLR создает и управляет экземплярами структуры. Типы структур: Byte, Int, Double, Boolean etc. Структуры имеют ограничения: используются для моделирования элементов, которые содержат относительно небольшое количество данных.

Наследование вместе с инкапсуляцией и полиморфизмом, является одной из трех основных характеристик ООП, позволяет создавать новые классы, которые повторно используют, расширяют и изменяют поведение, определенное в других классах. Класс, члены которого наследуются, называется базовым классом, а класс, который наследует эти члены, называется производным классом. Наследование мб от: классов, интерфейсов, абстрактных классов. Абстр. Класс: может хранить данные о полях, класс может наследоваться только от одного абстрактного, поддерживает только наследование классов, может содержать реализацию, класс наследник может переопределить некоторые методы. Интерфейс: не могут содеражать конструкторов, не может хранить данные, поддерживает множественное наследование, может быть реализован структурой, класс реализуемый интерфейс должен реализовать все элементы интерфейса.

Коллекции – группа связвнных объектов. Коллекция обеспечивает безопасность типов, при извлечении элемента из универсальной коллекции нет необходимости определять или преобразовывать его тип данных, коллекция является классом, предоставляют более гибкий способ работы с группами объектов. Виды коллекций: класс Visual Basic Collection, System.Collections, System.Collections.Concurrent, System.Collections.Generics.