对象模型

面向对象编程就是在比较高的层次上把状态和行为——数据和对数据的操作——组合到对象中,并且提供了编程语言上的支持。对象就是一组相关的函数和为这些函数服务的数据的集合。这些函数被称为对象的方法, 数据被称为对象的实例变量。对象方法封装了对实例变量的访问,实例变量在对象之外是不可见的,如图3-1所示:


图 3-1 对象

如果您曾经应付过一些比较棘手的编程问题,您的程序中可能已经有类似的设计——一组相关的函数作用于特定的数据,这可以称之为没有编程语言支持的隐形”对象“。面向对象使这些函数显式的联系在一起,在程序中作为一个单独的实体来对待。访问一个对象的数据的唯一途径就是通过该对象的方法。

通过把状态和行为组合在一块,对象所体现的作用超过了它的各部分之和。一个对象就是一个在特定的功能领域自给自足的“子程序”,在大型的程序设计中可以充当独当一面的角色。

术语: 面向对象的术语随语言的不同而不同。例如,在C++中,方法被称之为”成员函数“,实例变量被称之为”数据成员“。本文档使用的术语源自Objective-C和Smalltalk。



例如,如果您试图对家庭用水进行编程建模,您可能需要创建各种对象来表示出水系统的各个组件。水龙头对象将会有如下方法:开始放水,停止放水,设置放水速率,返回一定时间内所有流出水的数量等等。相应的,水龙头对象将需要一些实例变量来记录水龙头开关的是打开的还是关闭的,已经使用了的水的数量,以及水的来源。

很明显,程序中的水龙头对象比实际中的水龙头功能要多一些(类似于附加了很多测量仪器的水龙头)。然而和其他的系统组件一样,即使是一个真实的水龙头,它也同时具有状态和行为。您需要使用对象来更有效地对系统建模。

在面向对象编程中,程序是由相互关联的对象构成的对象网络,这些对象可以彼此调用来解决问题。在整个程序设计中,每个对象都有自己特定的角色,对象之间可以通过消息来相互通信。


图 3-2 对象网络

对象网络中的对象不会只有一种。例如,对家庭用水进行建模的程序中,除了水龙头对象之外,可能还会有输水的管道对象,控制管道中水流的阀门对象。同时还会有建筑对象,建筑对象中包含很多管道对象,阀门对象,水龙头对象以及各种可能关闭和打开阀门的装置对象—如洗碗机,马桶,洗衣机,还有使用这些装置及水龙头的用户。当建筑对象需要知道用水数量时,它将会通知每个水龙头和阀门对象报告当前的状态。当用户启动某样装置时,该装置则需要打开阀门来获取所需要的水。
本部分包含如下内容:

消息隐喻 

抽象机制
继承
动态机制

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值