面向对象编程中关于类的行为的理解?

面向对象编程中一切皆为对象,而对象是由类实例化生成,类有很多特征,但是从比较概括的层面上讲,包括状态和行为!但是这个行为好抽象,在做实际小项目时,我常常不会对类的行为进行... 面向对象编程中一切皆为对象,而对象是由类实例化生成,类有很多特征,但是从比较概括的层面上讲,包括 状态 和 行为!
但是这个行为好抽象,在做实际小项目时,我常常不会对类的行为进行分析,主要有一下几点疑问:
1、行为一般都是主观的概念,但是我们设计的对象一般都不具备主动性,需要外界因素促发行为,这样是不是很矛盾?
2、其次,虽说类都具备这两个特征,但是,似乎某些类只是用来被人调用,作为一种最底层的类,它似乎不需要任何行为。但是为什么在有些分析中确为它加上了行为?(如图:账户类应该就是一个名单表之类的东西,ATM类有登陆账户的操作行为这个还能理解,但是账户名单也有登陆行为似乎有点不合适)对于项目中类的建立到底应该如何解决?
期待详解!!
展开
 我来答
尼拉卓尔
推荐于2016-03-08 · TA获得超过466个赞
知道小有建树答主
回答量:161
采纳率:100%
帮助的人:170万
展开全部
首先,我觉得你应该先理清“类”和“对象”的区别

1、行为一般都是主观的概念,但是我们设计的对象一般都不具备主动性,需要外界因素促发行为,这样是不是很矛盾?
To1:一点都不矛盾,行为可以视为对象的能力,有这个“行为”,实际上就是说这个对象有这种“行为能力”,它有能力有权限这么做,而外界因素的促发一般而言都是调用和传参,也就是我们“让它这么做”。换言之,有这个能力不一定要这么做,没有这个能力你怎么触发都没用。
例:我写个Account类,如果不给他Login的行为,那么它就是一个名单表而已,如果给了它Login的行为,那么我们可以通过调用此行为使得账号登录。
反之,如果我们不在Account类中写一个Login行为的话,那么造成的后果是我们必须在每一个需要登录账户的地方写上同样的一段Login代码,这就造成了代码的混乱
-----我是蛋疼的分界线-----
2、其次,虽说类都具备这两个特征,但是,似乎某些类只是用来被人调用,作为一种最底层的类,它似乎不需要任何行为。但是为什么在有些分析中确为它加上了行为?(如图:账户类应该就是一个名单表之类的东西,ATM类有登陆账户的操作行为这个还能理解,但是账户名单也有登陆行为似乎有点不合适)对于项目中类的建立到底应该如何解决?
To2:账户登录和登录账户完全是两个概念。如果按照例子中的内容我会这么写
Account类的Login行为:将name和password在数据库中进行比对,如果成功则修改登录状态为1,并读取各种数据例如存款金额神马的;如果失败返回-1(进一步扩展的话还可以设置一个登录失败次数的计数器,累计达到X之后就禁止登录神马的)。
ATM类的LoginAccount行为:从UI获取一个name和一个password,new一个Account对象,set好这个对象的name和password属性,然后调用这个对象的Login行为。再根据调用的结果作出反应。
--------神马的分割线再次出现------
总而言之,我觉得你的问题主要出在混淆了“类”和“对象”的区别
从你会说出“账户类应该就是一个名单表之类的东西”就可以看出来,其实真正的名单表在数据库里,账户类的作用应该体现为“账户是否存在”和“对账户能进行什么操作”
特别是后者的概念,所谓的底层类,只能说明它的行为中没有对其他的类的对象进行操作,它的作用只是在于沟通程序与数据库或者对自身的属性进行操作罢了
在面向对象的学习中,尽可能的,把对对象自身属性的操作封在对象本身的行为中,如果让A对象可以修改B对象的属性的话,会发生很恐怖的事情,就是整个程序的大混乱
changhongwhk
2011-01-14
知道答主
回答量:7
采纳率:0%
帮助的人:1.1万
展开全部
我的理解是:类是一些具有共同属性对象实例抽象出来的概念,就好比在C语言中自定的数据类型。主要将属性的状态、行为打包封装形成一个整体,也就是类,这也就好像你自定义了一个新的数据类型。在用的时候实例化一个对象,也就好像C语言中定义了一个变量。不过变量一般只有值的操作,而对象却可以对其状态进行值操作,还可以对其行为进行控制,这也是面向对象的好处。其实C语言中的函数调用就很类似于对象的概念,把数据和操作写成一个函数体这不正是相当于一个对象吗,不过函数体更偏重于操作而已。
至于为何非得具备两个行为特征,我想一楼大虾已分析的很详细了,希望对你有帮助
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式