Grady在面向对象的分析与设计及其应用说:
对象的状态包含对象的所有(通常是静态的)属性,加上每个属性的当前(通常是动态的)值.
然后:
自动售货机的另一个特点是它可以接受金钱。这是一个静态的(即固定的)属性,这意味着它是自动售货机的一个基本特征。
然后:
所有的财产都有一定的价值。这个值可能是一个简单的量,也可能表示另一个对象。
我怀疑"the ability of accepting money
“是否是一种不动产。相反,它似乎描述了一种行为。另外,Grady说:“所有的属性都有一定的价值。”但是"the ability of accepting money
“的值是多少呢?
注意:
在问这个问题之前,我读过这些问题,但这些问题并没有让我知道:
发布于 2021-08-24 01:45:54
从语义的角度来看,你引用的解释是有意义的,但它们非常模棱两可,因为它使用的词在软件开发术语中具有非常特殊的意义,但他依赖于这些词的通用英语定义。
这本书是31年前出版的,我怀疑它领先于现在被认为是普通的OOP术语,所以它的语言的正确性已经改变了,因为世界变了,而不是书本身。
这本书是13年后修订的,我怀疑他们可能有现代化的部分语义学(例如,你的第三句话),但不一致(例如,第一和第二引文)。
对象的状态包含对象的所有(通常是静态的)属性加上这些属性的当前(通常是动态的)值。
我相信他在这里说的是强类型,即一个对象有一个给定的类型,该类型有一个预定的结构(即一个包含方法、属性、.)的显式类定义。并且这种结构是在设计时(即预编译)定义的,但是在设计时,只在运行时才知道存储在其中的值。
我怀疑他不是在说什么,但似乎他只是一见钟情,是静态的还是非静态的。
如果我的解释是正确的,那么这里的" state“不是指”存储的信息“(如: state vs behavior),而是指”类的结构“(例如:联合状态)。
自动售货机的另一个特点是它可以接受金钱。这是一个静态的(即固定的)属性,这意味着它是自动售货机的一个基本特征。
同样的使用语义英语的趋势在这里继续。
和以前一样,他所说的“静态”似乎是指“类定义的一部分”,而不是专门指static
。
所谓“属性”,他似乎是指“特性”或“特征”的普通英语单词,例如在句子中,“物质的每一种状态都具有不同的物理性质”。
用更现代的语言来说,我们现在可以说,接受金钱是自动售货机合同的一部分。
此引号并不试图将属性与方法区分开来。据说,接受金钱的能力需要成为自动售货机公共界面的一部分。引号没有具体说明如何将其添加到类中,但我确实同意您的看法,即这显然是一种方法,而不是类属性。
所有的财产都有一定的价值。这个值可能是一个简单的量,也可能表示另一个对象。
在这里,我们似乎突然转向使用特定的开发人员术语。如果您忘记了前面的引号,这个语句非常有意义,它本质上解释了状态存储在类属性中(不管是静态的还是非静态的)。
发布于 2021-08-24 02:16:32
如果“处理货币的能力”是一个属性,那么它就是一个布尔属性,它用来判断机器是否能够处理货币。如果它是非静态和可变的,那么它可以用来防止机器处理金钱,将其设置为false。
Machine m = new Machine();
if (m.canHandleMoney()) {
// this machine can handle money
m.setCanHandleMoney(false);
// now it can't
}
这是不是指的是行为呢?它可能是关于可注入行为的:
Machine m = new Machine();
MoneyHandler h = new MoneyHandler();
m.setMonetHandler(h);
否则,行为不是属性。
发布于 2021-08-24 01:46:58
我想他只是用property
这个词来表达两种不同的东西。在我看来,很明显,他在你的引语中描述了一种行为,而不是技术上的“属性”,即变量。
我现在手头没有我的副本,但我很确定这只是“财产”这个术语的口语化用法。也就是说,滑水的一个特点是它是滑的,你可以滑下去。
https://softwareengineering.stackexchange.com/questions/431309
复制相似问题