对象交互

面向对象程序设计的第一步,就是在问题领域中识别出有效的对象,然后从识别出的对象中抽象出类来。面对纷繁复杂的现实问题,往往存在多种对象划分的方式,而不同的划分会带来类的设计以至于程序结构的各种不同。对象划分有一些理论,但是不是这门面向对象的入门课程能覆盖的。而且目前的理论也还不是放诸四海皆准的简单操作指南。我们举了一个数字钟的例子,希望通过这个例子表明对象划分的重要性,给你一个感性认识。在今后面对实际的问题领域时,可以试试用这里提到的概念来做对象的划分和类的设计。但是这只是一个例子,遇到具体情况一定是具体分析,按照问题领域的实际情况来做。

一个对象当然可以由其他类的对象来组成,就像一个人体里面有心脏、肠胃一样。对象是由其他对象组成的,而类定义了这样的组合关系。

那么下一个问题,就是当一个对象里有多个对象的时候,那些对象之间是如何交互的,对象和对象之间的联系是如何建立的,对象如何和其他对象交流。对象和对象之间的联系紧密程度叫做耦合。对象和对象的耦合程度越紧,表现在源代码上,就是它们的代码是互相依赖、互相牵制的。我们理想的模型,是对象和对象之间的耦合要尽可能的松,平行的对象要尽量减少直接联系,让更高层次的对象来提供通信服务。这些就是在我们这个非常简单的数字钟的例子中所体现的。

要实现一个数字钟非常简单,如果只是实现功能,入门课程里的一个循环就可以了。这里所体现的,是更深层次的面向对象设计的理念。

本周我们还只是初步接触这些理念,后面还有机会更深入地认识和理解它们。

时间: 2024-07-29 02:04:39

对象交互的相关文章

C#简单的对象交互

在对象的世界里,一切皆为对象;对象与对象相互独立,互不干涉,但在一定外力的作用下对象开始共同努力 对象交互的实例 电视机大家都有吧,依照万物皆对象的思维模式来看,电视机可以是一个类,然后电视机有一些基本的方法如: 电视机类 TV 1.打开电视的方法open(); 2.关闭电视的方法Close(); 3.切换电视频道的方法change(); class TV { //电视的状态 bool flag; //打开电视的方法 public void open() { if (flag) { //如果电视

如何实现对象交互

在本篇随笔中,我们学习下什么是对象选择,投影和反投影是如何工作的,怎样使用Three.js构建可使用鼠标和对象交互的应用.例如当鼠标移到对象,对象变成红色,鼠标移走,对象又恢复原来的颜色. 本篇随笔的源代码来自于:https://github.com/sole/three.js-tutorials/tree/master/object_picking 这里还有更多的例子可供参考: 和立方体交互,当你在立方体盒子上点击,鼠标和立方体交互的点会出现一个黑点: 画布交互,你可以增加方格到画布上,也可以

写给自己看的小设计7 - 对象设计过程之对象交互

对象创建完了以后,就是互相协作完成系统的功能.对象的协作方式通常有如下方式: 直接引用,互通有无 这种方式最为自然,最为直接,最为简单,也是通常情况下的首选.不管是传参数,还是直接创建后直接使用对象的方法,都是属于这种情况: public class ComponentB { public void Run(ComponentA componentA) { componentA.Say(); } } 依靠中介通信 当对象之间的交互复杂起来以后,直接的通信可能耦合度就太高了,这个时候要靠辅助对象来

NVisionXR_iOS教程六 —— 场景中对象交互

本章节将介绍如何与场景中的对象进行交互,接着上一章节的代码,我们往立方体对象 添加如下代码,并实现它的代理<HitEventDelegate>  代码:     // 创建一个立方体      NVBoxWidget *cube = [[NVBoxWidget alloc] initWithScenePlay:self WidgetName:@"cube"];      // 添加材质,传入的是对应的material 材质名      [cube setAppearance

中国MOOC_面向对象程序设计——Java语言_第2周 对象交互_1有秒计时的数字时钟

第2周编程题 查看帮助 返回 第2周编程题,在课程所给的时钟程序的基础上修改 依照学术诚信条款,我保证此作业是本人独立完成的. 温馨提示: 1.本次作业属于Online Judge题目,提交后由系统即时判分. 2.学生可以在作业截止时间之前不限次数提交答案,系统将取其中的最高分作为最终成绩. 1 有秒计时的数字时钟(10分) 题目内容: 这一周的编程题是需要你在课程所给的时钟程序的基础上修改而成.但是我们并不直接给你时钟程序的代码,请根据视频自己输入时钟程序的Display和Clock类的代码,

角色对象模式

意图 单个对象透过不同的角色对象来满足不同客户的不同需求.每一个角色对象针对不同的客户内容来扮演其角色.对象能够动态的管理其角色集合.角色作为独立的对象是的不同的内容能够简单的被分离开来,系统间的配置也变得容易. 译注:为了行文的流畅性及内容意思的准确性,尽量贴近原文使用英文单词标记特定内容, 如Customer表示客户,Client表示客户端,Component表示组件等.因为有各种图例说明,所以在图例说明时,使用原题中的英文单词对应图中内容.有时也中英文交叉使用.因为网页显示的问题,中文黑体

ES6对象扩展

前面的话 随着JS应用复杂度的不断增加,开发者在程序中使用对象的数量也在持续增长,因此对象使用效率的提升就变得至关重要.ES6通过多种方式来加强对象的使用,通过简单的语法扩展,提供更多操作对象及与对象交互的方法.本章将详细介绍ES6对象扩展 对象类别 在浏览器这样的执行环境中,对象没有统一的标准,在标准中又使用不同的术语描述对象,ES6规范清晰定义了每一个类别的对象,对象的类别如下 1.普通(Ordinary)对象 具有JS对象所有的默认内部行为 2.特异(Exotic)对象 具有某些与默认行为

第12讲——对象和类

[抽象和类] 引言:生活中充满复杂性,处理复杂性的方法之一是简化和抽象.如果我们要用信息与用户之间的的接口来表示计算,那么抽象将是至关重要的.也就是说,将问题的本质特征抽象出来,并根据特征来描述解决方案.在上一讲的垒球统计数据示例中,接口描述了用户如何初始化.更新和显示数据.抽象是通往用户定义类型的捷径,在C++中,用户定义类型指的是实现抽奖接口的类设计. 1.1  类型是什么 当我们看到一个给定的基本数据类型,我们会想到: 它定义的数据对象需要的内存: 它定义的数据对象能执行的操作: 它决定如

中介者模式-对象行为型

原理 用一个中介对象来封装一系列的对象交互.中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互.中介者模式又称为调停者模式. 1)迪米特法则的一个典型应用:在中介者模式中,通过创造出一个中介者对象,将系统中有关的对象所引用的其他对象数目减少到最少,使得一个对象与其同事之间的相互作用被这个对象与中介者对象之间的相互作用所取代.因此,中介者模式就是迪米特法则的一个典型应用.2) 通过引入中介者对象,可以将系统的网状结构变成以中介者为中心的星形结构,中介者承担了中转