现实世界VSJava世界

现实世界VSJava世界

ID:39538691

大小:3.26 MB

页数:36页

时间:2019-07-05

上传者:U-145848
现实世界VSJava世界_第1页
现实世界VSJava世界_第2页
现实世界VSJava世界_第3页
现实世界VSJava世界_第4页
现实世界VSJava世界_第5页
资源描述:

《现实世界VSJava世界》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

第2章现实世界VSJava世界——了解面向对象的Java2.1万事万物皆对象——理解对象模型2.2对象之间的差别——事物的属性2.3万物皆有变化——对象的方法2.4“物”以“类”聚——什么是“类”2.5为什么要面向对象编程2.6程序中的对象——Java的对象世界2.7内外有别——对象的封装2.8绝知此事要躬行——自己动手定义对象2.9小结2.10习题 2.1万事万物皆对象——理解对象模型2.1.1程序员眼中的世界——现实世界中的对象2.1.2什么是“对象”2.1.3现象世界中的对象 2.1.1程序员眼中的世界——现实世界中的对象现实世界中的事物是怎么样的一回事,我们怎么去看待它们是另一回事。大家不要误会,我们不是在这里跟大家讨论“唯物与唯心”这一哲学问题的。只不过,下面开始向大家介绍的“对象”这一概念与此有关罢了。听上去很玄,实际上这只是一种看待世界上所有事物的一种方式,一种理解现实世界的思维。 2.1.2什么是“对象”1.对象的英文单词——Object2.直观地认识一下对象世间万物都是一个个的对象,而对象就是这些事物的一个统称。看一下图2.1中的内容,可能会有更直观的认识。图2.1什么是对象 2.1.3现象世界中的对象1.现实世界中的一些具体对象2.由现实世界中的事物抽象为对象来看下面的图2.2,图中列出了3种类型的电脑,以及我们对这3个“对象”所关注的特性。图2.2各种对象只是为了抽象事物的特性 2.2对象之间的差别——事物的属性2.2.1何为对象的属性2.2.2对象与属性的关系 2.2.1何为对象的属性1.不同对象的属性值不同在图2.3中给出了对象“Laptop1”和“Laptop2”的一些属性值。这些值有时可以用来区别这两个不同的对象。图2.3不同属性值可以区分不同的对象2.不同对象具有不同的属性我们可以参考一下图2.4来看看不同对象的属性。 图2.4不同的属性可以区分不同的对象3.属性与对象间的关系下面接着来看另一个例子,如果只拿电子产品来举例子,那样会限制大家的思路,虽然大家对这类产品非常熟悉。但这会影响对“属性”这个概念的理解。不要觉得“属性”只存在于由实物抽象出来的对象当中,一些本来就属于抽象类型的对象也有相应的属性。图2.5对象与属性之间的关系 2.2.2对象与属性的关系我们所关注的对象属性中,对于任何一个属性都具有3个方面:属性所属的对象、属性名称、属性的值。继续看图2.6,PC1和PC2这两个对象所拥有的属性名称都是一样的,只是某些个别的属性值不相同。我们可以根据这些不同属性的值来确定这两个对象是不相同的。图2.6对象的属性值可以发生变化 2.3万物皆有变化——对象的方法2.3.1对象的方法定义2.3.2对象方法的一个示例 2.3.1对象方法的定义1.什么是方法2.方法与对象间的关系,如图2.7所示。3.对象的变化与对象的方法。图2.7对象Cat和Dog的方法 2.3.2对象方法的一个示例1.对象与方法的例子图2.8中列出的一个对象——AirConditioner,以及它的3个属性和对应的5个方法。这些属性和方法已经可以抽象出一个简单的“空调”对象,我们忽略了空调的其他所有特性及参数等,只来关心它的最主要的功能——调节室内温度。图2.8对象的属性和方法 2.方法的具体过程图2.9中描述出了空调从开机工作直到用户切断电源、停止工作的整个过程所涉及的方法。图2.9空调对象工作过程中所用的方法 2.4“物”以“类”聚——什么是“类”2.4.1为什么要定义“类”这个概念2.4.2什么是“类”,类与对象的关系2.4.3“类”与“类”之间的关系 2.4.1为什么要定义“类”这个概念1.对象要由类来定义对象只是现实世界中的一些具体事物的抽象。需要在抽象的过程中,对现实世界中的这些对象有个明确的定义,如图2.10所示。图2.10类定义对象,就像饼干模具生产饼干 2.类可以用来抽象一些对象的共同特征在图2.11中,一共给出了3个具体的对象,它们分别为3台不同类型的计算机,但它们都具有“计算机”这一类别的所有共同特征,可以说这3个对象都属于“计算机”这一个类别。图2.11由一些对象可以抽象为“类”3.通过类的层次可以更清晰地表述对象间的关系图2.12兰科植物的分类图 2.4.2什么是“类”?类与对象的关系1.“类”的定义2.从“类”具体化到对象图2.13中给出了更多的由类具体到对象的例子。从这个图中也可以看到,现实中的所有事物都可以抽象为类。任何类都可以具体化为一个相应的对象。图2.13类与对象的关系 2.4.3“类”与“类”之间的关系在类的结构图中,由于上一层的类是由下面一层的类抽象来的(最下面一层除外,它们是直接由对象抽象而来的),所以,可以得出这样的结论:在下面一层的类中,包括上面所有类的特征。除此之外,下面一层的类还有可能包含上一层的类所没有的其他特征。这可以从类的定义及“类是由其他对象或类的共同特征所组成的”得出。 2.5为什么要面向对象编程2.5.1面向对象有什么好处2.5.2面向对象编程的特点 2.5.1面向对象有什么好处1.对象为我们提供了模型化的好处在图2.14中可以看到汽车、图纸与模型之间到底是如何同“类”与“对象”相互一一对应的。图2.14事物、类和对象2.对象可以方便地进行信息隐藏3.对象可以有统一的外部接口4.定义好的类特征可以重用 2.5.2面向对象编程的特点1.数据抽象2.过程抽象3.封装特性4.可继承性5.多态特性 2.6程序中的对象——Java的对象世界2.6.1Java对象的模具——Java的类2.6.2从模具到成品——用class定义对象2.6.3什么是Java中的对象2.6.4拿来主义——extends的威力2.6.5对象的“使用说明”——方法的实现 2.6.1Java对象的模具——Java的类1.Java中的类及其定义语法class类名{成员数据成员方法}2.在Java中定义一个类类的具体定义如下:/*类的名称*/classCircle{//定义一个表示圆的类/*类的属性*/doublex;//圆心的X轴坐标xdoubley;//圆心的Y轴坐标ydoubleradius;//圆半径:R/*类的方法*/doublegetDiameter(){}//计算圆的直径长度:2*RdoublegetCircumference(){}//计算圆的周长:2*PI*RdoublegetArea(){}//计算圆的面积:PI*R*RdoublegetCurvature(){}//计算圆的曲率:1/R} 2.6.2从模具到成品——用class定义对象用一个类来定义对象比定义一个类要简单得多,主要的工作都在定义类的时候完成了。在Java中,定义一个对象的语法格式为:类名称对象名称; 2.6.3什么是Java中的对象在Java中使用对象属性或执行对象方法的语法格式如下:对象名.属性;对象名.方法();图2.17中明确表示出对象作为一个类的实体在内存中的保存方式。对于每一个对象,它有着自己的属性值,这些值就保存在图2.17所示的对象保存位置当中。图2.17内存中的对象 2.6.4拿来主义——extends的威力1.“拿来主义”的思维2.extend的威力语法格式:class新类名extends原类名{新增加的成员数据新增加的成员方法}图2.18用UML表示的继承关系3.举例说明处在图2.18中最上面位置的类是下面3个类的父类,下面3个类都是由它继承而来的。从最上面的类图中可以看到哺乳动物类所包含的两个方法。 2.6.5对象的“使用说明”——方法的实现下面给出一个极为简单的包括方法实现的示例代码:/*类的名称*/classSquare{//定义一个正方形类/*类的属性*/doublesideLength;//正方形的边长/*类的方法*/doublegetCircumference(){//计算正方形的周长:边长*4return4*sideLength;//方法getCircumference()的实现部分}doublegetArea(){//计算正方形的面积:边长*边长returnsideLength*sideLength;//方法getArea()的实现部分}} 2.7内外有别——对象的封装2.7.1公开还是保密——访问控制关键字2.7.2要遵纪守法——对象的操作方式 2.7.1公开还是保密?——访问控制关键字1.default——友好的2.public——公共的3.protected——保护的4.private——私有的5.定义Java类6.权限类型 2.7.2要遵纪守法——对象的操作方式1.先从对象的属性开始2.如何调用对象的方法3.对数据的高效封装4.封装之后的对象 2.8绝知此事要躬行——自己动手定义对象2.8.1如何定义一个圆的类2.8.2如何定义一个圆的方法2.8.3查看运行的结果 2.8.1如何定义一个圆的类把后面的代码都输入到Example2_1.java之后,在文件的所大目录下执行命令来编译这个Java程序文件:javacExample2_1.java执行完上面这个命令之后,会在当前目录下面产生一个名为Example2_1.class的文件。这个文件就是Java字节码文件,还记得吗?然后再执行这个Java字节码程序:javaExample2_1 2.8.2如何定义一个圆的方法属性定义完了之后就是方法的定义,在这个例子当中,我们看到了两个私有的方法。分别为:distanceX()和distanceY(),它们两个只能被在这个类中定义的方法使用,不能被外面的Java程序直接使用。后面的公共方法distanceTo()定义中使用到了上面这两个私有方法,distanceTo()方法本身的访问权限是公共的,外界可以直接访问它。然后通过它会间接用到类的私有方法distanceX()和distanceY()。Java主程序的代码请看光盘演示。 2.8.3查看运行的结果上面的两节已经完成了一个圆的定义,下面大家可以自己用计算器验算一下咯。在调用这些方法时,Java会先计算出相应的结果,然后再把计算结果输出到屏幕上。我们在这一章中只需要明白什么是面向对象的思维,以及Java中的对象和类是个什么样的概念。如何在Java中定义并使用它们,再就是对象中的属性和方法如何封装。 2.9小结面向对象的思维方式是用另一个视角来看待并理解我们早已非常熟知的世界。这是对现实世界的另一种理解,这个办法可以带领大家进入Java的对象世界。从大家熟悉的日常生活中找到“对象”和“类”的例子,从而了解“对象”与“类”的概念。本章向大家介绍了Java的类和对象。知道了对象的属性是它的一些特征抽象而来的。但还没有详细介绍属性到底在Java中是什么,是用什么来表示对象的属性的,属性在Java程序中是以什么方式来体现的。 2.10习题【习题1】面向对象编程的特征有哪些?【习题2】Java中如何定义一个对象?【习题3】类与对象是什么关系?

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。
关闭