面向对象设计经验

             在淘宝上买了传智播客的视频,看到了张孝祥老师教授面向对象设计的实例和经验,在此分享:

一、判断谁产生相应的方法

        判断原则:谁拥有数据,谁就应该写相应的方法操作该数据

示例1、人在黑板上画圆

        画一个圆应该知道圆心的位置和半径,而圆心的位置和半径属于圆的属性,所以画圆的方法由圆提供

示例2、火车刹车

       刹车是降低车的速度,而车速是车的属性,所以刹车的方法由火车这一对象提供

示例3、售票员统计小票总金额   

      总金额由各种物品的单价*数量再求和得到,而单价和数量是属于小票的属性,所以Total这一方法是小票这一对象提供

 

        判断多个对象间的相互作用关系(分析对象间的相互作用关系,找出主动与被动,发现事件的本质)

示例1、球从绳子一端移向另一端

        在这句话中有两个对象:球和绳子,球和绳子之间是没有直接联系的,所以要通过联想与分析找到它们之间的联系。分析:球的移动依赖于绳子,球移动的下一个位置需要绳子提供(绳子提供下一个位置,有种绳子作为参数传给球的感觉),所以把球和绳子绑定,绳子作为球的属性。

示例2、两个石头磨成石刀,石刀砍树变成木材,木材做成椅子。

         在这句话中有石头、石刀、树、木材、椅子这几个对象,石头被加工成了石刀,也就是说石头作为原材料,石刀作为产品,两个对象都不含有加工这个功能,所以会想到用一个Factory的静态方法CreateKnife(),参数为石头对象,返回参数为石刀。石刀砍树变成木材,石刀具有砍的功能,所以石刀具有cut()方法,树作为参数传入cut()方法,木材作为返回参数。最后是木材做成椅子,木材和椅子都不具备加工这个功能,所以可以马上想到Factory的静态方法CreateChar(),木材作为参数,椅子作为返回参数。在这个示例中主要区分主动与被动。

 

感悟:以前虽然在学C++的时候听过面向对象设计,但是那时候都是像看小说一样看一遍就过了,直到看张老师的视频的时候,自己尝试去理清对象间的关系及对象应该拥有哪些方法的时候,发现自己弄不清楚,弄不清楚就无法具体的编码实现,这次是受到了教训,希望自己以后多实践,多分析分析现实问题,练习面向对象设计。最近看老师的视频以及自己接触到其他事情,让我发现语言及编程工具都是我们所必须掌握的基础,工作的时候解决的问题是类似交通管理系统、银行窗口调度系统等这样的实际问题,更多需要的是逻辑能力,以我现阶段的编程水平,我应该尽力去掌握语言基础,平时多思考现实生活中的问题,理清逻辑,现在越来越觉得逻辑能力的重要了。编程之路漫漫,吾将上下而求索,踏实与坚定。

 

        

               

转载于:https://www.cnblogs.com/ToBeBetterPerson/p/8401411.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值