メタ
| 日本語 | 上位階層 |
| 英語 | 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();
}
}
}




