Лекция 10-11. Классы и объекты
План:
1.Основные понятия
2.Функциональные элементы класса
2.1.Данные: поля и константы
2.2.Методы
2.3.Конструкторы
2.4.Деструкторы
2.5.Свойства
2.6.Индексаторы
3.«Один класс – один файл»
Основные понятия
Класс– это обобщенное понятие, определяющие характеристики и поведение некоторого множества объектов, называемых экземплярами класса. «Классический» класс содержит данные, определяющие свойства объектов класса, и методы, определяющие их поведение. Для Windows-приложений в класс добавляется третья составляющая – события, на которые может реагировать объект класса. Все классы библиотеки .Net, а также все классы, которые создает программист в среде .Net, имеют одного общего предка – класс object.
Все программы, рассмотренные ранее, состояли из одного класса с одним методом main и несколькими вспомогательными статическими методами.
Теперь рассмотрим понятие «класс» более подробно.
Описание класса содержит ключевое слово class, за которым следует его имя, а далее в фигурных скобках – тело класса. Кроме того, для класса можно задать его базовые классы (предки) и ряд необязательных атрибутов и спецификаторов, определяющих различные характеристики класса:
[ атрибуты ] [ спецификаторы ] class имя_класса [ : предки ]
{тело_класса}
Простейший пример класса: class Demo{}
Спецификаторы определяют свойства класса, а также доступность класса для других элементов программы. Возможные значения спецификаторов перечислены в приложении 10.
Спецификаторы 2-6 называются спецификаторами доступа. Они определяют, откуда можно непосредственно обращаться к данному классу. Спецификаторы доступа могут комбинироваться с остальными спецификаторами.
Класс можно описывать непосредственно внутри пространства имен или внутри другого класса. В последнем случае класс называется вложенным. В зависимости от места описания класса некоторые из этих спецификаторов могут быть запрещены.
Объекты создаются явным или неявным образом, то есть либо программистом, либо системой. Программист создает экземпляр класса с помощью операции new, например:
Demo a = new Demo (); // Создается экземпляр класса Demo
Для каждого объекта при его создании в памяти выделяется отдельная область, в которой хранятся его данные.
В общем случае класс может содержать следующие функциональные элементы:
1.Данные (переменные или константы)
2.Методы (реализующие не только вычисления, но и другие действия, выполняемые классом или его экземпляром)
3.Конструкторы (реализуют действия по инициализации экземпляров или класса в целом)
4.Свойства (определяют характеристики класса в соответствии со способами их задания и получения)
5.Деструкторы (определяют действия, которые необходимо выполнить до того, как объект будет уничтожен)
6.Индексаторы (обеспечивают возможность доступа к элементам класса по их порядковому номеру)
7.Операции (задают действия с объектами с помощью знаков операций)
8.События (определяют уведомления, которые может генерировать класс)
9.Типы (типы данных, внутренние по отношению к классу)
Прежде чем приступить к проектированию классов, необходимо поговорить о присваивании и сравнении объектов. Механизм выполнения присваивания один и тот же для величин любого типа, как ссылочного, так и размерного, однако результаты различаются. При присваивании значения копируется значение, а при присваивании ссылки – ссылка, поэтому после присваивания одного объекта другому мы получим две ссылки, указывающие на одну и ту же область памяти (см. рисунок 3.1).
Рисунок 3.1 – Механизм выполнения присваивания
Пусть были созданы три объекта а, b и с, а затем выполнено присваивание b = с. Теперь ссылки b и с указывают на один и тот же объект. Старое значение b становится недоступным и очищается сборщиком мусора.
Аналогичная ситуация с операцией проверки на равенство. Величины значимого типа равны, если равны их значения. Величины ссылочного типа равны, если они ссылаются на одни и те же данные. Так, объекты b и с равны, т.к. они ссылаются на одну и ту же область памяти. Но а не равно b даже при равенстве их значений.
Дата добавления: 2015-10-26; просмотров: 894;