Ada封装和私有类型

时间:2020-07-19 20:02:55

标签: types private ada encapsulation

从编译器的角度来看,在程序包规范中声明Ada类型或在主体内部执行Ada类型之间有什么区别?

2 个答案:

答案 0 :(得分:6)

通常,使声明(类型,以及其他项,例如常量或子程序)尽可能地局部化是一种好习惯。在您的情况下,如果仅在主体中使用该类型,而不为包规范的用户使用该类型(即使是私有类型),请将其放入主体中。此外,如果仅在主体的子程序中使用它,则将其放在该子程序中。它减少了名称冲突的可能性,并使事情变得更清楚。总而言之,编译器的优点(在代码中给定点处的标识符集较小)与程序员相同。

答案 1 :(得分:5)

Ada对encapsulation的大力支持包括modular programming形式的语义连贯包。从编译器的角度来看,“将程序包规范与其主体分开……可以减少编译时间。”关注privacy主题中检查的抽象数据类型,很明显,公共部分是客户端可以访问的部分。相反,私有部分是实现可访问的。它包括足够的实现细节,供编译器为任意客户端生成代码,但仅此而已。一旦成功修改了更改的程序包主体,现有客户端就可以依赖不变的规范,而无需重新编译相应的主体。

相关问题