Атрибут (вычисление)
Эта статья нуждается в дополнительных ссылок для проверки . ( январь 2022 г. ) |
![](http://upload.wikimedia.org/wikipedia/commons/thumb/9/98/CPT-OOP-objects_and_classes_-_attmeth.svg/220px-CPT-OOP-objects_and_classes_-_attmeth.svg.png)
![](http://upload.wikimedia.org/wikipedia/commons/thumb/7/7c/Relational_database_terms.svg/220px-Relational_database_terms.svg.png)
В вычислениях атрибут свойство — это спецификация, определяющая объекта , элемента или файла. Он также может ссылаться или устанавливать конкретное значение для данного экземпляра. Для ясности атрибуты правильнее считать метаданными . Атрибут часто и обычно является свойством свойства. Однако в реальном использовании термин «атрибут» может рассматриваться и часто рассматривается как эквивалент свойства в зависимости от обсуждаемой технологии. Атрибут объекта обычно состоит из имени и значения. Для элемента это могут быть имя типа и класса, а для файла — имя и расширение соответственно.
Правила и типирование [ править ]
- Правила: Каждый именованный атрибут имеет связанный набор правил, называемых операциями : например, нельзя суммировать символы или манипулировать и обрабатывать целочисленный массив так же, как объект изображения. Никто не обрабатывает текст так, как если бы он был типом с плавающей запятой ( десятичные числа ).
- Типы данных: Отсюда следует, что определение объекта может быть расширено путем введения типизации данных , которая может состоять из формата представления, значения по умолчанию, а также допустимых операций (правил) и ограничений (например, «деление на ноль недопустимо»). все они потенциально участвуют в определении атрибута, или, наоборот, их можно рассматривать как атрибуты типа этого объекта.
Форматы файлов изображений (например , JPEG , PNG и BMP ) не декодируются с использованием одних и тех же операций (как бы похожи ни были изображения — все это форматы графических данных). Аналогично, язык программирования не использует одни и те же операции для вычисления чисел с плавающей запятой и типизированных длинных целых чисел.
Например, в компьютерной графике линейные объекты могут иметь такие атрибуты, как толщина (с реальными значениями), цвет (с описательными значениями, такими как коричневый или зеленый, или значения, определенные в определенной цветовой модели, например RGB), атрибуты пунктирной линии и т. д. Объект-круг может быть определен с использованием аналогичных атрибутов, а также начала координат и радиуса. Применительно к компьютерным системам атрибуты определяются, в частности, для чтения или записи, атрибуты для конкретного чтения или записи.
Использование атрибута [ править ]
Если бы рассматриваемый элемент можно было считать свойством ( CUSTOMER_NAME
) другой сущности (скажем, CUSTOMER
), элемент может иметь ноль или более собственных атрибутов (свойств) ( CUSTOMER_NAME
имеет TYPE = "KINDOFTEXT"
).
С# [ править ]
В языке программирования C# атрибуты — это метаданные, прикрепленные к полю или блоку кода, такие как сборки , члены и типы , и эквивалентны аннотациям в Java . Атрибуты доступны как компилятору, так и программно посредством отражения . Напротив, свойства в терминологии C# являются членами класса, которые синтаксически используются как переменные экземпляра (или класса), но реализованы как пара функций получения/установки. (При отсутствии установщика свойства доступны только для чтения.)
Пользователи языка видят множество примеров, когда атрибуты используются для решения сквозных задач и других механизмов или платформ. Это создает ложное впечатление, что это их единственная цель.
Их конкретное использование в качестве метаданных остается на усмотрение разработчика и может охватывать широкий спектр типов информации о любом данном приложении, классах и членах, не зависящих от конкретного экземпляра. Решение о предоставлении любого данного атрибута как свойства также остается за разработчиком, как и решение использовать его как часть более крупной платформы приложения.
Атрибуты реализованы как классы, производные от System.Attribute
. Они часто используются службами CLR , такими как COM совместимость , удаленное взаимодействие , сериализация , и могут быть запрошены во время выполнения.
В примере показано, как атрибуты определяются в C#:
[Obsolete("Вместо этого используйте класс C1", IsError = true)] // вызывает сообщение компилятора о том, что
public class C {...} // что C является устаревшим
public class ObsoleteAttribute : Attribute { // имя класса заканчивается на "Attribute"
общедоступная строка Сообщение { получить ; } // но может использоваться как «Устаревший»
public bool IsError { get ; набор ; }
public ObsoleteAttribute () {...}
public ObsoleteAttribute ( string msg ) {...}
public ObsoleteAttribute ( string msg , bool error ) {...}}
[Устарело]
[Устарело ("Это устарело")]
[ Устарело("Это устарело", false)]
[Устарело("Это устарело", IsError = false)]
Позиционные параметры, такие как первый параметр строки типа выше, являются параметрами конструктора атрибута. Параметры имени, такие как логический параметр в примере, являются свойством атрибута и должны иметь постоянное значение. [1]
Атрибуты следует сопоставлять с документацией XML, которая также определяет метаданные, но не включена в скомпилированную сборку и, следовательно, не может быть доступна программно.
HTML и JavaScript [ править ]
Отображение атрибута «проверено» и свойства флажка по мере его изменения.
<!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 ; 1 пиксель, сплошной черный ;
семейство шрифтов ; Ариал, без засечек ;
выравнивание текста по центру ;
}
б {
цвет : синий ;
}
</ style >
< script src = "https://code.jquery.com/jquery-1.10.2.js" >/ script >
</ head >
< body >
< input id = "check1" type = " checkbox" = " " <
label for = " check1 > Check </label> <p> me
</p> input <script> checked >
" ) $
( " " .
checked изменение ( function () {
var $input = $ ( this );
$ ( "p" ). html ( ".attr( 'проверено'): <b>" + $input . attr ( "проверено" ) + "< /b><br>" +
".prop( 'отмечено'): <b>" + $input ( .prop " отмечено" ) + "</b><br>" +
".is( ':отмечено' ): <b>" + $input . is ( ":checked" ) + "</b>" );
})
. изменять ();
</ script >
</ body >
</ html >
прежде чем нажать [ изменить ]
. attr ( 'проверено' ) : проверено
. prop ( 'проверено' ) : false
. есть ( ':checked' ) : ложь
после нажатия [ изменить ]
. attr ( 'проверено' ) : проверено
. prop ( 'проверено' ) : true
. есть ( ':checked' ) : правда
Многозначные базы данных [ править ]
Во многих постреляционных или многозначных системах баз данных, относительно SQL, таблицы представляют собой файлы, строки — это элементы, а столбцы — атрибуты. Как в базе данных, так и в коде атрибут является синонимом свойства и переменной, хотя атрибуты можно дополнительно определить так, чтобы они содержали значения и подзначения.
Первой из таких баз данных стала операционная система Pick . Две текущие платформы включают Rocket U2 Universe и InterSystems Caché .
XML [ править ]
В XML атрибут тега — это конструкция разметки, состоящая из пары имя/значение, которая существует внутри начального тега или тега пустого элемента . Языки разметки, такие как HTML и XML , используют атрибуты для описания данных и их форматирования.
Хорошим примером является процесс присвоения значений свойствам (элементам) XML. Обратите внимание, что значение элемента находится перед (отдельным) закрывающим тегом, а не в самом элементе. Сам элемент может иметь ряд установленных атрибутов ( NAME = "IAMAPROPERTY"
).
Если бы рассматриваемый элемент можно было считать свойством ( CUSTOMER_NAME
) другой сущности (скажем, CUSTOMER
), элемент может иметь ноль или более собственных атрибутов (свойств) ( CUSTOMER_NAME
имеет TYPE = "KINDOFTEXT"
).
См. также [ править ]
- Пара атрибут-значение
- Атрибут файла
- Расширенные атрибуты файла
- Область (информатика)
- Свойство (программирование)
- Java-аннотация
- Метаданные
Ссылки [ править ]
- ^ Мессенбёк, Ханспетер (25 марта 2002 г.). «Расширенный C#: переменное количество параметров» (PDF) . Институт системного программного обеспечения, Университет Иоганна Кеплера, Линц, факультет компьютерных наук. п. 44 . Проверено 8 августа 2011 г.