Классы

Слайд 2

Элементами класса могут быть поля, методы и события.
Поля – пассивная, но

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

ИмяОбъекта

фрагмент кода , в котором можно использовать объект
( т.н. «область видимости» объекта )

Поле1
Поле2

Метод1()
Метод2()

Поле3
Поле4

открытая,
public – зона

закрытая,
private – зона



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

Тип ИмяОбъекта = new Тип();

Слайд 3

делятся на:
особые
Конструкторы - может быть несколько, предназначены для создания экземпляров

делятся на: особые Конструкторы - может быть несколько, предназначены для создания экземпляров
класса;
Деструктор - всегда один, предназначен для уничтожения экземпляра класса;
неособые.
Особые методы могут быть в режиме по умолчанию:
Конструктор класса по умолчанию выполняет инициализацию полей объекта предустановленными значениями (значениями по умолчанию). Но уже первый явный конструктор фактом своего появления в классе отменяет конструктор по умолчанию. Явный деструктор, соответственно, отменяет деструктор по умолчанию.
Объявление конструктора:
модификатор Имя (сигнатура) { тело }
конструктор не может, в принципе, иметь возвращаемого значения, а, значит и не имеет типа, ИМЯ конструктора – это всегда ИМЯ класса,
деструктор также не имеет типа, дополнительно деструктор не имеет и входных аргументов. Имя деструктора – это имя класса с точностью до «тильда» (~).

Методы (как элементы класса)

И класс, и структура, могут иметь неограниченное количество перегруженных конструкторов

Слайд 4

устанавливаются для каждого элемента класса модификаторами доступа:
public – общедоступный элемент класса (нет

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

Режимы защиты элементов класса

При отсутствии у элемента класса (или структуры) явного модификатора
(в режиме «по умолчанию») действует защита
private

Слайд 5

using System;
class Primer
{
struct A
{
public string s;

using System; class Primer { struct A { public string s; public
public bool a;
public int b;
}
class B
{
public string s;
public bool a;
public int b;
}
static void Main()
{ A obj ; //Конструктор по умолчанию создаёт экземпляр
obj.a = true; //структурного типа: поля конструктором не obj.b = 10; //инициализируются!
obj.s = "Объект типа А";
Console.WriteLine("{0} a={1} b={2}", obj.s, obj.a, obj.b);
B obj1 = new B(); //Выделение памяти и вызов конструктора по умолчанию obj1.s = "Объект типа B";
Console.WriteLine("{0} a={1} b={2}", obj1.s, obj1.a, obj1.b);
}
}

Объявление и реализация структуры и класса, конструкторы по умолчанию, поля

Слайд 6

class A
{ int a;
public A( int ia)
{
a = ia;

class A { int a; public A( int ia) { a =
}
public override string ToString() //реализация переопределения метода ToString
{
return String.Format ( "a={0} ", a++ ) ;
}
static void Main()
{
A o1 = new A ( 1 ),
o2 = new A ( 1 ),
o3 = o2;
Console.WriteLine ( o1 ); //Использование переопределения
Console.WriteLine ( o2 );
Console.WriteLine ( o3 );
}
}

Пример (объявление класса и создание трёх его экземпляров,
знакомство с переопределением)