Пример.

Композиция.

· Композиция – способ реализации иерархии вида «Целое-часть» (Part-OF)

· При композиции в состав класса входят другие классы, массивы или структуры классов.

Класс предложение

Массив полей Слово

Поле Длина

Метод Разбор()

Метод Получить слова()

· Количество вложенных объектов не ограничивается

· Доступ к полям вложенных объектов:

Предложение Предл=new Предложение();

Предл.Слово[i].ПолучитьОснову();

 

Описание класса в С#

Синтаксис описания класса

[Атрибуты] [Модификаторы] class ИмяКласса [:СписокПредков]

{

ТелоКласса

}

Атрибуты:

· Задают дополнительные возможности класса

· Бывают стандартными и пользовательскими

· Записываются в квадратных скобках

Модификаторы:

· Определяют доступность класса для других объектов программы (м. доступа)

· Указывают свойства класса (м. Свойства)

Модификаторы доступа:

ü Public (открытый) – неограничен

ü Private (закрытый) – закрыт для всех

ü Protected (защищенный) – открыт для потомков

ü Internal (внутренний) – открыт для класса программы (по умолчанию)

ü Protected internal – открыт для потомков и классов программы

(выделенные только для вложенных классов)

Модификаторы свойств:

ü New – задает новое описание вложенного класса взамен унаследованного

ü Abstract – абстрактный класс

По умолчания никогда не устанавливаются

Класс с модификатором abstract называется абстрактным

Для абстрактного класса невозможно создавать экземпляры класса, но можно задавать потомков.

Пример Array

ü Sealed – запечатанный класс

Класс с модификатором sealed является запечатанным (бесплодным) классом

Запечатанные классы не могут иметь потомков

Многие стандартные типы (классы) являются запечатанными

Пример String

ü Static – статистический класс

Класс с модификатором static является статическим классом

Экземпляры статического класса запрещено создавать

От статического класса нельзя наследовать

Статические классы могут иметь только статические поля и методы.

Пример Math

Список предков:

· В С# не может состоять более чем из одного класса, но может содержать несколько интерфейсов (спец. Вид классов, не имеющих реализации).

· Если имя предка не указано, то предком считается базовый класс всей иерархии – System.Object.

Примеры писания классов:

Class MyClass1 {} // internal

Public Class MyClass2 {} // public

Class MyClass: MyClass1

{

Private class MyClass4 {}

Protected class MyClass5 : MyClass2 {}

}

В состав класса могут входить:

§ Константы

§ Поля

§ Конструкторы и деструкторы

§ Методы

§ События

§ Классы

§ Делегаты

§ Структуры

§ Интерфейсы

§ Перечисления

Поля класса:

· Поле – это переменная, объявленная на уровне класса

· Поля описывают свойства объектов класса

· При создании новый объект класса представляет собой набор полей класса

· Два объекта одного класса имеют один и тот же набор полей, но отличаются расположением в памяти и значениями, хранимыми в этих полях.

Синтаксис описания поля:

[Атрибуты]

[Модификаторы] [const] ТипПоля

ИмяПоля [=НачальноеЗначение]

Модификаторы доступа:

· Private – по умолчанию

· Public

· Protected

· Internal

· Protected internal

§ Независимо от значения модификатора доступа все поля доступны для всех методов того класса, в которых эти поля описаны.

§ Если поля доступны только для методов класса, то они называются закрытыми.

§ Если некоторые поля класса должны быть доступны для методов класса-потомка – protected.

§ Если некоторые поля должны быть доступны для методов классов, помещенных в одну сборку (assembly) с создаваемым классом – internal.

§ Protected internal применяется для полей, доступ к которым возможен из любого кода в сборке, в котором он объявлен, или же из классов-потомков в другой сборке.

§ Если некоторые поля должны быть доступны для методов любого класса, которому доступен сам создаваемый класс – public.

Модификаторы свойств:

· New – новое описание поля, заменяющее унаследованное.

· Static – статическое поле

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

К ним обращаются не по имени экземпляра, а по имени класса.

· Readonly – поле только для чтения

Поле с модификатором readonly можно изменять только при объявлении иои при вызове конструктора

Отличие от констант – конструктор можно вызывать многократно, меняя значение поля readonly.

· Volatile – поле могут изменять другие процессы или потоки

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

Поля класса

Когда создается новый объект класса, то он содержит полный набор всех полей класса.

Методы класса

· Метод – процедура или функция, объявленная в классе.

· Метод определяет поведение объектов класса

· 2 объекта одного класса имеют один и тот же набор методов

· Синтаксис описания:

[атрибуты]

[модификаторы] ТипРезультата

Имя метода ([списокПараметров])

{

ТелоМетода

}