真的是面向对象么?

Abstract

现在绝大部分搞开发的都用的是面向对象语言来开发软件系统。是不是用面向对象开发语言做出的产品就一定是面向对象的软件系统?

Introduction

我接触和带过很多的程序员,有刚毕业没两年的,也有毕业了六、七年的老程序员。他们中大部分都是很聪明、反应也很快。但是我很困惑的是:他们可以很快很好的完成你安排下去的工作。但同时在Review他们的代码时,时常发现他们的代码并没有真正的体现面向对象。虽然他们用的是完全面向对象的开发语言。

 

当我向他们提出这个问题时。有人会问我:我觉得我这是面向对象实现啊。你看看这个类、那个类、还有这个接口。

 

而我问道面向对象软件中对象的基本特性是什么时。他们会毫不犹豫的告诉我一些概念:封装、抽象、行为。这些都没有错,但是我认为要分析和设计好面向对象软件,要时刻牢记:改变的简单性和本地化是面向对象系统的重要特性。

 

如果在开发时,面对问题首先想的是数据怎么存放和使用,那么你已经开始和面向对象说bye-bye了。我见过很多的代码,乍看之下,代码中有各种类和各种接口。然而当我深入代码是,发现的最为严重的问题恰好就是:对象的数据和行为已经产生了分离。既然产生了分离,那么所谓的封装自然就不再存在。

 

不要忙于开始实现,在接到一个需求时,首先要在类似系统中寻找有用的对象。其次请再次将要解决需求中面临的概念尽量拟人化。将它们想象为有血有肉的人或者动物。思考他们都拥有哪些知识(数据)和能力(行为)?他们在这个社会(系统)中都扮演着什么角色?他们都会和谁打交道?他们共同协作是为了什么?他们自己的关系是什么?是淡水之交(关联)还是生死与共(聚合)?

 

当你在面对任何一个需求时,你都可以类似上面说的那样分析和思考时。恭喜你,你已经进入了面向对象分析设计的天地。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值