社区首页 >问答首页 >面向对象程序设计中对象静态性质的定义

面向对象程序设计中对象静态性质的定义
EN

Software Engineering用户
提问于 2021-08-24 01:17:02
回答 3查看 330关注 0票数 2

Grady在面向对象的分析与设计及其应用说:

对象的状态包含对象的所有(通常是静态的)属性,加上每个属性的当前(通常是动态的)值.

然后:

自动售货机的另一个特点是它可以接受金钱。这是一个静态的(即固定的)属性,这意味着它是自动售货机的一个基本特征。

然后:

所有的财产都有一定的价值。这个值可能是一个简单的量,也可能表示另一个对象。

我怀疑"the ability of accepting money“是否是一种不动产。相反,它似乎描述了一种行为。另外,Grady说:“所有的属性都有一定的价值。”但是"the ability of accepting money“的值是多少呢?

注意:

在问这个问题之前,我读过这些问题,但这些问题并没有让我知道:

EN

回答 3

Software Engineering用户

回答已采纳

发布于 2021-08-24 01:45:54

从语义的角度来看,你引用的解释是有意义的,但它们非常模棱两可,因为它使用的词在软件开发术语中具有非常特殊的意义,但他依赖于这些词的通用英语定义。

这本书是31年前出版的,我怀疑它领先于现在被认为是普通的OOP术语,所以它的语言的正确性已经改变了,因为世界变了,而不是书本身。

这本书是13年后修订的,我怀疑他们可能有现代化的部分语义学(例如,你的第三句话),但不一致(例如,第一和第二引文)。

1

对象的状态包含对象的所有(通常是静态的)属性加上这些属性的当前(通常是动态的)值。

我相信他在这里说的是强类型,即一个对象有一个给定的类型,该类型有一个预定的结构(即一个包含方法、属性、.)的显式类定义。并且这种结构是在设计时(即预编译)定义的,但是在设计时,只在运行时才知道存储在其中的值。

我怀疑他不是在说什么,但似乎他只是一见钟情,是静态的还是非静态的。

如果我的解释是正确的,那么这里的" state“不是指”存储的信息“(如: state vs behavior),而是指”类的结构“(例如:联合状态)。

2

自动售货机的另一个特点是它可以接受金钱。这是一个静态的(即固定的)属性,这意味着它是自动售货机的一个基本特征。

同样的使用语义英语的趋势在这里继续。

和以前一样,他所说的“静态”似乎是指“类定义的一部分”,而不是专门指static

所谓“属性”,他似乎是指“特性”或“特征”的普通英语单词,例如在句子中,“物质的每一种状态都具有不同的物理性质”。

用更现代的语言来说,我们现在可以说,接受金钱是自动售货机合同的一部分。

此引号并不试图将属性与方法区分开来。据说,接受金钱的能力需要成为自动售货机公共界面的一部分。引号没有具体说明如何将其添加到类中,但我确实同意您的看法,即这显然是一种方法,而不是类属性。

3

所有的财产都有一定的价值。这个值可能是一个简单的量,也可能表示另一个对象。

在这里,我们似乎突然转向使用特定的开发人员术语。如果您忘记了前面的引号,这个语句非常有意义,它本质上解释了状态存储在类属性中(不管是静态的还是非静态的)。

票数 10
EN

Software Engineering用户

发布于 2021-08-24 02:16:32

如果“处理货币的能力”是一个属性,那么它就是一个布尔属性,它用来判断机器是否能够处理货币。如果它是非静态和可变的,那么它可以用来防止机器处理金钱,将其设置为false。

代码语言:javascript
代码运行次数:0
复制
Machine m = new Machine();
if (m.canHandleMoney()) {
   // this machine can handle money
   m.setCanHandleMoney(false);
   // now it can't
}

这是不是指的是行为呢?它可能是关于可注入行为的:

代码语言:javascript
代码运行次数:0
复制
Machine m = new Machine();
MoneyHandler h = new MoneyHandler();
m.setMonetHandler(h);

否则,行为不是属性。

票数 1
EN

Software Engineering用户

发布于 2021-08-24 01:46:58

我想他只是用property这个词来表达两种不同的东西。在我看来,很明显,他在你的引语中描述了一种行为,而不是技术上的“属性”,即变量。

