-
1 文档
-
2 PPT
-
3 视频
-
4 英文PPT
什么是对象
关于面向对象,首先要弄清楚两个基本概念:何谓对象?如何面向对象?
现实世界中一切皆是对象,我们遇见的一个人,看见的一棵树,抚摸的一只小狗以及手边要处理的一件事等等,都是某一类事物的对象。
随着软、硬件技术的提高,人们已经习惯用计算机解决越来越复杂的现实问题。面向对象方法即是以对象为解决问题的基本元素,通过分析对象间的关系,对现实世界进行抽象和建模的设计思想与技术。面向对象更利于计算机用接近人理解问题的方式对复杂系统进行分析、设计与编程。计算机技术中的对象不仅能表示具体的事物,还能表示抽象的规则、计划或事件。
如何研究对象
计算机科学中的面向对象技术,以现实世界中的对象为分析基础,那么如何研究计算机对象,就要参照现实世界是如何研究对象的。
通过分类学和抽象技术我们认识到,研究对象首先要为对象进行类别的抽象,也就是说,研究面向对象技术,就是通过分析问题域,对需要计算机解决的人、事、物进行识别、命名和描述,为对象建立模型进行研究。
注
1) Java
[分类学,广义分类学就是系统学,指分门别类的科学。 狭义分类学特指生物分类学,研究活着的和已灭绝的动植物分类的科学,即研究动物、植物的鉴定、命名和描述,把物种科学地划分到一种等级系统以此反映对其系统发育的了解情况。]
对象模型
模型是对现实或构想的一种表述。对象模型通过对象的属性、行为、封装、继承、多态以及对象间关系和消息传递等角度文档化系统。
建模技术
对象建模试图在被称为对象的单一结构中融合数据和过程要素。对象建模技术是面向对象分析和设计方法的基础。
对象建模是一种用于辨识系统环境中的对象和这些对象之间关系的技术。Grady Booch、James Rumbaugh和Ivar Jacobson共同建立了称为统一建模语言的UML,它是一套建模规则,它使用对象说明或描述软件系统。
抽象
抽象是一种设计技术,重点说明一个实体各个本质的方面,而忽略或者掩盖不很重要或非本质的方面。抽象是一种重要的工具,用来将复杂的现象简化到可以分析、实验、或者可以理解的程度。
例如,为了研究学生这个主体,我们对学生进行抽象,将学生看成是一个具有学号、姓名、性别和专业班级的个体。这样的抽象忽略了学生作为一个人的很多细节,如身高、体重、国籍、肤色等等,但这些细节与学生在学校的教学管理建模无关。
在软件中,抽象所关心的是实体的属性和行为。属性指的是与一个实体相关的性质或特性,而行为指的是实体可有执行的动作集。在教学管理中,学生的属性是学号、姓名、性别等。学生的行为是选课、参加学科竞赛等。
抽象对于创建软件对象是至关重要的,现实中的对象非常复杂,难以完全捕获,并且不是所有的细节都是软件功能所需要的。
类、对象
软件中的类,给抽象定义了一个固定的结构,通过定义变量来表达属性,方法来表达行为。类是对抽象的一种形式化表达。
对象是抽象的类的一个可以明确区分的真实实例,对象赋予抽象的属性和行为一个具体的内容。例如,用学号、姓名、性别定义一个学生的类,那么学号是2015xxxx的男同学张三,就是这个学生类的一个对象。
封装
封装又称数据隐藏,从形式上看,封装将属性和行为定义在一个称为类的结构中,从对象的角度看,隐藏了数据的实现方式。实现封装的关键在于绝对不能让类中的方法直接访问其他类的属性,但它可以访问它自己类中的属性。程序仅通过对象的方法与对象数据进行交互。封装给予对象”黑盒“特征,这是提高重用性和可靠性的关键。
继承
在生物学中普遍存在着继承关系,软件中的继承关系是”is-a“的关系,用来表示特殊与一般关系。例如,门和木门、栅栏门之间,木门和栅栏门继承自门,木门”is-a“门,栅栏门”is-a“门。继承关系使得可以从一个已有的类通过扩展创建一个新的类,新的类具有所扩展的类的全部属性和方法,在新的类中,只需要提供那些属于新类的新方法和属性就可以了,继承使类得以复用,对软件工程有着重要的意义。
Object:所有类的超类
Object类是Java中所有类的最终祖先,在Java中,每个类都是由它扩展而来的,但是并不需要明确指出。由于在Java中,每个类都是由Object类扩展而来的,所以弄清Object类提供的所有服务十分重要。
Object类型的变量可以引用任何类型的对象,但如果想对它进行特定操作时,还需要知道其原始类型并进行类型转换。在Java中,只有基本类型的值不是对象,而所有的数组类型,不很容易对象数组还是基本类型的数组都扩展于Object类型。
Object类的UML图
equals方法
用于检测一个对象是否等于另一个对象。在Object类中,这个方法将判断两个对象是否具有相同的引用,对于多数类来说,这种判断并没有什么意义,通常需要检测两个对象的属性是否相等,这需要在用户自定义的类中覆盖Object类的equals方法,更多的技巧在以后的章节说明。
hashCode方法
哈希码是由对象导出的一个整型值。哈希码是没有规律的,其值为对象的存储地址。如果重新定义equals方法,就必须重新定义hashCode方法,equals与hashCode的定义必须一致,如果x.equals(y)返回true,那么x.hashCode()就必须与y.hashCode()具有相同的值。
toString方法
用于返回表示对象的字符串,这样,只要对象与一个字符串通过操作符”+“连接起来,Java编译就会自动地调用toString方法,以便获得这个对象的字符串描述。它是一种非常有用的调试工具,在标准类库中,许多类都定义了toString方法,以便用户能够获得一些有关对照状态的必要信息。在自己设计的类中应该覆盖这个方法。


