Class SampleClass

Определение классов и их членов

Классы

Объекты

Объектно-ориентированный подход в программировании предлагает все, что входит в состав приложения, считать объектами, которые взаимодействуют друг с другом и с пользователем в соответствии с заданными в программе свойствами и поведением, выполняя необходимые функции приложения.

Объекты являются программным представлением физических и/или логических сущностей характеризующихся особыми свойствами, поведением, взаимодействием с себе подобными сущностями. Они необходимы для моделирования поведения представляемых ими физических или логических объектов. Для изменения поведения и состояния элементов управления используются их свойства и методы.

Объект характеризуется следующими основными понятиями.

Состояние – каждый объект всегда находится в определенном состоянии, которое характеризуется набором свойств объекта. Под воздействием событий объект переходит в другие состояния. При этом объект может сам генерировать события при переходе в другое состояние.

Свойство – признак, некоторое отдельное качество (параметр) объекта. Например, свойствами могут быть размеры объекта, заголовок, его наименование. Совокупность свойств объекта определяет его состояние. Как правило, свойства – это набор переменных и констант, в которых хранятся значения, определяющие параметры объекта.

Метод – это процедура или функция, которая реализует возможные с объектом действия.

Событие – это средство взаимодействия объектов друг с другом. Объекты генерируют заданные события и выполняют действия в ответ на заданные события. Анализ и обработка событий позволяет объекту реагировать на внешние воздействия. События – это аналог сообщений, получаемых или отправляемых объектами.

Объекты, имеющие общие свойства и поведение, объединяются в классы. Поэтому класс можно определить как некую общность конкретных объектов, как описание объекта (т.е. каким он должен быть и что должен делать).

Если объекты существуют в приложениях во время их выполнения, то класс – это абстракция, объединяющая объекты в одну группу согласно их свойствам и поведению в среде окружения, в которой они существуют и взаимодействуют. Классы не существуют в работающих приложениях. Классы используются в качестве шаблонов объектов. С их помощью во время выполнения можно создавать любое количество объектов одного класса. Внутренняя структура класса передается объекту посредством модуля класса. Таким образом, класс описывает семейство объектов, а каждый экземпляр класса является уникальным представителем этого семейства.

Строго говоря, на панели элементов среды разработки находятся не объекты, а классы. Например, объектом класса Button является кнопка управления на форме со всеми своими конкретными свойствами и действием.

Таким образом, класс является носителем общих для объектов этого класса признаков. Каждый класс содержит набор полей, свойств, методов и событий (обобщенно их называют членами класса). Каждый экземпляр класса (объект) в общем случае получает уникальный набор данных и общие для класса свойства, методы и события.

Поля предназначены для хранения связанных с экземпляром класса данных и представляют собой переменные, принадлежащие классу или экземпляру класса.

Память, необходимая для хранения всех полей, выделяется объекту при его инициализации с помощью оператора new.

Свойства представляют синтаксическую надстройку, позволяющую осуществлять в форме вызов функции, аналогичной чтению/записи переменной и тем самым обеспечивает инкапсуляцию объектов. Например, можно объявить свойство «Возраст», и при попытке записи в него отрицательного значения выдавать ошибку. Но на самом деле это не чисто синтаксическая надстройка. Свойства поддерживаются не только самим компилятором, но и средой Visual Studio.

Свойства класса во многом подобны полям – во всяком случае, они могут наравне с другими переменными участвовать в выражениях. Но принципиальным отличием полей от свойств является то, что при обращении к свойствам в общем случае автоматически задействуются два специальных метода – set и get.

Методы – процедуры и функции, выполняющие определенные действия над объектом или классом. Методы могут иметь параметры и могут возвращать значение.

События позволяют классам автоматически реагировать на действия пользователя и/или на изменения в состоянии программы (других объектов). Они позволяют вызывать методы других объектов, подписавшихся на данное событие, и поддерживаются как компилятором, так и средой Visual Studio. Например, подписавшись на событие «Нажатие объекта Кнопка», подписавшийся объект каждый раз при нажатии этой кнопки будет получать уведомление (в виде вызова соответствующего метода).

Объекты класса обладают всеми свойствами, методами и событиями, которые определены в исходном классе, однако каждый объект класса может иметь различные значения свойств и функционировать независимо от других.

Полный синтаксис определения класса в C# имеет следующий вид [2 – Фаронов]:

[атрибуты] [модификаторы] class <имя_класса> [: <список_родителей>]

{<тело_класса>}

Здесь атрибуты – атрибуты класса; модификаторы – модификаторы класса; class – зарезервированное слово; <имя_класса> – правильный идентификатор; <список_родителей> – список родительских классов; <тело_класса> – произвольный блок операторов (возможно, пустой).

Атрибуты класса предназначены для вставки в текст программы дополнительной информации, которая становится частью метаданных. Доступ к этой информации получает не только компилятор, но и работающая программа.

Модификаторы доступа (таблица 14.1) могут сопровождать определение, как класса, так и всех составляющих его членов, они указывают область их видимости от полностью видимых (глобальных, public) до закрытых (локальных, private). По умолчанию класс считается доступным в текущей сборке (internal), а член класса – закрытым (локальным, private). Эти модификаторы подробно были рассматрены ранее (п.2.1.2. Модификаторы доступа).

Таблица 14.1. Модификаторы класса и его членов

Модификатор Пояснение
public Класс или его член доступен из любой точки программы
internal Класс (член) доступен в сборке, в которой он определен
protected Класс (член) доступен потомкам и только им
private Члены класса доступны только методам этого же класса
abstract Абстрактный класс; должен обязательно перекрываться в потомках
sealed Класс не может иметь наследников
static Определяет статический член класса

Кроме того, с помощью модификаторов можно определить возможность наследования класса, а также готовность класса в целом и отдельных его членов к работе.

Модификатор abstract сигнализирует компилятору, что класс не предназначен для непосредственного использования – попытка создать экземпляр абстрактного класса блокируется на этапе компиляции. Абстрактными обычно объявляются классы, являющиеся родоначальниками родственных классов, имеющих схожую функциональность. В этом случае абстрактный родитель инкапсулирует в себе общие для всех потомков поля, методы и события.

Модификатор sealed, наоборот, предупреждает компилятор о невозможности создания потомка класса. С помощью модификатора sealed объявляются «полностью готовые» классы { sealed – опечатанный, закрытый на ключ). Таким модификатором снабжаются все примитивные классы – это исключает возможность перегрузки для них операций.

Эти два модификатора широко используются в CTS.

Модификатор static объявляет член класса статическим. Для доступа к статическому члену можно не создавать объект класса – статические члены принадлежат не отдельному объекту, а классу как таковому.

Определить класс можно следующим образом (MSDN_ООП_VB+C#_2010):

{...

}

Процесс создания объекта на основе класса называется созданием экземпляра этого класса. Если использовать сравнение с чертежом, то класс является чертежом, а объект является зданием, построенным по нему. Например:

SampleClass sampleObject = new SampleClass();

Каждый класс может состоять из различных членов класса, которыми могут быть поля и свойства (описывающие данные класса), методы (задающие поведение класса) и события (обеспечивающие связь между различными классами и объектами).


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: