如果我的问题不符合 SO 的标准,我很抱歉,但我真的很难通过 Grady Booch 的抽象定义中的最后几个词
“抽象表示对象的基本特征,将其与所有其他类型的对象区分开来,因此 相对于观察者的视角提供了明确定义的概念边界”
请解释他所说的“相对于观众的视角”是什么意思。任何例子都会很有帮助。
如果我的问题不符合 SO 的标准,我很抱歉,但我真的很难通过 Grady Booch 的抽象定义中的最后几个词
“抽象表示对象的基本特征,将其与所有其他类型的对象区分开来,因此 相对于观察者的视角提供了明确定义的概念边界”
请解释他所说的“相对于观众的视角”是什么意思。任何例子都会很有帮助。
它们只是意味着从试图理解抽象的人的角度来看,应该清楚它是什么,包含什么,不包含什么。
但是,如何实现可能与其他抽象没有那么明显的不同。
例如:
AURI
是与 a 不同的抽象Name
。开发人员和用户都清楚它们是什么。但是,在实现方面,它们都可能只是字符串。
我认为他们想说的是语义和行为正确地定义了抽象,而不是它们将如何实现。
OOP 世界中的定义是不同的,并不总是很清楚,例如,我可以为您带来 Tony Hoare 的抽象定义:
“抽象源于对现实世界中某些对象、情况或过程之间的相似性的认识,以及专注于这些相似性并暂时忽略差异的决定。”
也许这对你来说更清楚。不过,我并不太在意这些定义的字眼。
理解抽象的重要之处在于它具有向用户(或查看者)公开一组完全描述和识别实体(或对象)的行为(界面)的功能。一旦你知道了这些行为(方法),你就可以并且应该忽略这些方法的实际实现。用户应该关心的是提供输入参数并接收正确的结果。
我认为这是抽象的更实际的定义。