Обект (програмиране): Разлика между версии

Изтрито е съдържание Добавено е съдържание
DKosev (беседа | приноси)
StilianK (беседа | приноси)
Ред 36:
Като пример за обект от реалният свят може да дадем конкретен екземпляр от вида "лъв". Ако дефинираме основни състояния (свойства) на видът "лъв" ''възраст'' и ''пол'', а основно поведение (функция) - ''ловуване'' и "вградим" тези състояния и поведения в клас "Лъв", можем да създаваме отделни обекти, които конкретизираме чрез задаване на различни стойности на състоянията и поведението. Т.е. разликата между клас и обект се състои в това, че обекта е конкретен случай (инстанция) на класа. В C# това би изглеждало така:
<source lang="html4strict">
public class LeonLion
{
private int age;
Ред 61:
}
 
class MyLeonMyLion
{
static void Main()
{
LeonLion myLeonmyLion = new LeonLion();
myLeonmyLion.Age = 2;
myLeonmyLion.Sex = "male";
}
}
</source>
[[File:Scheme.jpg |дясно|Създаване на обект]]
На [[ Променлива (програмиране) | променливата ]] '''myLeonmyLion''' от тип '''LeonLion''' присвояваме новосъздадена инстанция на класа '''LeonLion'''.<br> Променливата '''myLeonmyLion''' стои в [[ Стек | стека ]], а нейната стойност (конкретната инстанция на класа '''LeonLion''')<br> стои в динамичната памет (managed heap). (''вж схемата'')
 
При създаването на обект с оператора '''new''' се заделя памет и се извършва начална инициализация на данните му. За да стане това се използва специален метод на класа, наречен конструктор.
Ред 78:
Деконструирането (освобождаването) на „обекти“ става възможно чрез вградената в [[Microsoft .NET Framework | .NET]] [[CLR | CLR]] система за почистване на паметта (garbage collector), която се грижи за освобождаването на неизползвани обекти , вместо това да налага ръчно отстраняване. Обектите, които не са нужни, автоматично се унищожават и паметта, която заемат се освобождава. Ръчното премахване на „ обект“ става по този начин:
 
myLeonmyLion = ''null'';
 
Това не унищожава обекта, но го оставя в състояние, в което той е недостъпен. При следващото използване на системата за почистване на паметта (garbage collector), той ще бъде изчистен.
Ред 86:
Операторът "." не е необходим в случай, че достъпваме поле или свойство на даден клас в тялото на метод от същия клас.
Можем да достъпваме полетата и свойствата или с цел да извлечем данните от тях, или с цел да запишем нови данни. В случай на свойство, достъпът се реализира по абсолютно същия начин както и при поле – C# ни предоставя тази възможност. Това се постига чрез двете специални
ключови думи get и set в дефиницията на свойството, които извършват съответно извличането на стойността на свойството и присвояването на нова стойност. В дефиницията на класа ''LeonLion'' (която дадохме по-горе) свойства са ''Age'' и ''Sex''.
 
=== Извикване на методи на обект ===