返回介绍

3.5 不同形式的数据抽象

发布于 2025-02-20 00:17:07 字数 462 浏览 0 评论 0 收藏 0

Cook 的论文更深入地讨论了此类数据抽象之间的比较,不可不看!

ADT 和对象是不同形式的数据抽象,各有优劣。

ADT 的表示类型是私有的,无法篡改或扩展。这对推理(分析)和优化来说是好的。但它(同时)只允许一种表示。

对象拥有行为接口,因此可以随时定义新的实现。这对灵活性和可扩展性来说是好的。但这使得分析代码变得困难,并且使某些优化成为不可能。

这两种抽象形式也支持不同形式的模块化扩展。在 ADT 上可以模块化地添加新操作,但是支持新的数据变体就很麻烦。面向对象的系统可以模块化地添加新的表示法,但添加新的操作意味着大量的修改。

有一些方法可以绕开此折衷。比如说,在对象的接口中可以公开某些实现细节。这会牺牲一些可扩展性,但恢复某些优化的可能性。所以,这里根本的问题是设计上的问题:我们究竟需要什么?

现在你可以明白,为什么许多语言(同时)支持这两种数据抽象。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文