计算机科学中,实化(英語:reification)是把抽象的想法(idea)转化为明确的数据模型程序设计语言创建的其他对象的过程。通过实化,以前是隐式的、未表示的、可能是不可表示的被显式形成可概念(逻辑或计算)操作的。非正式地,实化也常被称作在特定系统范围内把某些东西变为“头等公民”即物件化。 实化是概念分析知识表示中最常用的技术。

在程序设计语言中的实化与反射

在程序设计语言中,把用户程序或者程序设计语言某一部分本来在编译期运行期是隐式的,表示为语言自身,这一过程称为实化。这使得其对程序可当作普通数据来利用。在具有反射的程序设计语言中,实化的数据表示了相关的被实化的领域。实化的数据常被称作头等对象

数据实化

数据实化涉及在形式规范英语formal specification中找到抽象数据类型的更为具体的表示。 [4] 例如,抽象数据类型集合(set)可以用map或者array来实化。

概念建模中的实化

概念建模英语Conceptual model (computer science)中广泛使用了实化。[5]实化一个关系(relationship)意味着把它视作一个实体。实化一个关系的目的是令其显式,必要时可以增加额外的信息。例如,关系IsMemberOf(member:Person, Committee)表示某人是某委员会的成员。下图左侧用表的形式列出了人P1是委员会C1C2的成员;人P2是委员会C1成员。

 
Example population of 关系IsMemberOf的实化。

这一关系,也可看作实体。见图示的右侧。称作该实体实化了这个关系。这个实体类型为Membership。现在,可以给这个关系实体增加新的信息,如某人属于某委员会是由谁来提名加入的,可表示为IsNominatedBy(Membership, Person)

与其密切相关的用法见实化 (知识表示)英语Reification (knowledge representation)

实化在UML中

 
UML的类图表示Membership关系例子。

UML提供了关联类(association class)用于构建被实化的关系类型。关联类既是关联又是类。[6]

参见

参考文献

  1. ^ The Java Language Specification, section 4.7页面存档备份,存于互联网档案馆), Java SE 7 Edition
  2. ^ Smalltalk Blocks And Closures. C2.com. 2009-10-15 [2010-10-09]. (原始内容存档于2010-02-06). 
  3. ^ J. Malenfant, M. Jacques and F.-N. Demers, A Tutorial on Behavioral Reflection and its Implementation页面存档备份,存于互联网档案馆
  4. ^ Formal Methods Europe, Frequently Asked Questions, part 13页面存档备份,存于互联网档案馆).
  5. ^ Antoni Olivé, Conceptual Modeling of Information Systems, Springer Verlag, 2007.
  6. ^ Unified Modeling Language, UML superstructure, Object Management Group, 2007-11-02.