Ada 封装和私有类型

1 types encapsulation private ada

从编译器的角度来看,在包规范中声明 Ada 类型或在正文中声明有什么区别?

Zer*_*rte 6

通常,使声明(类型,但也包括常量或子程序等其他项)尽可能局部化是一种很好的做法。在您的情况下,如果该类型仅用于正文而不用于您的包规范的用户(即使作为私有类型),请将其放在正文中。此外,如果它仅用于主体的子程序中,则将其放入该子程序中。它减少了名称冲突的几率并使事情更清晰。总而言之,编译器的优势(代码中给定点的较小标识符集)与程序员的优势相同。


tra*_*god 5

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