
- •Введение
- •Создание простого приложения в ms Visual Studio
- •Отладка программы
- •Пошаговый режим
- •Точки останова
- •Безусловные точки останова
- •Условные точки останова
- •Просмотр переменных
- •Стек вызова функций
- •Разработка оконных приложений
- •Размещение компонентов на форме. Свойства компонента.
- •Компонент CheckBoxListBox
- •Переменные
- •Приведение типов
- •Операции, приоритет
- •Перегрузка операций
- •If(выражение_1) оператор_1
- •Циклы While
- •Цикл foreach
- •Программирование классов
- •Введение в классы и объекты в с#
- •Общий синтаксис класса
- •Поля и свойства
- •Использование переменного числа аргументов
- •Объявление объектов класса. Оператор new
- •Инциализация членов класса
- •Конструкторы и деструкторы
- •Ключевое слово this
- •Ключевое слово static
- •Наследование
- •Полиморфизм.
- •Абстрактные классы
- •Интерфейсы
- •Реализация интерфейсов
- •Интерфейсные свойства
- •Интерфейсные индексаторы
- •Массивы
- •Обработка исключительных ситуаций
- •Предварительная проверка параметров
- •Проверка кодов возврата функций и методов
- •Применение механизма исключений
- •Блоки try-catch
- •Применение блока finally
- •Массивы как коллекции
- •Коллекция ArrayList
Объявление объектов класса. Оператор new
При создании экземпляра класса создается объект, который содержит собственную копию каждого поля и метода класса. Объекты создаются с помощью ключевого слова new. Ниже представлена конструкция данного оператора:
<имя_класса> <имя_переменной> = new <конструктор_класса>
Оператор new динамически выделяет память для объекта и возвращает ссылку на эту область памяти. Таким образом переменная, определенная в данной конструкции не является объектом, она лишь ссылается на объект, который был физически создан в памяти компьютера оператором new. Следовательно, всем объектам в С# память должна выделяться динамически.
В качестве примера объявим объект класса Vehicle:
Vehicle myCar = new Vehicle();
Поскольку доступ к объектам класса осуществляется с помощью ссылки, классы иначе называют ссылочными типами.
Инциализация членов класса
После объявления объекта класса можно инициализировать его поля и методы. Для этого используется оператор точка (.), который имеет следующую конструкцию:
<имя_объекта>.<член_объекта>
В качестве примера приведем объявление и инициализацию объекта класса Vehicle, который был представлен ранее:
using System;
class Vehicle
{
private int passengers; //количество мест для пассажиров
private string mark; //марка
private string model; //модель
private int fuelcap; //объем двигателя
//метод для установки значений для закрытых членов класса
public void setVehicle(int pass, int Mark, int Model, int fuelCap)
{
passengers = pass;
mark = Mark;
model = Model;
fuelcap = fuelCap;
}
public int Passengers
{
get {return passengers;}
set {passengers = value;}
}
public string Mark
{
get {return mark;}
set {mark = value;}
}
public int Model
{
get {return model;}
set {model = value;}
}
public string Fuelcap
{
get {return fuelcap;}
set {fuelcap = value;}
}
}
class vehicleDemo {
public static void main()
{
Vehicle vehicle1 = new Vehicle();
Vehicle vehicle2 = new Vehicle();
vehicle1.setVehicle(4,”Lada”,”Kalina”,2);
vehicle2.Passengers = 4;
int passengersCount = vehicle1. Passengers;
Console.WriteLine(passengersCount);
}
}
Конструкторы и деструкторы
Существует специальная категория методов, отвечающих за такие действия с объектами, как инициализация, присваивание, управление памятью и преобразование типов. Такие методы называются конструкторами. Они вызываются компилятором неявно каждый раз, когда объект класса создается оператором new. В объявлении конструктора его имя совпадает с именем класса. Конструкторов в классе может быть множество благодаря понятию перегрузки функции. Для конструктора типично копирование предоставляемых ему параметров в поля объекта, этим могут ограничиваться его функции. Поскольку параметры и поля относятся к одним и тем же данным, то принято именовать параметры начальными буквами названий полей (если при этом не возникнет конфликта имен).
Конструктор имеет следуюий вид:
<имя_класса>()
{
//тело конструктора
}
Все классы имеют конструктор независимо от того определен он или нет. В С# по умолчанию предусмотрен конструктор, который присваивает нулевые значения всем переменным экземпляра (для переменных обычного типа) и null (для переменных ссылочного типа). Но если конструктор явно объявлен в классе, то конструктор по умолчанию использоваться не будет.
Пример:
using System;
class NewClass
{
public int a;
public NewClass()
{
a = 100;
}
}
class ConstrDemo
{
public static void Main()
{
NewClass c1 = new NewClass();
Console.WriteLine(c1.a);
}
}
Функции обратные функциям конструктора выполняют деструкторы. Они предназнычены для освобождения памяти от объектов класса. Однако в С# имеется более эффективный механизм для этого, он называется «сборкой мусора». Когда в С#-программе отсутствует обращение к объекту, то он рассматривается как не использующийся более, и система автоматически без участия программиста, освобождает занимаемую им память, которая в дальнейшем может быть выделена под другие объекты. «Сборка мусора» периодически осуществляется в ходе всей программы.
В С# все же предусмотрена возможность создания деструктора, который удаляет объект перед «сборкой мусора». Он имеет следующую конструкцию:
~ <имя_класса> ()
{
//тело деструктора
}
Деструктор вызывается во всех случаях, когда объект должен быть удален из памяти.