04 Классы

Содержание

Слайд 2

Определение класса

*

Классы

Класс – это шаблон, который определяет форму объекта. Он задает данные

Определение класса * Классы Класс – это шаблон, который определяет форму объекта.
и код, который оперирует этими данными. ЯП С# использует спецификацию класса для создания объекта.
Таким образом класс – это множество намерений (планов), определяющих, как должен быть построен объект. Класс – это логическая абстракция, о ее реализации нет смысла говорить до тех пор, пока не создан объект класса и в памяти не появилось его физическое представление.

Слайд 3

Форма описания класса

*

Классы

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

Форма описания класса * Классы [ атрибуты] [ спецификаторы] class имя_класса [
тело класса
}

Слайд 4

КОМПОНЕНТЫ КЛАССА

*

Классы

индексаторы;
свойства;
статические переменные;
типы;
константы;
конструкторы;
деструкторы;
события;

КОМПОНЕНТЫ КЛАССА * Классы индексаторы; свойства; статические переменные; типы; константы; конструкторы; деструкторы;
операторы.
Если класс не содержит методов, его называют классом данных.

Слайд 5

Компоненты класса

Константы хранят неизменяемые значения, связанные с классом
Поля содержат данные

Компоненты класса Константы хранят неизменяемые значения, связанные с классом Поля содержат данные
класса
Методы реализуют действия, выполняемые классом или экземпляром
Свойства определяют характеристики класса в совокупности со способами их задания и получения ( методами записи и чтения)
Конструкторы выполняют действия по инициализации экземпляров или класса в целом
Деструкторы определяют действия, выполняемые перед тем как объект будет уничтожен

*

Классы

Слайд 6

Компоненты класса

Индексаторы обеспечивают возможность доступа к элементам класса по их порядковому номеру
Операции

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

*

Классы

Слайд 7

*

Классы

* Классы

Слайд 8

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

*

Классы

По умолчанию - private.

Модификаторы доступа * Классы По умолчанию - private.

Слайд 9

Статические переменные и методы

*

Классы

Если поле или метод объявлены как static (т.е. имеет

Статические переменные и методы * Классы Если поле или метод объявлены как
одно и то же значение для всех экземпляров класса), к нему можно получить доступ до создания объекта этого класса и без ссылки на объект.
Простейший пример – функция Main().
Переменные, объявленные как static, являются по сути глобальными переменными. Все экземпляры класса используют одну и ту же static-переменную. Она инициализируется при загрузке класса, или по умолчанию - нулем, false, null.

Слайд 10

Ограничения статических методов

*

Классы
Не имеют ссылки (указателя) this.
Могут напрямую вызвать только другие static-методы.
Могут

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

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

Слайд 11

*

Классы

* Классы

Слайд 12

Метод

оформленный особым образом поименованный фрагмент кода, который реализует вычисления или другие действия,

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

*

Классы

Слайд 13

Спецификаторы метода

*

Классы

Спецификаторы метода:
public доступ не ограничен
protected доступ только из данного и

Спецификаторы метода * Классы Спецификаторы метода: public доступ не ограничен protected доступ
производных классов
internal доступ только из данной сборки
private доступ только из данного класса (по умолчанию)
static одно поле для всех экземпляров класса

Для работы со статическими данными класса используются статические методы (static), для работы с данными экземпляра – методы экземпляра (просто методы).

Статические методы можно вызвать, не создавая объект.

Чаще всего применяется спецификатор доступа к методам public.

Слайд 14

Возвращаемое значение

*

Классы

