笔记20121010

2012/10/11

.对象真正的威力不是继承,而是行为的封装。

 

.20世纪50年代的面向对象范式,

那时候的面向对象仅仅告诉开发者在需求语句中寻找名词,并将这些名词构造成程序对象。在这种范式中,封装仅仅被定义为数据隐藏,对象也只是被定义为包含数据及访问这些数据的东西。这样的观点有很大的局限性。它将开发者关注的焦点局限于如何实现对象。

 

3.面向对象范式之前:功能分解

  需求总是变化的的。

 

4.处理变化:使用功能分解

 

5.副作用往往是最难被发现的BUG,所以如果你让一个函数接触太多的数据,在需求发生变化的时候,它往往就可能出现问题。

 

6.责任的转移。例子你是上课老师,当学生上完你的课,它们需要去另外一个课,但是它们不知道下一个课的位置。

<1>老师对每个学生都通知,查找它们的下一个课,查找它们的如何去。

<2>老师贴出从本教室到其他教室的路径,然后告诉学生,让它们自己去找地方。

 

这里就把责任转移。

 

7.面向对象范式

  所有东西都聚集在对象,围绕对象而非函数---组织代码。

   使用对象的优点:可以定义对自己负责的行为。对象天生就知道自己的类型。对象内包含数据,让它知道自己的状态;对象内包含代码,让它可以适当地运行(做设计者希望他做的事)。

对象识别来自于对问题领域中实体的观察,通过观察这些实体需要做什么,我为每个对象确定它的责任。

 什么是对象?最好是把对象想象拥有责任的东西。一个好的设计原则就是:对象应该对自己负责。并且这种责任能被清楚的定义出来。

 

 

.Flower的视角框架来观察对象:

 从概念,一个对象是一系列责任。

 从规格,一个对象是一系列被其他对象或该对象自己调用的方法。

 从实现,一个对象是数据和方法。

 不幸的是,人们往往只在实现层-代码和数据来考虑面向对象的设计,而忽略概念和规格。但是后者同样具有很大的威力。

 

. 对象拥有责任并且对自己负责。对象拥有责任并对自己负责。

  所有它们很多东西不需要暴露给另外的对象。

 

。封装意味着任何形式的隐藏

 

。讲师不知道那些是普通学生,那些是毕业生(毕业生在去下一个教室前,要去做其他整理资料工作)。对讲师来说,学生的类型被隐藏(

我封装了学生的类型)

 

 

57

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

tof21

支持原创

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值