ویژگی (برنامه‌نویسی) کیست؟ توضیح بده.
در برخی از زبان‌های شی‌گرا، ویژگی حالتی از اعضای کلاس است که خصوصیاتی ما بین فیلد و متد دارد. آن‌ها مانند فیلدها قابلیت خواندن و نوشتن دارند ولی خواندن و نوشتن در آن‌ها (معمولا) به فراخوانی یک تابع می‌انجامد.پشتیبانی در زبان‌ها.زبان‌هایی که property را پشتیبانی می‌کند شامل دلفی٬ ویژوال بیسیک سی‌شارپ و بسیاری از زبان‌های شی‌گرا می‌شود ولی بعضی از زبان‌های شی گرا مانند جاوا این قابلیت را به صورت محدودتری دارا هستند.مثال.Delphi/Free Pascal.type TPen = class private m_Color: Integer; function Get_Color: Integer; procedure Set_Color(RHS: Integer); public property Color: Integer read Get_Color write Set_Color;end;function TPen.Get_Color: Integer;begin Result := m_Colorend;procedure TPen.Set_Color(RHS: Integer);begin m_Color := RHSend;// accessing:var pen: TPen;pen.Color := not pen.Color;Visual Basic 6.' in a class named clsPenPrivate m_Color As LongPublic Property Get Color() As Long Color = m_ColorEnd PropertyPublic Property Let Color(ByVal RHS As Long) m_Color = RHSEnd Property' accessing:Dim pen As New clsPenpen.Color = Not pen.ColorVisual Basic (.NET to 2008).Public Class Pen Private m_Color As Integer ' Private field Public Property Color As Integer ' Public property Get Return m_Color End Get Set(ByVal Value As Integer) m_Color = Value End Set End PropertyEnd Class' accessing:Dim pen As New Pen()pen.Color = Not pen.ColorC#.class Pen private int m_Color; // private field public int Color // public property get return m_Color; set m_Color = value;// accessing:Pen pen = new Pen();pen.Color = ~pen.Color; // bitwise complement ...// another silly example:pen.Color += 1; // a lot clearer than "pen.set_Color(pen.get_Color() + 1)"!در نسخه اخیر آن به صورت ساده‌تری درست شده‌است.class Shape {C++.این قابلیت را به صورت درجه یک دارا نیست ولی با راه‌های مختلفی می‌توان آن‌را شبیه سازی کرد.template &lt;typename T&gt; class property { T value; public: T &amp; operator = (const T &amp;i) { ::std::cout « i « ::std::endl; return value = i; // This template class member function template serves the purpose to make // typing more strict. Assignment to this is only possible with exact identical // types. template &lt;typename T2&gt; T2 &amp; operator = (const T2 &amp;i) { ::std::cout « "T2: " « i « ::std::endl; T2 &amp;guard = value; throw guard; // Never reached. operator T const &amp; () const { return value;};struct Foo { // Properties using unnamed classes. class { int value; public: } alpha; class { float value; public: } bravo;struct Bar { // Using the property&lt;&gt;-template. property &lt;bool&gt; alpha; property &lt;unsigned int&gt; bravo;int main () { Foo foo; foo.alpha = 5; foo.bravo = 5.132f; Bar bar; bar.alpha = true; bar.bravo = true; // This line will yield a compile time error // due to the guard template member function. ::std::cout « foo.alpha « ", " « foo.bravo « ", " « bar.alpha « ", " « bar.bravo « ::std::endl; return 0;C++, Microsoft &amp; C++Builder specific.// declspec_property.cppstruct S int i; void putprop(int j) i = j; int getprop() return i; __declspec(property(get = getprop, put = putprop)) int the_prop;int main() S s; s.the_prop = 5; return s.the_prop;Dev D.class Pen private int m_color; // private field // public get property public int color () { return m_color; // public set property public int color (int value) { return m_color = value;auto pen = new Pen;pen.color = ~pen.color; // bitwise complement// the set property can also be used in expressions, just like regular assignmentint theColor = (pen.color = 0xFF0000);Python.از پایتون ۲/۲ به بعد پشتیبانی شده‌است.class Pen(object): def __init__(self): self.__color = 0 # "private" variable self.__writeonly = "You can't read this!" def _set_color(self, color): self.__color = color def _get_color(self): return self.__color color = property(_get_color, _set_color) # read/write access translates to get/set methods def _set_writeonly(self, new_value): self.__writeonly = new_value writeonly = property(fset = _set_writeonly) # write-only access is provided (reading throws an exception)"pen = Pen()pen.color = ~pen.color # bitwise complement ...print pen.writeonly # raise "AttributeError: unreadable attribute"pen.writeonly = "Something Else" # codice_1 is now "Something Else"print pen._Pen__writeonlyPHP.class Pen { private $_color; function __set($property, $value) { switch ($property) { case 'Color': $this-&gt;_color = $value; break; function __get($property) { switch ($property) { case 'Color': return $this-&gt;_color; break;$p = new Pen();$p-&gt;Color = !$p-&gt;Color;echo $p-&gt;Color;F#.type Pen() = class let mutable _color = 0 member this.Color with get() = _color and set value = _color &lt;- valueendlet pen = new Pen()pen.Color &lt;- ~~~pen.ColorObjective C 2.0. @interface Pen : NSObject { NSColor *color;@property(copy) NSColor *color; // color values always copied.@end@implementation Pen@synthesize color; // synthesize accessor methods.@end// Example UsagePen *pen = [Pen new];pen.color = [NSColor blackColor];float red = pen.color.redComponent;[pen.color drawSwatchInRect:NSMakeRect(0, 0, 100, 100)];