Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
тюмгу / Лекции КБ ИБАС 1 курс 2 семестр / лекция8 Безопасность 2018.ppt
Скачиваний:
15
Добавлен:
08.12.2019
Размер:
199.68 Кб
Скачать

Классы

Классы –основа языка C#.

Любая программа строится на базе хотя бы одного класса, в котором определены

данные и

хотя бы один метод (Main), обеспечивающий их обработку.

Класс относится к ссылочным типам,

поэтому для объявления объекта используется оператор new:

class_name object_name = new class_name( );

Код обеспечивает объявление переменной типа class_name.

Переменная object_name не хранит объект, а только ссылается на него.

Применение оператора new приводит

к созданию объекта с выделением соответствующей памяти,

ссылка на этот конкретный объект присваивается переменной object_name.

1

Элементы класса

Общий синтаксис объявления класса имеет вид:

class class_name

{

access class_member1; access class_member2;

...

access class_memberN;

}

class_name - идентификатор класса,

class_member - объявления членов класса, перед каждым из указан уровень доступа (инкапсуляции) – access

(public, private, protected).

2

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

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

public показывает, что соответствующий член класса открыт для кода вне определения данного класса,

private - напротив, доступен только в пределах класса,

protected - доступен для классов-наследников.

Уровень доступа по умолчанию private.

В C# имеются еще два уровня доступа:

internal и

protected internal.

3

В С# есть особые разновидности членов класса:

данные-члены, к которым относятся

переменные экземпляра,

статические переменные,

константы,

события;

функции-члены, в числе которых

методы,

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

деструкторы,

индексаторы,

операторы (операции),

свойства;

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

4

Данные-члены

Переменные

Эти элементы, использующиеся для представления данных, могут принадлежать

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

всему классу - они называются статическими переменными или переменными класса и

снабжаются при объявлении словом static.

Например, объявление переменной экземпляра и статической переменной:

class MyClass

{

private double [ ] Vector; //переменная экземпляра public static int Count; //переменная класса

...

}

5

В примере нарушен принцип инкапсуляции

хотя, по логике, к статической переменной

должен быть доступ вне класса,

тем не менее, лучше обеспечить это с

помощью специального метода (очевидно,

также статического!).

Константы

Константы-члены по умолчанию являются статическими и при их объявлении ключевое слово static использовать не нужно.

При обращении к константе вне класса нужно указать

имя класса и

после знака операции уточнения (точки) имя самой константы:

class_name.const_name

6

пример:

class MyClass

{

...

public const int Limit = 5266;

//константа

...

}

... MyClass.Limit...

//использование константы

7

Переменные только для чтения

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

Разница между этими переменными и константами:

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

переменные readonly существуют только до тех пор, пока существует соответствующий объект.

При необходимости такая переменная может быть объявлена как статическая.

Объявление переменной только для чтения имеет вид:

access readonly var_type var_name;

или

access static readonly var_type var_name;

var_type – тип,

var_name - имя переменной.

8

События

Фактически событие – это автоматическое извещение о

каком-либо происшедшем действии

Пример: известные пользовательские события – щелчок мышкой, нажатие клавиши на клавиатуре и др.

Функционирует следующим образом:

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

Когда событие происходит, вызываются все зарегистрированные обработчики.

Объявление событий похоже на объявление переменных-членов,

Отличие:

речь идет о данных процедурного типа и

в объявлении используется дополнительное ключевое слово event (событие).

9

Функции-члены

В принципе, возможно создание классов, содержащих только данные

НО интересны классы, инкапсулирующие наряду с данными также и средства для их обработки

функции - члены.

Методы

Методы можно разделить на две основные разновидности:

методы экземпляра

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

10