Конституция Армении: Статья 18.1
Конституция Армении (Статья 18.1) закрепляет «исключительную миссию Армянской Апостольской Святой Церкви как национальной церкви в духовной жизни армянского народа, в деле развития его национальной культуры и сохранения его национальной самобытности»:
Поле класса

Поле класса

Материал из Википедии — свободной энциклопедии

По́ле кла́сса или атрибу́т (переменная-член, data member, class field, instance variable) в объектно-ориентированном программировании — переменная, описание которой создаёт программист при создании класса. Все данные объекта хранятся в его полях. Доступ к полям осуществляется по их имени. Обычно тип данных каждого поля задаётся в описании класса.

Поля структур

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

Статические поля

Обычно каждому объекту соответствуют собственные значения всех его полей. Также к полям класса относят статические поля (static data members, static class fields, class variables) — поля, общие для всех объектов класса.

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

В некоторых объектно-ориентированных языках программирования, таких как Java, не существует глобальных переменных, и поэтому статические поля классов — единственный способ хранения глобальных данных в программах на этих языках.

Битовые поля

Некоторые языки, такие как C++, позволяют определять битовые поля. Эти поля занимают менее одной единицы памяти (байт, слово); компилятор сам упаковывает несколько битовых полей в одну единицу памяти, позволяя при этом обращаться к битовым полям как к отдельным полям класса.

Понятие битовых полей не ограничивается полями классов: по аналогии оно было перенесено и на другие случаи упаковки в одну единицу памяти нескольких значений, например в сетевых протоколах и в форматах файлов.

Советы по использованию

Обычно, область доступа полей класса делают закрытой (private), то есть доступ к ним разрешается только методам того же класса. Чтобы предоставить пользователям класса значения его полей, используются свойства: они позволяют классу контролировать изменение его полей, например проверять принадлежность заданного значения диапазону допустимых значений.

Когда доступ к полю инкапсулируется процедурами свойства, возможно обновлять код, обрабатывающий изменения значения этого свойства, не нарушая совместимость с существующими пользователями класса. Поэтому, принято создавать процедуры свойства для доступа к полям класса, даже тогда, когда на начальном этапе разработки не требуется никакой дополнительной обработки присваиваемых полю значений.

Примеры использования

class foo { private:    int x; // Это поле — закрытое. Доступ к нему возможен только           // из методов класса ''foo''. public:    int y; //Это поле — открытое. Доступ к нему возможен из           //любого места программы. Рекомендуется так не делать.  // Эти два метода ([[свойство (программирование)#Процедуры свойств|акцессор]] // и [[w:en:Mutator method|мутатор]]) обеспечивают доступ к // закрытому полю x. Рекомендуется делать именно так.    int get_x() {return x;};    void set_x(int x) {this->x = x; };     static int z; // Это статическое поле. Оно принадлежит классу                  // foo целиком, а не его объектам.     char a:3; // Это битовые поля. В сумме они занимают    char b:3; // 8 бит, т.е. они будут размещены в одном    char c:1; // байте памяти. Таким образом возможно    char d:1; // обращаться к отдельным битам памяти. };
 type foo = class   private     x: Integer; // закрытое поле   public     y: Integer; // открытое поле  // для доступа к закрытому полю в Delphi можно использовать свойства     function get_x: Integer;      // акцессор     procedure set_x (x: Integer); // мутатор     property _x: Integer read get_x write set_x; // поддержка статических полей для .NET/Win32 введена в Delphi 8/2007 соответственно     class var z: integer; // Это статическое поле. Оно принадлежит классу                           // foo целиком, а не его объектам. // в Delphi не поддерживаются битовые поля   end;

Python

В Python поля и методы обычно называются общим термином атрибуты. Статические атрибуты могут быть перегружены в экземпляре. Атрибуты экземпляра определяются не в структуре класса, а в методах (например, конструкторе). Атрибуты, доступ к которым управляется отдельными методами, называются свойствами (синтаксически доступ к атрибутам и свойствам идентичен):

class Foo(object):z=0# атрибут класса (статический атрибут)def __init__(self,x,y):# конструкторself._x=x# закрытый атрибут (на уровне соглашения между программистами)self.y=y# открытый атрибутdef getx(self):returnself._x# методы для чтения,def setx(self,value):self._x=value# записиdef delx(self):delself._x# удаления свойстваx=property(getx,setx,delx,"Свойство 'x'.")# определение свойства

Применение:

foo = Foo(2, 4)               # создание экземпляра foo.y = 10                    # связывание значения с атрибутом foo.x = 30                    # то же, но эквивалентно foo.setx(30) print foo.x, foo.y, foo.z     # печать атрибутов del foo.x                     # удаление свойства print foo._x                  # не рекомендуется print foo.__x                 # не сработает, так как в классе нет такого атрибута
classHelloWorld{private$message;// Приватное поле класса HelloWorldpublic$global_message;// Публичное поле// Доступ к приватному полюpublicfunctionGetMessage(){return$this->message;}}?>

См. также