В вычислительной технике атрибут — это спецификация, которая определяет свойство объекта , элемента или файла. Он также может ссылаться на или задавать конкретное значение для данного экземпляра такого. Для ясности атрибуты правильнее считать метаданными . Атрибут часто и в целом является свойством свойства. Однако в реальном использовании термин атрибут может и часто рассматривается как эквивалент свойства в зависимости от обсуждаемой технологии. Атрибут объекта обычно состоит из имени и значения. Для элемента это могут быть тип и имя класса, в то время как для файла это могут быть имя и расширение соответственно.
Форматы файлов изображений (например, JPEG , PNG и BMP ) не декодируются с использованием тех же операций (как бы похожи ни выглядели изображения — все это графические форматы данных). Аналогично, язык программирования не использует те же операции для вычисления числа с плавающей точкой и длинных целых чисел.
Например, в компьютерной графике линейные объекты могут иметь такие атрибуты, как толщина (с реальными значениями), цвет (с описательными значениями, такими как коричневый или зеленый, или значениями, определенными в определенной цветовой модели, такой как RGB), атрибуты штриховки и т. д. Круговой объект может быть определен аналогичными атрибутами плюс началом и радиусом. В отношении компьютерных систем атрибуты определяются, в частности, для атрибутов чтения или записи для определенного чтения или записи.
Если рассматриваемый элемент можно считать свойством ( CUSTOMER_NAME
) другой сущности (скажем CUSTOMER
), то элемент может иметь ноль или более собственных атрибутов (свойств) ( CUSTOMER_NAME
is of TYPE = "KINDOFTEXT"
).
В языке программирования C# атрибуты — это метаданные, прикрепленные к полю или блоку кода, например, сборки , члены и типы , и эквивалентны аннотациям в Java . Атрибуты доступны как компилятору, так и программно через отражение . Напротив, свойства в терминологии C# — это члены класса, которые синтаксически используются как переменные экземпляра (или класса), но реализуются как пара функций getter/setter. (При отсутствии setter свойства доступны только для чтения.)
Пользователи языка видят много примеров, где атрибуты используются для решения сквозных задач и других механистических или платформенных задач. Это создает ложное впечатление, что это их единственное предполагаемое назначение.
Их конкретное использование в качестве метаданных остается за разработчиком и может охватывать широкий спектр типов информации о любом данном приложении, классах и членах, которые не являются специфичными для экземпляра. Решение о предоставлении любого данного атрибута в качестве свойства также остается за разработчиком, как и решение об их использовании в качестве части более крупной прикладной структуры.
Атрибуты реализованы как классы, производные от . Они часто используются службами CLR , такими как взаимодействие COM , удаленное взаимодействие , сериализация , и могут быть запрошены во время выполнения.System.Attribute
В примере показано, как определяются атрибуты в C#:
[Obsolete("Используйте класс C1 вместо этого", IsError = true)] // вызывает сообщение компилятора о том, что public class C {...} // что C устарел public class ObsoleteAttribute : Attribute { // имя класса заканчивается на "Attribute" public string Message { get ; } // но может использоваться как "Obsolete" public bool IsError { get ; set ; } public ObsoleteAttribute () {...} public ObsoleteAttribute ( string msg ) {...} public ObsoleteAttribute ( string msg , bool error ) {...}} [Устарело] [Устарело("Это устарело")] [Устарело("Это устарело", false)] [Устарело("Это устарело", IsError = false)]
Позиционные параметры, такие как первый параметр типа string выше, являются параметрами конструктора атрибута. Параметры имени, такие как параметр Boolean в примере, являются свойством атрибута и должны иметь постоянное значение. [1]
Атрибуты следует сопоставлять с XML-документацией, которая также определяет метаданные, но не включена в скомпилированную сборку и, следовательно, не может быть доступна программно.
Отображение отмеченного атрибута и свойства флажка по мере его изменения.
< !doctype html> < html lang = "en" > < head > < body > < input name = "food" type = "meal" id = "meal" > < meta charset = "utf-8" > < title > attr demo </ title > < style > p { border ; 1px solid black ; font-family ; arial, sans-serif ; text-align center ; } b { color : blue ; } < / style > < script src = "https://code.jquery.com/jquery-1.10.2.js"></script > < / head > < body > < input id = "check1" type = "checkbox" tested = "checked" > < label for = "check1" > Проверьте меня </ label > < p ></ p > < скрипт > $ ( "input" ) . change ( function () { var $input = $ ( this ); $ ( "p" ). html ( ".attr('checked'): <b>" + $ input.attr ( " checked" ) + "</b><br>" + ".prop('checked'): <b>" + $ input.prop ( "checked" ) + "</b><br>" + ".is( ' :checked'): <b>" + $ input.is ( " :checked" ) + "</b>" ); }) .change ( ); </ скрипт > </ body > </ html >
. attr ( 'checked' ) : проверено . prop ( 'checked' ) : ложь . is ( ':checked' ) : ложь
. attr ( 'checked' ) : проверено . prop ( 'checked' ) : правда . is ( ':checked' ) : правда
Во многих постреляционных или многозначных базах данных, относительно SQL, таблицы являются файлами, строки являются элементами, а столбцы являются атрибутами. Как в базе данных, так и в коде атрибут является синонимом свойства и переменной, хотя атрибуты могут быть дополнительно определены для содержания значений и подзначений.
Первой из этих баз данных была операционная система Pick . Две текущие платформы включают Universe от Rocket U2 и Caché от InterSystems .
В XML атрибут — это конструкция разметки, состоящая из пары имя/значение, которая существует внутри начального тега или тега пустого элемента . Языки разметки, такие как HTML и XML , используют атрибуты для описания данных и форматирования данных.
Хорошим примером является процесс присвоения значений свойствам (элементам) XML. Обратите внимание, что значение элемента находится перед (отдельным) конечным тегом, а не в самом элементе. Сам элемент может иметь ряд установленных атрибутов ( NAME = "IAMAPROPERTY"
).
Если рассматриваемый элемент можно считать свойством ( CUSTOMER_NAME
) другой сущности (скажем CUSTOMER
), то элемент может иметь ноль или более собственных атрибутов (свойств) ( CUSTOMER_NAME
is of TYPE = "KINDOFTEXT"
).