メタ
日本語 | 上位階層 |
英語 | meta |
ふりがな | めた |
フリガナ | メタ |
ある構造に対して、その「外側」の構造が存在すること。
非常に概念的に分かりにくい単語。
「ある世界」が存在するとき、その世界を包み込むような「外の世界」が存在するような構造、もしくはその「外の世界」に当たるような存在を「メタ」という。
単なる上下関係ではなく、一方が他方を所有するような「包括関係」にある。
また、上位の階層はさらに上位の階層から包み込まれるものであり、絶対的な最上位・最下位は存在しない。
つまり、ネストのような「入れ子関係」を指す。
ただし、入れ子関係は比較的「物理的」なものであり、また、下位と上位は異なる存在である場合が多い。
だが、メタは「概念的」なものであり、下位と上位は同じ存在である場合がある。
たとえば「UMLメタモデル」は、UMLの構造をUMLで表したものである。UML(下位)の構造を定義したもの(上位)という、概念的な上下関係が成り立ち、しかもその上位である「構造の定義」が、下位であるUMLによって記述されている。
このように、メタとは概念的な上下関係であり、かつ、下位と上位が同じ存在である。
これは物理的な考え方では想像しにくいため、それが分かりにくくしている。
非常に概念的に分かりにくい単語。
「ある世界」が存在するとき、その世界を包み込むような「外の世界」が存在するような構造、もしくはその「外の世界」に当たるような存在を「メタ」という。
単なる上下関係ではなく、一方が他方を所有するような「包括関係」にある。
また、上位の階層はさらに上位の階層から包み込まれるものであり、絶対的な最上位・最下位は存在しない。
つまり、ネストのような「入れ子関係」を指す。
ただし、入れ子関係は比較的「物理的」なものであり、また、下位と上位は異なる存在である場合が多い。
だが、メタは「概念的」なものであり、下位と上位は同じ存在である場合がある。
たとえば「UMLメタモデル」は、UMLの構造をUMLで表したものである。UML(下位)の構造を定義したもの(上位)という、概念的な上下関係が成り立ち、しかもその上位である「構造の定義」が、下位であるUMLによって記述されている。
このように、メタとは概念的な上下関係であり、かつ、下位と上位が同じ存在である。
これは物理的な考え方では想像しにくいため、それが分かりにくくしている。
参考サイト
- (参考サイトはありません)
// Sample.java
public class Sample
{
public static void main( String[] args )
{
// メタなクラスを作ります。
Meta meta = new Meta();
// もうひとつ作って、フィールドにセットします。
meta.meta = new Meta();
// さらにもうひとつ作ってセットします。
meta.meta.meta = new Meta();
// output()メソッドを呼び出します。
meta.output();
// Meta : Meta@3bb2b8
// Meta : Meta@152544e
// Meta : Meta@1cdeff
}
}
/**
* メタなクラス。
*/
class Meta
{
/** 自分自身をフィールドとして持ちます。 */
public Meta meta = null;
/**
* 出力します。
*/
public void output()
{
System.out.println( "Meta : " + this.toString() );
// metaフィールドのメソッドも呼び出します。
if( meta != null )
{
meta.output();
}
}
}
public class Sample
{
public static void main( String[] args )
{
// メタなクラスを作ります。
Meta meta = new Meta();
// もうひとつ作って、フィールドにセットします。
meta.meta = new Meta();
// さらにもうひとつ作ってセットします。
meta.meta.meta = new Meta();
// output()メソッドを呼び出します。
meta.output();
// Meta : Meta@3bb2b8
// Meta : Meta@152544e
// Meta : Meta@1cdeff
}
}
/**
* メタなクラス。
*/
class Meta
{
/** 自分自身をフィールドとして持ちます。 */
public Meta meta = null;
/**
* 出力します。
*/
public void output()
{
System.out.println( "Meta : " + this.toString() );
// metaフィールドのメソッドも呼び出します。
if( meta != null )
{
meta.output();
}
}
}
// Sample.java public class Sample { public static void main( String[] args ) { // メタなクラスを作ります。 Meta meta = new Meta(); // もうひとつ作って、フィールドにセットします。 meta.meta = new Meta(); // さらにもうひとつ作ってセットします。 meta.meta.meta = new Meta(); // output()メソッドを呼び出します。 meta.output(); // Meta : Meta@3bb2b8 // Meta : Meta@152544e // Meta : Meta@1cdeff } } /** * メタなクラス。 */ class Meta { /** 自分自身をフィールドとして持ちます。 */ public Meta meta = null; /** * 出力します。 */ public void output() { System.out.println( "Meta : " + this.toString() ); // metaフィールドのメソッドも呼び出します。 if( meta != null ) { meta.output(); } } }