Свойство (программирование)

Материал из Seo Wiki - Поисковая Оптимизация и Программирование
Перейти к навигацииПерейти к поиску

Свойство - интерфейс доступа программиста к соответствующей переменной объекта. Свойство может быть просто другим именем переменной (поля) объекта, тогда компилятор подставляет на место свойства переменную. Если это не так - то при обращении программиста к свойству вызывается определённый метод, который выполняет определённые операции с объектом. В некоторых языках при обращении к свойству всегда вызывается метод, который, в простейшем случае, просто выполняет запись или чтение определённой переменной объекта.

Свойства повышают гибкость и безопасность программирования и являются важным инструментом, применяемым при разработке ПО.

Методы свойств

Во многих языках программирования свойства реализуются в виде пары методов: метод, получающий текущее значение свойства, называется акцессор (accessor); метод, задающий новое значение свойства — мутатор (mutator). В языках программирования, не поддерживающих свойства, например C++ и Java, пара из акцессора и мутатора является общепринятым суррогатом для их замены.

Принято называть методы свойств именем свойства с приставками get и set: например, для свойства Xyzzyget_Xyzzy и set_Xyzzy (традиционный стиль Си) либо GetXyzzy и SetXyzzy (стиль CamelCase). В связи с этой схемой наименования за методами свойств закрепились жаргонные названия getter и setter.

Свойства в C#

Свойства в C# - поля с логическим блоком, в котором есть ключевые слова get и set.

Пример класса со свойством: <source lang=csharp> class MyClass {

   private int field;
   public int Field
   {
       get
       {
           return field;
       }
       set
       {
           field = value;
       }
   }

} </source>

Свойства в Delphi

Для описания свойства в Delphi служит слово property.

Пример класса со свойством: <source lang=delphi>TMyClass = class private

 FMyField: Integer;
 procedure SetMyField(const Value: Integer);
 function GetMyField: Integer;

protected public

 property MyField: Integer read GetMyField write SetMyField;

end;</source>

Свойства в ActionScript

<source lang=actionscript> class MyClass {

   private _foo : int;
   
   public function get foo () : int {
        return _foo;
   }
   public function set foo (foo : int) : void {
        _foo = foo;
   }

} </source>

Свойства в Objective C

<source lang=objc> @interface Company : NSObject { NSString *name; }

@property(retain) NSString *name;

@end

@implementation Company

@synthesize name;

@end </source>

Свойства в Ruby

Описания свойства в Ruby ничем не отличается от описания метода. Например, для создания свойства duration у класса Song нужно описать методы duration и duration=(value) <source lang=ruby>class Song

 def duration
   @duration
 end
 def duration=(value)
   @duration = value
 end

end</source>

Однако простое обращение к внутренней переменной объекта может быть заменено на вызов метода attr_accessor :duration

<source lang=ruby>class Song

 attr_accessor :duration

end</source>

Более интересным будет пример создания свойства duration_in_minutes, которое будет возвращать или устанавливать время длительности в минутах:

<source lang=ruby>class Song

 def duration_in_minutes
   @duration/60.0
 end
 def duration_in_minutes=(value)
   @duration = (value*60).to_i
 end

end</source>

При этом изменение свойства duration_in_minutes повлияет на свойство duration. Например

<source lang=ruby>song = Song.new song.duration_in_minutes = 1.2 print song.duration # напечатает 72</source>

be-x-old:Уласьцівасьць (праграмаваньне) en:Property (programming) ja:プロパティ nl:Property pt:Propriedade (programação)

Если вам нравится SbUP.com Сайт, вы можете поддержать его - BTC: bc1qppjcl3c2cyjazy6lepmrv3fh6ke9mxs7zpfky0 , TRC20 и ещё....