aar*_*ing 19
抽象有两部分:
例如,如果我正在设计一个处理库存的程序,我希望能够找出系统库存中某种类型的物品数量.从接口系统的角度来看,我不在乎我是从数据库,csv文件,通过SOAP接口的远程存储库还是穿孔卡获取此信息.我只关心我可以说widget.get_items_in_stock()并知道它会返回一个整数.
如果我后来决定要以其他方式记录该数字,那么设计界面的人不需要知道,关心或担心它,只要widget仍然有get_items_in_stock()方法.同样明智的是,如果我将widget类子类化并添加get_square_root_of_items_in_stock()方法,则接口不需要关心.我也可以将新类的实例传递给它.
因此,在这个例子中,我们隐藏了如何获取数据的细节,并确定任何带有get_items_in_stock()方法的东西都是同一类(或其子类)的实例,用于某些目的.
Joh*_*McG 10
数据抽象是允许您在人们遇到数据时处理数据而不是存储在计算机上的数据.
在最低级别,所有原始数据类型都是抽象 - 作为程序员,我们通常不必处理位级别的数据(最终存储的方式),而是整数,浮点数,字符等. .
然后我们在这个抽象上添加图层 - 也许两个整数表示一个Point,或者我们和枚举来表示一年中的几个月,一周中的几天等等.
通过每个抽象层,我们从机器进一步移动,并且(希望)更接近人类对数据的理解.这可以提取性能损失 - 并非总是可以通过两个整数最有效地表示点.这可以通过使用抽象时的较短开发(和维护)时间来补偿.