我现在手头没有我的副本,但我很确定这只是“财产”这个术语的口语化用法。也就是说,滑水的一个特点是它是滑的,你可以滑下去。

票数 0
EN
页面原文内容由Software Engineering提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://softwareengineering.stackexchange.com/questions/431309

复制
相关文章
js中的面向对象程序设计
面向对象的语言有一个标志,那就是他们都有类的概念,而通过类可以创建任意多个具有相同属性和方法的对象。
牛老师讲GIS
2018/10/23
6080
面向对象的程序设计
ECMA-262把对象定义为:”无序属性的集合,其属性可以包含基本值、对象或者函数。”
奋飛
2019/08/15
4270
面向对象程序设计
【面向对象程序设计】(OOP)与【面向过程程序设计】在思维方式上存在着很大的差别。【面向过程程序设计】中,算法是第一位的,数据结构是第二位的,这就明确地表述了程序员的工作方式。首先要确定如何操作数据,然后再决定如何组织数据,以便于数据操作。而【面向对象程序设计】却调换了这个次序,【面向对象程序设计】将数据放在第一位,然后再考虑操作数据的算法。
真正的飞鱼
2023/04/13
2K1
简述面向对象思想_简述面向对象程序设计的特点
Java是一种面向对象的语言,那么什么是面向对象(Object Oriented Programming)? 首先,什么是对象(Object)?Java中有一种思想叫做“万物皆对象”,对象就是具有某些特殊属性(成员变量)和行为方式(方法)的实体。现实生活中的任何事物都可以看作是对象,无论是具体或抽象的事物,比如:一个动物或者是城市的变化。具有两个特征:属性(Property)和行为(Behavior)。 其次,什么是面向对象?
全栈程序员站长
2022/09/20
7110
JavaScript面向对象程序设计—创建对象的模式
JS本身为我们提供了Array、Date、Math等不少对象(见《浅析JavaScript的对象系统》),但在实际开发中我们使用最多的还是自定义对象。自定义对象是一门值得研究的学问。往浅了讲,它关系到代码量、封装性、代码是否优雅;往深了讲,它又涉及到内存开销、设计模式乃至JavaScript语言的核心。下面就一起循序渐进地看看如何更好地创建一个对象。 1. 基本模式 ---- var person = new Object(); //或 var person = {};person.name = "
用户1667431
2018/04/18
9210
JS面向对象的程序设计
http://www.cnblogs.com/gaojun/p/3386552.html
bear_fish
2018/09/19
1.3K0
JavaScript面向对象的程序设计
工厂模式 由于 ES6 之前没有 class 概念,所以使用函数来封装的,工程模式采用最直接的传入参数创建对象并赋值,然后返回对象的方式 function Great(name,age) { var o = new Object(); o.name = name; o.age = age; o.getName = function() { return this.name; } return o; } var g1 = Great('link',21); consol
努力的Greatiga
2022/07/25
2540
面向对象程序设计的由来
最早的程序设计都是采用机器语言来编写的,直接使用二进制码来表示机器能够识别和执行的指令和数 据。简单来说,就是直接编写 0 和 1 的序列来代表程序语言。例如:使用 0000 代表 加载(LOAD),0001 代表 存储(STORE)等。 机器语言由机器直接执行,速度快,但一个很明显的缺点就是:写起来实在是太困难了,一旦你发现自己 写错了,改起来更蛋疼!这样直接导致程序编写效率十分低下,编写程序花费的时间往往是实际运行时间 的几十倍或几百倍。 有一个关于机器语言和比尔盖茨的笑话,是说比尔盖茨拿着绣花针在一张光盘上戳,把 Windows 给戳出 来了!但如果真的让你去戳,不要说 Windows,连一个简单的“Hello world”都要让人戳到眼睛冒烟!
py3study
2020/01/15
6320
C++面向对象程序设计_面向对象程序设计的基本机制是
面向过程就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了。 面向对象是把构成问题事务分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描叙某个事物在整个解决问题的步骤中的行为
全栈程序员站长
2022/09/23
3300
面向对象程序设计的基本原理_面向对象程序设计c++答案
一个类,只有一个引起它变化的原因。应该只有一个职责。每一个职责都是变化的一个轴线,如果一个类有一个以上的职责,这些职责就耦合在了一起。这会导致脆弱的设计。当一个职责发生变化时,可能会影响其它的职责。另外,多个职责耦合在一起,会影响复用性。例如:要实现逻辑和界面的分离。
全栈程序员站长
2022/08/04
3690
面向对象程序设计的基本原理_面向对象程序设计c++答案
Python面向对象程序设计中对象析构方法的调用时机
众所周知,从面向对象程序设计角度来讲,在Python语言中,不管类的名字是什么,构造方法的名字统一为__init__(),在创建对象时自动调用,用来对数据成员进行初始化;析构方法的名字统一为__del__(),用来释放对象占用的内存空间,在删除对象时自动调用。
Python小屋屋主
2022/06/05
1.4K0
Python面向对象程序设计中对象析构方法的调用时机
PHP面向对象-类和对象的定义(五)
多态是面向对象编程中的另一个重要特性,它可以让不同的对象使用相同的方法,但是表现出不同的行为。在PHP中,多态可以通过接口和抽象类来实现。
堕落飞鸟
2023/04/27
6190
PHP面向对象-类和对象的定义(三)
在PHP中,类的属性和方法可以设置访问控制,以限制它们的访问权限。常用的访问控制有三种:公有(public)、私有(private)和受保护(protected)。
堕落飞鸟
2023/04/27
5680
PHP面向对象-类和对象的定义(一)
在PHP面向对象编程中,类和对象是最基础和最重要的概念。类是一种抽象的数据类型,它定义了一组属性和方法,用来描述某种事物的特征和行为;而对象则是类的一个实例,它具有类定义的属性和方法,并可以进行相应的操作。
堕落飞鸟
2023/04/27
5790
C++面向对象编程类对象的定义
对象和对象之间的关系:分别使用不同的内存来存储数据,使用相同的内存上的函数(一份函数拷贝)
风骨散人Chiam
2020/10/28
1K0
php面向对象中static静态属性和静态方法的调用
这篇文章主要介绍了php面向对象中static静态属性和静态方法的调用,实例分析了static静态属性和静态方法的原理与调用技巧,需要的朋友可以参考下 本文实例讲述了php中static静态属性和静态方法的调用。分享给大家供大家参考。具体如下: 这里分析了php面向对象中static静态属性和静态方法的调用。关于它们的调用(能不能调用,怎么样调用),需要弄明白了他们在内存中存放位置,这样就非常容易理解了。静态属性、方法(包括静态与非静态)在内存中,只有一个位置(而非静态属性,有多少实例化对象,就有多少个属性
joshua317
2018/04/16
1.8K0
C++面向对象程序设计
结论:C++推荐用引用技术,因为语法方便,引用本质是指针常量,但是所有的指针操作编译器都帮我们做了
浪漫主义狗
2023/09/04
4120
C++面向对象程序设计
结论:C++推荐用引用技术,因为语法方便,引用本质是指针常量,但是所有的指针操作编译器都帮我们做了
浪漫主义狗
2022/09/28
1.2K0
实验七 面向对象程序设计
在程序中使用对象来映射现实中的事物,使用对象间的关系来描述事物之间的联系,这种思想就是面向对象。面向对象编程有两个非常重要的概念:类和对象。对象是面向对象编程的核心。具有相似特征和行为的事物的集合统称为类,对象是根据类创建的,一个类可以对应多个对象。类是由3部分组成的:(1)类的名称:类名,首字母必须大写,比如Person;(2)类的属性:一组数据,比如性别;(3)类的方法:允许进行操作的方法,比如说话。使用class关键字来声明一个类,基本格式如下:
背雷管的小青年
2020/06/08
1.9K0
PHP面向对象-类和对象的定义(四)
继承是面向对象编程中的另一个重要特性,它可以让一个类继承另一个类的属性和方法,并可以对它们进行扩展和修改。在PHP中,可以使用extends关键字实现类的继承,语法如下:
堕落飞鸟
2023/04/27
4790

相似问题

面向对象的程序设计与建模

20

面向对象程序设计语言性能排序

70

推荐阅读(面向对象的)应用程序设计架构?

10

如何在面向对象程序设计中进行策略设计。

20

面向对象的对象转换

10
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文