Контейнерные классы. Параметризованные классы. Исключения.

Под универсальностью (genericity) понимается способность класса объявлять используемые им типы как параметры. Класс с параметрами, задающими типы, называется универсальным классом (generic class). Терминология не устоялась, и синонимами термина "универсальный класс" являются термины: родовой класс, параметризованный класс, класс с родовыми параметрами. В языке С++ универсальные классы называются шаблонами (template).

Универсальность - это механизм, воздействующий на все элементы языка. Поэтому он применим ко всем частным случаям классов C# (универсальные интерфейсы, структуры, делагаты, и т.д.).

Класс с родовыми параметрами – отдельный класс, у которого фактические типы задавались в момент создания экземпляра.

Контейнерные классы. Параметризованные классы. Исключения. - student2.ru

5.2.10. Классы и объекты в C#

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

2 роли класса:

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

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

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

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

где модификаторы: abstract, sealedи 4 модиф. доступа: public, private, protected(защищенный), internal - по умолчанию.

В теле класса могут быть объявлены: константы; поля; конструкторы и деструкторы; методы; события; классы (структуры, делегаты, интерфейсы, перечисления).

Поля характеризуют свойства объектов класса. Если проектируется класс Car, то поля задают свойства автомобилей. Каждое поле имеет модификатор доступа, принимающий одно из четырех значений (по умолчанию private). Возможно совместное задание двух атрибутов protected и internal.

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

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

· имя конструктора фиксировано и совпадает с именем класса,

· для конструктора не задается возвращаемое значение.

Деструкторв классическом вариантеслужит для удаления объектов и освобождения ресурсов, занятых объектом, в первую очередь оперативной памяти. В языке C# y класса может быть деструктор, но он не занимается удалением объектов и не вызывается нормальным образом в ходе выполнения программы. Деструктор класса, если он есть, вызывается автоматически в процессе сборки мусора. Его роль - в освобождении других ресурсов, например, файлов, открытых объектом. Деструктор C# фактически является финализатором ( finalizer )

Методы-свойства(Properties), представляют специальную синтаксическую конструкцию, предназначенную для обеспечения эффективной работы со свойствами.

Метод-индексатор является обобщением метода-свойства. Он обеспечивает доступ к закрытому полю, представляющему массив. Объекты класса индексируются по этому полю.

Наши рекомендации