- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
cppCH4类和对象
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 图4.5 对象连接示意图 0,m 1 指导论文 教师 学生 4. 消息连接及其表示 消息连接描述对象之间的动态关系。即若一个对象在执行自己的操作时,需要通过消息请求另一个对象为它完成某个服务,则说第1个对象与第2个对象之间存在着消息连接。消息连接是有向的,使用一个带箭头的实线表示,从消息的发送者指向消息的接收者。 4.9.3 使用实例 假设已经定义了类Point,分别使用聚合和继承的方法组成Line类。为了简单,不涉及操作,所以没有给出成员函数。 1. Line类包含Point类 使用聚合构成Line类的方法也不止一种。可以直接使用两个Point的对象作为数据成员,也可以只使用一个Point对象,然后再为Line设计两个属性值作为坐标点。前面一种更为合理,所以使用第1种方法。 假设Point的对象为p1和p2,则对象p1和p2构成Line类的两个数据成员。Line类使用这两对值作为两个坐标点,构成一条线段。显然,它们具有各自的生存周期,应使用空心菱形连接它们,并且关联关系是一对二。 另外,Line类的数据成员p1和p2需要具有确定的属性值,这由Point类完成。为此,Line类必需向Point类发消息,请求Point类为自己构造两个点对象。消息连接的箭头指向Point类,图4.6给出它们之间的关系。 2. Line类继承Point类 还可以用另一种思路构造Line类。Line类继承Point类的坐标点作为线段的一个坐标点,自己再定义一对属性作为另一个端点,这样就可构成一条线段。 因为基类是Point,所以三角形指向Point类。虽然Line类在实例化时,需要发消息请求基类的支持,但它们之间的消息很简单,所以图中没有给出消息连接。一般情况下,继承关系的消息传递规律清楚,为了保持图的清晰,可以不画它们之间的消息连接。另外,不管两者之间有多少消息,也均画出一条。它们的关系如图4.7所示。 图4.7 Line类继承Point类 4.9.4 对象、类和消息 由以上分析可见,对象的属性是指描述对象的数据成员。数据成员可以是系统或程序员定义的数据类型。对象属性的集合又称为对象的状态(state)。 对象的行为是定义在对象属性上的一组操作的集合。操作(函数成员)是响应消息而完成的算法,表示对象内部实现的细节。对象的操作集合体现了对象的行为能力。 对象的属性和行为是对象定义的组成要素,分别代表了对象的静态和动态特征。由以上分析的例子可见,无论对象是简单的或是复杂的,一般具有以下特征。 (1) 有一个状态,由与其相关联的属性值集合所表征。 (2) 有惟一标识名,可以区别于其他对象。 (3) 有一组操作方法,每个操作决定对象的一种行为。 (4) 对象的状态只能被自己的行为所改变。 (5) 对象的操作包括自身操作(施加于自身)和施加于其他对象的操作。 (6) 对象之间以消息传递的方式进行通信。 (7) 一个对象的成员仍可以是一个对象。 严格讲,前3条是对象的基本特征,后 4条属于特征的进 一步定义。 消息(message)是向对象发出的服务请求,它是面向对象系统中实现对象间的通信和请求任务的操作。 消息传递是系统构成的基本元素,是程序运行的基本处理活动。 一个对象所能接受的消息及其所带的参数,构成该对象的外部接口。 对象接收它能识别的消息,并按照自己的方式来解释和执行。 一个对象可以同时向多个对象发送消息,也可以接收多个对象发来的消息。 消息值反映发送者的请求,由于消息的识别和解释取决于接收者,因而同样的消息在不同对象中可解释成相应的行为。 对象传送的消息一般由3部分组成:接收对象名、调用操作名和必要的参数。在C++中,一个对象的可能消息集是在对象的类描述中说明的,每个消息在类描述中用一个相应的方法给出,即使用成员函数定义操作。 对象之间的相互作用是把消息发送给指定对象,发送的方式类似于客户/服务器机制。换句话说,向对象发送一个消息,就是引用一个方法的过程;实施对象的各种操作,就是访问一个或多个在类中定义的方法。 消息协议是一个对象对外提供服务的规定格式说明,外界对象能够并且只能向该对象发送协议中所提供的消息,请求该对象服务。也就是说,使该对象操作的惟一途径是通过协议中提供的消息进行的。 具体实现是将消息分为公有和私有消息,私有消息是只供类内部使用的消息,公有消息是对外的接口,协议则是一个对象所能
您可能关注的文档
最近下载
- 建筑室内设计专业职业生涯规划.pptx
- 语文古诗:渔家傲和苏幕遮的对比.ppt VIP
- 煤灰分的测定.ppt VIP
- 《照明线路的安装与检修》学习任务设计方案6实训室照明电路的安装学习任务设计方案.doc VIP
- 2024年1月浙江省高三普通高校招生方向性测试物理试题卷含答案.pdf VIP
- 1.3《闪亮的坐标—劳模王进喜》获奖课件.pptx VIP
- 液化石油气管理人员安全考核考试试卷及答案.docx VIP
- 第九讲中国健康生活方式预防心血管代谢疾病指南之合理膳食篇.docx VIP
- 中国的商业与货币经济 (2).pptx
- 植物新品种特异性稳定性一致性测试指引亚麻-农业部植物新品种.pdf VIP
原创力文档


文档评论(0)