Объектно-ориентированное программирование» для студентов специальности 5В070300 «Информационные системы» идля оп 6В06120 «Информационные системы» Шымкент 2022



бет19/43
Дата28.03.2023
өлшемі1,44 Mb.
#76860
1   ...   15   16   17   18   19   20   21   22   ...   43
Деструкторы
В C# классы могут иметь специальные методы — деструкторы. Функционально они должны делать противоположное тому, что делает конструктор. Но особенность деструкторов в C# в том, что они не освобождают память, выделенную конструктором под соответствующие объекты (этим управляет сборщик мусора), а освобождают ресурсы, выделенные объекту, например, закрывают соединение с сервером базы данных, другой компьютер.
Как и у конструктора, имя деструктора совпадает с именем класса, но перед именем деструктора стоит символ тильды «~». Например, если у класса treyg есть деструктор, он будет написан так:
public ~treyg()
{ деструктор_денесі }
Деструктор нельзя вызвать прямо в программе, он автоматически вызывается сборщиком мусора при удалении объекта из кучи. На практике освобождение ресурсов выполняется автоматически после того, как ресурсы, выделенные объекту, больше не нужны. Следовательно, деструкторы присутствуют в структуре класса, но не создаются и не используются без каких-либо действий.
Характеристики
Одним из принципов объектно-ориентированного программирования является инкапсуляция. Инкапсуляция — это объединение полей и методов класса для защиты данных от прямого доступа программы. Доступ к полям объекта осуществляется через набор правил или свойств, то есть через интерфейс объекта. Скрытие или инкапсуляция (от слова «капсула») полей объекта осуществляется с помощью свойств.
Свойства имеют два специальных метода, get() и set(), а также поле объекта. Метод get() возвращает текущее значение соответствующего поля объекта, а метод set() вставляет новое значение в поле объекта.
Эти методы вызываются автоматически, когда программа получает или изменяет значение "свойства". Свойства синтаксиса ничем не отличаются от полей, они могут располагаться слева от оператора присваивания или быть членом выражения справа от оператора. Например, вы можете записать следующее свойство Aa целочисленного типа в закрытое поле int a.
public class treyg
{
private int a, b, c, p;
public int Aa
{
get { return a;}
set { a = value;}
}
public string ss;
. . .
После создания в программе объекта t можно присвоить новое значение полю a с помощью свойства Aa:
int A, B, C;
treyg t = new treyg();
A = Convert.ToInt32(textBox1.Text);
B = Convert.ToInt32(textBox2.Text);
C = Convert.ToInt32(textBox3.Text);
t.Aa = A; ,

или присвоение значения поля a объекта t переменной A, которая записывается как:


A = t.Aa; ,
где t.Aa — свойство класса treyg.
В этом примере мы преобразовали замкнутое поле a объекта t в открытое поле, используя свойство t.Аa. Есть и простой способ — объявить в классе спецификатор public вместо спецификатора private.
Очевидно, что свойства предназначены для доступа к закрытым полям класса.
В рассматриваемом примере мы можем добавить в свойство условия записи нового значения для поля класса, что значение больше 0 и что запись оборачивается только один раз, например:
set { if (a == 0 && value > 0) a = value;}
Любой из методов освящения может не существовать (но не оба). В этом случае у нас будут свойства только для чтения или только для записи.




Достарыңызбен бөлісу:
1   ...   15   16   17   18   19   20   21   22   ...   43




©emirsaba.org 2024
әкімшілігінің қараңыз

    Басты бет