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

Изтрито е съдържание Добавено е съдържание
м неправилно членуване - предлог и пълен член
Xqbot (беседа | приноси)
м Bot: Replace deprecated <source> tag and "enclose" parameter
Ред 37:
 
Като пример за обект от реалния свят може да дадем конкретен екземпляр от вида „лъв“. Ако дефинираме основни състояния (свойства) на вида „лъв“ ''възраст'' и ''пол'', а основно поведение (функция) – ''ловуване'' и „вградим“ тези състояния и поведения в клас „Лъв“, можем да създаваме отделни обекти, които конкретизираме чрез задаване на различни стойности на състоянията и поведението. Т.е. разликата между клас и обект се състои в това, че обектът е конкретен случай (инстанция) на класа. В C# това би изглеждало така:
<sourcesyntaxhighlight lang="CSharp">
public class Lion
{
Ред 72:
}
}
</syntaxhighlight>
</source>
[[Файл:Scheme.jpg|дясно|Създаване на обект]]
На [[Променлива (програмиране)|променливата]] '''myLion''' от тип '''Lion''' присвояваме новосъздадена инстанция на класа '''Lion'''.<br> Променливата '''myLion''' стои в [[Стек (структура от данни)|стека]], а нейната стойност (конкретната инстанция на класа '''Lion''')<br> стои в динамичната памет (managed heap). (''вж схемата'')
Ред 79:
 
Деконструирането (освобождаването) на „обекти“ става възможно чрез вградената в [[Microsoft .NET Framework|.NET]] [[CLR]] система за почистване на паметта (garbage collector), която се грижи за освобождаването на неизползвани обекти, вместо това да налага ръчно отстраняване. Обектите, които не са нужни, автоматично се унищожават и паметта, която заемат се освобождава. Ръчното премахване на „ обект“ става по този начин:
<sourcesyntaxhighlight lang="CSharp">
myLion = null;
</syntaxhighlight>
</source>
Това не унищожава обекта, но го оставя в състояние, в което той е недостъпен. При следващото използване на системата за почистване на паметта (garbage collector), той ще бъде изчистен.
 
Ред 94:
=== Извикване на методи на обект ===
Извикването на методите на даден обект става чрез оператора „'''.'''“ (точка). Операторът точка не е нужен единствено в случай, че [[Метод (програмиране)|методът]] се вика в друг метод от същия клас.
<sourcesyntaxhighlight lang="CSharp">
using System;
namespace Animals
Ред 130:
}
 
</syntaxhighlight>
</source>
Ако в нашия клас ''Lion'' добавим ново свойство ''Name'' и ново поведение (метод) ''LionVoice()'', то можем да зададем име ''Leo'' на обекта ''MyLion'' чрез ''myLion.Name = "Leo";'' и да извикаме новия метод чрез ''Lion.LionVoice();''. Резултатът ще бъде отпечатан на конзолата:
<sourcesyntaxhighlight lang="html4strict">
The name of my Lion is Leo
He said: GRRRRRRRAAAUUUU
</syntaxhighlight>
</source>
 
== Създаване и освобождаване на обекти в [[PHP]] ==
<sourcesyntaxhighlight lang="php">
<?php
class Lion
Ред 181:
echo("My ".$myLion->get_age()." years old lion is ".$myLion->get_sex().". My lion ".$myLion->Hunting()." hunt. ".$myLion->LionVoice());
?>
</syntaxhighlight>
</source>
Резултат от кода:
<sourcesyntaxhighlight lang="html4strict">
My 2 years old lion is male. My lion can hunt. My lion said: GRRRRRRRAAAUUUU
</syntaxhighlight>
</source>
Създаването на обекти в езика PHP се осъществява чрез ключовата дума new, която създава нова инстанция на класа. Достъпването до методи на класа става използвайки синтаксиса: „$обект -> функция (параметър);“. Параметрите са нужни само ако функцията изисква такива.