

コンピューティングにおいて、属性とは、オブジェクト、要素、またはファイルのプロパティを定義する仕様です。また、特定のインスタンスの特定の値を参照したり、設定したりすることもできます。明確にするために、属性は、より正確にはメタデータと考えるべきです。属性は、多くの場合、プロパティのプロパティです。ただし、実際の使用法では、議論されているテクノロジに応じて、属性という用語はプロパティと同等として扱われる場合があり、多くの場合そう扱われます。オブジェクトの属性は通常、名前と値で構成されます。要素の場合、これらはタイプとクラス名であり、ファイルの場合、これらは名前と拡張子です。
ルールとタイピング
- ルール: 名前付き属性にはそれぞれ、操作と呼ばれる一連のルールが関連付けられています。たとえば、文字を合計したり、整数 配列を画像オブジェクトと同じ方法で操作および処理したりすることはできません。また、テキストを浮動小数点 ( 10 進数)の型であるかのように処理することもできません。
- データ型: オブジェクト定義は、表現形式、デフォルト値、および正当な操作 (ルール) と制限 (「ゼロによる除算は許容されない」など) で構成されるデータ型を課すことによって拡張できます。これらはすべて、属性の定義に潜在的に関係しており、逆に、それらをそのオブジェクトの型の属性と見なすこともできます。
画像ファイル形式 (たとえば、JPEG、PNG、BMP ) は、同じ操作を使用してデコードされるわけではありません (画像が似ているように見えても、これらはすべてグラフィックス データ形式です)。同様に、プログラミング言語は、浮動小数点型の数値と型付き長整数を評価するために同じ操作を使用するわけではありません。
たとえば、コンピュータ グラフィックスでは、線オブジェクトには、太さ (実際の値)、色 (茶色や緑などの説明的な値、または RGB などの特定の色モデルで定義された値)、破線属性などの属性を設定できます。円オブジェクトは、同様の属性に加えて、原点と半径で定義できます。コンピュータ システムでは、特定の読み取りまたは書き込みの読み取り属性または書き込み属性に対して属性が定義されます。
属性の使用
CUSTOMER_NAME問題の要素が別のエンティティ(たとえば )のプロパティ( )と見なせる場合CUSTOMER、その要素は独自の属性(プロパティ)を 0 個以上持つことができます(CUSTOMER_NAMEは のものですTYPE = "KINDOFTEXT")。
C#
C# プログラミング言語では、属性はアセンブリ、メンバー、型などのフィールドまたはコード ブロックに添付されたメタデータであり、Java の注釈に相当します。属性は、コンパイラとリフレクションを介してプログラムの両方からアクセスできます。対照的に、C# 用語のプロパティは、構文的にはインスタンス (またはクラス) 変数のように使用されるクラスのメンバーですが、getter/setter 関数のペアとして実装されます (setter がない場合、プロパティは読み取り専用です)。
言語のユーザーは、横断的な問題やその他のメカニズムやプラットフォームの使用に対処するために属性が使用される例を数多く目にします。これにより、これが属性の唯一の目的であるという誤った印象を与えます。
メタデータとしての具体的な使用方法は開発者に委ねられており、インスタンス固有ではない、任意のアプリケーション、クラス、メンバーに関する幅広い種類の情報をカバーできます。任意の属性をプロパティとして公開するかどうかの決定も、より大きなアプリケーション フレームワークの一部として使用するかどうかの決定と同様に、開発者に委ねられています。
属性は、 から派生したクラスとして実装されます。これらは、 COM相互運用性、リモート処理、シリアル化などのCLRサービスによって頻繁に使用され、実行時に照会できます。
System.Attribute
この例では、C# で属性を定義する方法を示します。
[Obsolete("Use class C1 instead", 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)]
上記の文字列型の最初のパラメータのような位置パラメータは、属性のコンストラクタのパラメータです。例のブールパラメータのような名前パラメータは、属性のプロパティであり、定数値である必要があります。[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 ; 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" selected = "checked" >
< label for = "check1" >チェックしてください</ label >
< p ></ p >
< script >
$ ( "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 (); </ script > </ body > </ html >
クリックする前に
. attr ( 'checked' ) :チェック済み. prop ( 'checked' ) : false . is ( ':checked' ) : false
クリック後
. attr ( 'checked' ) :チェック済み. prop ( 'checked' ) : true . is ( ':checked' ) : true
多値データベース
多くのポストリレーショナルまたは多値データベース システムでは、SQL と比較して、テーブルはファイル、行は項目、列は属性です。データベースとコードの両方で、属性はプロパティおよび変数と同義ですが、属性には値とサブ値を含めるようにさらに定義できます。
これらのデータベースの最初のものはPick オペレーティング システムでした。現在の 2 つのプラットフォームには、Rocket U2 の UniverseとInterSystems の Cachéがあります。
テキスト
XMLでは、属性は開始タグまたは空要素タグ内に存在する名前と値のペアで構成されるマークアップ構造です。 HTMLやXMLなどのマークアップ言語は、属性を使用してデータとデータの書式を記述します。
良い例としては、XML がプロパティ (要素) に値を割り当てるプロセスが挙げられます。要素の値は、要素自体ではなく、(別の) 終了タグの前にあることに注意してください。要素自体には、いくつかの属性セット ( NAME = "IAMAPROPERTY") がある場合があります。
CUSTOMER_NAME問題の要素が別のエンティティ(たとえば )のプロパティ( )と見なせる場合CUSTOMER、その要素は独自の属性(プロパティ)を 0 個以上持つことができます(CUSTOMER_NAMEは のものですTYPE = "KINDOFTEXT")。
参照
参考文献
- ^ メッセンベック、ハンスペーター (2002-03-25)。 「高度な C#: 可変数のパラメーター」(PDF)。システムソフトウェア研究所、リンツのヨハネス・ケプラー大学、Fachbereich Informatik。 p. 44.2011 年 8 月 8 日に取得。
