首页 百科知识 作为组件的对象

作为组件的对象

时间:2022-10-16 百科知识 版权反馈
【摘要】:例如Verilog中例化的模块也是对象,每个都有自己的数据空间和一系列任务和函数。作为类实例的验证组件为类和硬件成员之间的连接提供了可操作性。Simula 67是最早的面向对象程序设计语言之一,开发它的目的就是构建离散事件模型。离散事件仿真语言也可追溯到Simula 67。在离散事件仿真器中使用面向对象程序设计构成了一个完整的领域。Simula也为程序组件重用领域和程序库构建领域提供了大量的灵感。

3.6 作为组件的对象

有趣的是,HDL语言,如Verilog和VHDL,虽然不是面向对象语言,但也是围绕着一些类似于类和对象的概念构成。例如Verilog中例化的模块也是对象,每个都有自己的数据空间和一系列任务和函数。正如OOP程序中的对象一样,模块的每个实例都是独立的副本,所有实例共享一套相同的任务和函数,共享同一套接口,但内部数据成员是独立的。模块由接口控制,不支持继承(因此不能组成IS-A关系)和类型参数化,并且它们是静态的,这些都让它不适合成为真正的OOP。

类和模块之间的相似性提供了在硬件背景下使用类对象的可能。作为类实例的验证组件为类和硬件成员之间的连接提供了可操作性。SystemVerilog的设计者在用类扩展Verilog时利用了这层关系,使得类可以像模块一样工作。

表3-4比较了Verilog、SystemVerilog和C++的类特性。

表 3-4

img84

SystemVerilog的虚接口特性让这点成为可能,虚接口是接口的指针(这里的接口指的是SystemVerilog的接口结构)。类中可包含指向未存在接口的指针(未例化)。当类被例化后,虚接口指向实接口,这让类对象既可以驱动又可响应管脚信号。SystemC模块作为类被实现,管脚信号放入端口列表中,提供同类结构。

工具条:Simula 67

类对象和硬件仿真之间的关系已经被关注了很长时间。Simula 67(1)是最早的面向对象程序设计语言之一,开发它的目的就是构建离散事件模型。Simula 67不仅有类对象的概念和仿真内核,甚至定义有PLI与外部的Fortran程序相连。Simula语言提供关键字DETACH 和 RESUME,允许子进程的产生和进程的重新连接,类似于fork/join。它有一个特殊的内嵌类SIMULATION,提供事件链表特性。

尽管在Simula 67没有用到对象或面向对象这样的用语,但现代所有的面向对象的程序都可以追溯到这个早期的程序语言。离散事件仿真语言也可追溯到Simula 67。在许多人看来,将面向对象的程序和硬件仿真放到一起似乎是个新想法,其实这两个概念本来就是在一起的,只是后来分道扬镳了而已。在离散事件仿真器中使用面向对象程序设计构成了一个完整的领域。

Oslo大学信息学院的Ole-Johan Dahl and Kristen Nygaard说道(2)

Simula 67在世界各地仍被广泛使用,但是,它对面向对象程序设计的主要影响是它引入了程序设计的一个主要分支。从19世纪80年代早期开始,Simula的相关概念就在抽象数据类型和并行运行程序模块的讨论时体现出了重要性。Simula 67和修订的Simula都曾被用于VLSI电路(Intel Caltech Stanford)设计。Xerox PARC的Alan Kay 工作组将Simula作为他们研发Smalltalk(19世纪80年代第一个语言版本)的平台,通过将用户绘图接口和交互程序执行结合起来,大大地拓展了面向对象的程序设计。Bjarne Stroustrup通过将Simula的关键概念用于C程序语言,从而开始开发C++(19世纪90年代)。Simula也为程序组件重用领域和程序库构建领域提供了大量的灵感。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