Лабораторная работа №8
Тема: Использование классов.
Цель: изучение понятия класса, конструктора, деструктора и метода, а также особенностей организации программы с использованием классов.
Теоретические положения
Уровни доступа
В языке C# доступ для членов класса регулируется несколькими способами:
public | Общий (неограниченный) доступ |
protected | Доступ ограничен в пределах данного класса и классов, производных от данного |
internal | Доступ ограничен сборкой, в которой находится данный класс |
protected internal | Доступ ограничен в пределах данного класса и классов, производных от данного, или доступ ограничен сборкой, в которой находится данный класс |
private | Доступ ограничен в пределах данного класса |
Доступом по умолчанию является private.
Доступ для классов верхнего уровня (классов, не вложенных в другие классы) ограничивается модификаторами internal и public (по умолчанию: internal).
Модификатор доступа, должен появляться перед каждым отдельным полем или методом (иначе данный элемент будет иметь уровень доступа private).
Поля класса могут иметь модификатор readonly, который означает, что значение данной переменной класса может либо быть задано сразу, либо в конструкторе (см. ниже), и в дальнейшем ее значение изменяться не может.
Объявление статических полей и методов класса
Для связи членов класса не с конкретными экземплярами класса, а с классом в целом, используются объявления статических переменных и статических функций.
Напоминаем, что статические переменные - это переменные, значения которых для каждого экземпляра класса одинаковы, а статические функции предназначены для работы со статическими переменными. Статическая функция this не получает и поэтому обращаться к нестатическим членам класса не может. Для доступа к обычному члену класса необходимо создать объект класса, а для доступа к статическому элементу необходимо воспользоваться именем класса.
Конструкторы
Конструктор - это функция, которая вызывается при создании объекта класса. Исключение составляет лишь статический конструктор - функция, которая вызывается перед созданием первого экземпляра класса (статическому конструктору ничего не известно о создаваемом объекте). Статический конструктор параметров не получает, а статических деструкторов не существует.
Деструкторы
В C# деструктор (или завершитель) вызывается сборщиком при разрушении объекта. Напрямую управлять вызовом деструктора невозможно, он вызывается автоматически при сборке мусора.
Ссылочный тип
Объекты любых классов являются ссылочными типами. Это означает, что при объявлении они инициализируются null-значениями, и для них необходимо выделять память с помощью оператора new (объекты размещаются в куче).
Сборка мусора.
Автоматическая сборка мусора (выделенной и более не используемой памяти) предназначена для облегчения жизни программисту, позволяя не заботиться о возможных утечках памяти (например, удалить выделенный в куче объект).
По идее, память из кучи в среде .NET Runtime выделяется достаточно быстро. Системе всего лишь необходимо удостовериться, что в управляемой куче достаточно памяти для запрашиваемого объекта, вернуть указатель на эту память и перевести указатель на следующий после последнего объекта адрес. Соответственно, простота выделения памяти сопровождается некоторым усложнением очистки. Для повышения быстродействия большие объекты (>20 КБайт) выделяются из отдельной кучи.
Пометка и сжатие
Работа сборщика мусора основана на алгоритме "пометки и сжатия". Сборщик мусора начинает свою работу с просмотра корневых объектов (включая глобальные, статические, локальные объекты и регистры процессора) и нахождения всех объектов, ссылки на которые присутствуют в корневых объектах. Объекты, используемые на момент сборки мусора, помечаются, а все остальные объекты в системе считаются ненужными.
Процесс сборки мусора завершается копированием всех используемых объектов в начало управляемой кучи и соответствующей модификацией указателей на объекты. Затем указатель устанавливается на следующий доступный блок после последнего используемого объекта. Поскольку сборщик мусора перемещает объекты и изменяет ссылки на них, в это время в системе не может выполняться никаких других операций. То есть во время работы сборщика вся полезная работа прекращается.
Дата добавления: 2021-12-14; просмотров: 334;