Пример 1:
class Primer2
{ string s;
public string vvods()
{
s

Возвращаемое значение * Классы Пример 1: class Primer2 { string s; public
= Console.ReadLine();
return s;
}

Если метод не возвращает никакого значения, в заголовке указывается тип void, а оператор return отсутствует.

Пример 2:
public void vyvods()
{ Console.WriteLine(s); }

Слайд 15

Параметры метода

*

Классы

Параметры в заголовке используются для обмена информацией с методом и определяют

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

Для каждого параметра указывается тип.

Обращение к статическому методу класса:
имя класса. имя метода([аргументы])

Обращение к нестатическому методу класса:
имя объекта. имя метода([аргументы])

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

Слайд 16

Параметры метода

*

Классы

В С# предусмотрены след. виды параметров:
параметры-значения
параметры-ссылки
выходные параметры
параметры-массивы

Параметры метода * Классы В С# предусмотрены след. виды параметров: параметры-значения параметры-ссылки выходные параметры параметры-массивы

Слайд 17

Параметр-значение

*

Классы

При описании параметра-значения в заголовке метода указывается только тип.
Параметр- значение представляет собой

Параметр-значение * Классы При описании параметра-значения в заголовке метода указывается только тип.
локальную переменную, которая получает в качестве своего значения копию значения аргумента.

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

static int maximum(int x, int y)
{
if (x > y) return x;
else return y;
}

Слайд 18

Параметр-ссылка

*

Классы

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

Параметр-ссылка * Классы Если в методе требуется изменить значение передаваемых в качестве
параметры-ссылки.

При описании параметра-ссылки в заголовке метода перед указанием типа помещают ключевое слово ref

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

При вызове метода в качестве аргумента на месте параметра-ссылки может находиться только ссылка на инициализированную переменную точно того же типа со словом ref перед аргументом.

static void Udvoenie(ref int x, ref float y)
{ x = 2 * x; y *= 2;
}

Слайд 19

Выходные параметры

*

Классы

Если нет необходимости инициализировать переменную-аргумент до вызова метода, можно использовать выходные

Выходные параметры * Классы Если нет необходимости инициализировать переменную-аргумент до вызова метода,
параметры.

При описании выходного параметра в заголовке метода перед указанием типа помещают ключевое слово out.

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

При вызове метода перед соответствующим аргументом тоже указывается слово out.

static void Vvod(out int x, out float y)
{
string s;
Console.WriteLine("Введите целое число");
s = Console.ReadLine(); x = Convert.ToInt32(s);
Console.WriteLine("Введите вещественное число");
s = Console.ReadLine(); y = Convert.ToSingle(s);
}

Слайд 20

Конструкторы и деструкторы в C#

*

Классы

В классе возможно объявить любое количество конструкторов с

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

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

Слайд 21

Конструкторы

*

Классы

Для создания объекта в C# можно использовать конструкцию:
Она объявляет переменную-объект, которой присваивается

Конструкторы * Классы Для создания объекта в C# можно использовать конструкцию: Она
ссылка на физический объект. Оператор new динамически выделяет память для объекта и возвращает ссылку на него.
В C# так поступают со всеми объектами.

Слайд 22

Конструкторы - 2

*

Классы
В этом случае MyObject – переменная, которая может ссылаться на

Конструкторы - 2 * Классы В этом случае MyObject – переменная, которая
объект, но не сам объект. Поэтому классы в C# называют ссылочными типами.
Память, выделенную с помощью оператора new, необходимо восстанавливать (освобождать).

Слайд 23

Система сбора мусора

*

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

Система сбора мусора * Классы Автоматически восполняет память для повторного использования, действуя
вмешательства программиста.
Можно также определить метод, который должен вызываться непосредственно перед тем, как объект будет окончательно разрушен системой сборки мусора. Все деструкторы неявно вызываются перед завершением работы программы.

Слайд 24

Перегрузка операторов

*

Классы

Перегрузка операторов * Классы

Слайд 25

ИНДЕКСАТОРЫ, АКСЕССОРЫ И СВОЙСТВА

*

Классы

ИНДЕКСАТОРЫ, АКСЕССОРЫ И СВОЙСТВА * Классы

Слайд 26

Свойства (property)

*

Классы

Свойства - способ управления доступом к данным экземпляра класса.
Формат записи свойства:

Свойство

Свойства (property) * Классы Свойства - способ управления доступом к данным экземпляра
ничего не хранит, оно выступает в роли посредника между внешним кодом и переменной

Слайд 27

Аксессоры get и set

*

Классы

Аксессоры (accessor) похожи на методы, за исключением того, что

Аксессоры get и set * Классы Аксессоры (accessor) похожи на методы, за
в них отсутствует тип возвращаемого значения и параметры.
Аксессор set автоматически принимает параметр с именем value, который содержит значение, присваиваемое свойству.
set {name= value};
Аксессор get возвращает значение поля:
get {return name};

Слайд 28

Особенности свойств

*

Классы

Свойства нельзя передавать в качестве параметра.
Свойства нельзя перегружать.
Свойство не определяет область

Особенности свойств * Классы Свойства нельзя передавать в качестве параметра. Свойства нельзя
хранения поля, а только управляет доступом к нему.
Можно определять свойства только для чтения или только для записи.

Слайд 29

Пример

*

Классы

Пример * Классы

Слайд 30

Пример. Продолжение

*

Классы

Пример. Продолжение * Классы

Слайд 31

Индексаторы (indexer)

*

Классы

Индексаторы обеспечивают механизм, с помощью которого к объектам можно получить доступ

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

В индексаторах можно опускать блок get или set

Слайд 32

Особенности

*

Классы

Индексатор не имеет названия. Вместо него указывается ключевое слово this, после которого

Особенности * Классы Индексатор не имеет названия. Вместо него указывается ключевое слово
в квадратных скобках идут параметры.
Индексатор должен иметь как минимум один параметр.
Индексаторы могут быть перегружены.
Можно использовать индексаторы для многомерных массивов.

Слайд 33

Пример 2

*

Классы

Пример 2 * Классы

Слайд 34

Пример 2

*

Классы

Пример 2 * Классы

Слайд 35

Пример 2

*

Классы

Пример 2 * Классы

Слайд 36

*

Классы

* Классы
Имя файла: 04-Классы.pptx
Количество просмотров: 22
Количество скачиваний: 0