版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、面向对象的 语言程序设计,Java,主讲 :,面向对象的编程技术,面向对象方法发展的背景,面向对象方法发展的历史,面向对象程序设计的特点,20世纪60年代中期到70年代中期,在计算机界爆发了“软件危机”,传统的生命周期方法学的许多缺点暴露无疑,虽然它仍然能部分地缓解“软件危机”。 此后,为了克服传统方法学的缺点,面向对象方法学日益受到人们的重视,并且快速地崛起。,面向对象方法起源于面向对象程序设计语言,起源于50年代人工智能的早期研究,60年代挪威计算中心开发的Simula67, 引入了类的概念和继承机制,标志着面 向对象程序设计的出现,面向对象方法起源于面向对象程序设计语言,70年代出现的并
2、发Pascal,Ada和Modula-2 等编程语言,支持数据与操作的封装,1972年,出现了Smalltalk-72,面向对象方法起源于面向对象程序设计语言,1981年问世的Smalltalk80是第一个能够实际 应用的面向对象程序设计语言,80年代中期至今,出现了C+,Object Pascal, Java等面向对象程序设计语言,标志着面向 对象程序设计的真正普及,3.1.1 面向对象的概念 问题空间元素在方法空间中的表示称为对象(也称为实例instance),“对象”是现实世界的实体或概念在计算机逻辑中的抽象表示。 面向对象的程序设计是以要解决的问题中所涉及到的各种对象为主要考虑因素。,
3、把问题看成是相互作用的事物的集合,用属性描述事物,对事物的操作叫做方法,事物称为对象,属性称为数据,对象是数据与方法的集合。OOP主要技术包括封装、继承、多态、覆盖。,“对象”是面向对象方法中使用的最基本的概念。 在应用领域中有意义的、与所要解决的问题有关系的任何事物都可以作为对象,它既可以是具体的物理实体的抽象,也可以是人为的概念,或者是任何有明确边界和意义的东西。总之,对象是对问题域中某个实体的抽象,设立某个对象就反映了软件系统保存有关它的信息并且与它进行交互的能力。,例如,一名学生、一所学校、一个窗口、一座图书馆、一本图书、贷款、借贷等等,都可以作为一个对象。 由于客观世界中的实体通常都
4、既有静态的属性,又有动态的行为,因此,面向对象方法中的对象是由描述对象属性的数据以及可以对这些数据施加的所有操作封装在一起构成的统一体。,封装是指把对象的属性和行为结合成一个独立的系统单位,尽可能隐藏对象的内部细节,只保留有限的对外接口是之与外部发生联系。 封装的思想是将对象内部的信息进行屏蔽,人们只能通过对象界面上的允许操作对对象进行动作,改变对象的属性及状态。,对象的封装使我们不必关心诸如对象行为是如何实现的这样一些细节;同时,实现了模块化和信息隐藏,这样保证了程序的可移植性和安全性,也有利于对复杂对象的管理。,界面,对象的形象表示,操作1,操作2,操作3,状态 S,操作1,2,3的实现,
5、“类”就是对具有相同数据和相同操作的一组相似对象的定义,也就是说,类是对具有相同属性和行为的一个或多个对象的描述,通常在这种描述中也包括对怎样创建该类的新对象的说明。 通过类的定义可以实现代码的复用。我们不用去描述每一个对象,而是通过创建类的一个实例来创建该类的一个对象,这样大大简化了软件的设计。,实例就是由某个特定的类所描述的一个具体对象new。 方法就是对象所能执行的操作,方法描述了对象执行操作的算法,响应消息的方法。 属性就是类中所定义的数据,它是对客观世界试题所具有的性质的抽象。,消息就是要求某个对象执行在定义它的那个类中所定义的某个操作的规格说明。通常,消息由下述三部分组成: 消息的
6、接收者 接收对象应采用的方法 方法所需要的参数,例如,Mycircle是一个半径4cm、圆心位于(100,200)的Circle类的对象,也就是Circle类的一个实例,当要求它以绿色在屏幕上显示自己时,在C+语言中应该向它发出下列消息: Mycircle.Show(GREEN); Mycircle是消息的接收者;Show是接收对象应采用的方法;GREEN是方法所需要的参数。当Mycircle接收到这个消息后,将执行Circle类中所定义的Show操作。,封装是指把对象的属性和行为结合成一个独立的系统单位,尽可能隐藏对象的内部细节,只保留有限的对外接口是之与外部发生联系。 封装的思想是将对象内
7、部的信息进行屏蔽,人们只能通过对象界面上的允许操作对对象进行动作,改变对象的属性及状态。 对象的封装使我们不必关心诸如对象行为是如何实现的这样一些细节;同时,实现了模块化和信息隐藏,这样保证了程序的可移植性和安全性,也有利于对复杂对象的管理。,广义地说,继承是指能够直接获得已有的性质和特征,而不必重复的定义它们。在面向对象程序设计中,继承是子类自动地共享基类(父类)中定义的属性和方法的机制。 面向对象程序设计的许多强有力的功能和突出的优点,都来源于把类组成一个层次结构的系统(类等级):一个类的上层可以有父类,下层可以有子类。这种层次结构系统的一个重要性质是继承性,一个类直接继承其父类的全部描述
8、(数据和操作)。,鸟:全身有羽毛,后肢能行走,有翅膀能飞的一种动物。 鹂li:(黄莺ying)羽毛黄色,从眼边到头后部有黑色斑纹,叫的声音很好听的一种鸟。 鹂li:(黄莺ying)羽毛黄色,从眼边到头后部有黑色斑纹,叫的声音很好听的一种全身有羽毛,后肢能行走,有翅膀能飞的动物。,实现继承机制的原理:,A的操作,A的变量,类A,a1(类A的实例),类A,类A的实例变量,类B(A的子类),b1(类B的实例),从A继承的特性,B的操作,B的变量,类B,从A继承的实例变量,类B的实例变量,继承具有传递性,如果类C继承类B,类B继承类A,则类C继承类A。因此,一个类实际上继承了它所在的类等级中在它上层的
9、全部基类的所有描述,也就是说,属于某类的对象除了具有该类所描述的性质外,还具有类等级中该类上层全部基类描述的一切性质。 当一个类只允许有一个父类时,类的继承是单一继承;当允许一个类有多个父类时,类的继承是多重继承。,在一般类中定义的属性或方法被子类继承以后,可以具有不同的数据类型或表现出不同的行为。 同一个属性或方法在一般类及其各个子类中具有不同的语义。,在OOP中,子类可以把父类的方法重新定义,使之具有新的功能,而方法名,参数、返回类型与父类相同。 这种技术称为方法覆盖(override)或者重写(rewrite )。,修饰符 class 类名 extends 父类名 implements
10、接口名 类型 成员变量; 修饰符 类型 成员方法 (参数列表) 类型 局部变量; 方法体; ,1访问控制符 public:公共类,说明这是一个公共类,可以被其它任何类引用和调用 不写访问控制符,表示类只能被本包的其它类访问。,2抽象类abstract 以abstract作为关键字,如果有的话,应该放在访问控制符后面,表示这个类是个抽象类。 抽象类不能直接产生实例化一个对象,它只能被继承。,2抽象类abstract 抽象类是指包含至少一个抽象方法的类,并且抽象类不能被实例化,抽象类由修饰词abstract声明。 抽象方法是指有访问修饰词(public、private.)、返回值类型(int、vo
11、id.)、方法名和参数列表,而无方法体且无包容方法体的花括号的方法。 如果类中有抽象方法,那么类必须声明为抽象类,包含有抽象方法的类不能实例化。,抽象类只能由其它类继承使用,自己不能产生出对象实体。子类在继承抽象类时,必须重写其父类的抽象方法,给出具体的定义。 抽象类的作用是: (1)将许多类共享的数据和方法组成一个类,但不提供一个完整的实现。 (2)强迫子类实现特定的方法。 Java规定,构造方法、静态方法和私有方法不能成为抽象方法。,abstract class A int a; int b; int max(int a , int b); ,3最终类final 以 final 作为关键字
12、,如果有的话,应该放在访问控制符后面,表示这个类是个最终类,也就是说最终类不能被继承,不能再派生出其它子类。 String 就是个 final 类。,1类的属性 声明类的属性为简单变量的格式是: 修饰符 变量类型 变量名=初值 修饰符包括访问控制修饰符、静态修饰符static、最终说明符final。,1类的属性 private:私有,此成员只能在类的内部使用 default:也可以不写访问控制符,成员可被本包的其它类访问。 protected:被保护,成员可被本包的所有类访问,也可以被声明它的类和派生的子类访问(家庭成员)。 public:公共,成员可被所有类访问。,2方法 声明类的方法的格式
13、是: 修饰符 返回值类型 方法名(形式参数列表) throws 异常名列表 . ,2方法 方法的修饰符很多,包括访问控制符、静态修饰符 static、抽象方法修饰符abstract、最终方法 final、同步修饰符synchronized、本地修饰符native。,3方法的覆盖 类层次结构中,如果子类中的一个方法与父类中的方法有相同的方法名并具有相同数量和类型的参数列表,则称子类中的方法覆盖了父类中的方法。 通过 子类引用覆盖方法时,总是引用子类定义的方法,而父类中定义的方法被隐藏。,3方法的覆盖 在子类中,若要使用父类中被隐藏的方法,可以使用super关键字。,Page 59 例3-2 Ov
14、errideDemo.java,3方法的重载 在Java类中可以创建名字相同,但是参数不同和返回值不同的几个方法,这就是方法重(zhong)载。Java系统通过参数和返回值来分辨具体是哪一个方法,Page 60 例3-3 OverLoadDemo.java,在现实世界中类与它描述的对象有很明显地区别,类是一个概念,而实际对象是一个实体。如某一个机械零件图是一个类,按照设计图加工制造的零件就是该类描述的一个对象。 类是对象的原型(抽象模型),对象是具有类指定特性和方法的实体,由类得到对象的过程称为类的实例化。正如按同一机械零件图可以造出很多相似的零件一样,由同一类也可以生成许多对象。,对象和现实
15、生活中的事物一样,有它的产生、发展和消亡的过程,在Java中称之为对象的创建、使用和释放,这一过程称为对象的生命周期。,对象实例化的格式是: 类型 对象名=new 类型(参数列表); 其中,“类型”表示对象的类型,必须是复合类型,包括类、字符串等,“对象名”是一个合法的标识符。“参数列表”要根据类的形式参数确定,与之匹配。,public class Person String name; int age; float salary; public void work ( ) System.out.println(Im a engineer!); 生成一个对象 li 的方法是: Person l
16、i = new Person( );,1. 引用对象的属性(变量) 类的成员(包括成员属性和成员方法)必须要在产生对象即实例化后才能被引用,引用的方法是: 对象名.成员 Person li = new Person( ); li . name = Li ming; new Person( ) . name = Li ming ;,2引用对象的方法 格式: 对象引用 . 方法名 ( 参数列表 ) ;,Page 62 例3-4 TestPerson . java,1基本数据类型的参数传递 基本类型的变量作为实参传递,并不能改变这个变量的值 。 方法中的形式参数相当于局部变量,方法调用结束后自行释放
17、,不会影响到主程序中的同名变量 。,Page 63 例3-5 PassValue . java,2引用变量的参数传递 引用数据类型的参数调用可以改变对象的内容 。,Page 63 例3-6 PassRef . java,Java运行时系统通过垃圾收集器周期性地释放无用对象所占的内存,以完成对象的清除 。 Java的垃圾收集器自动扫描对象的动态内存空间,对正在使用的对象加上标记,将所有引用的对象作为垃圾收集起来并释放 。,3.3.1 构造方法的定义 构造方法的特征: 具有与类相同的名称 不含返回类型 不能在方法中用return语句返回一个值 在类实例化时,它会由系统自动调用,Page 64 例3
18、-7 TestPerson. java,一个类的构造方法可以有多个,而且还可以进行重载。,Page 65 例3-8 TestPerson. java,构造方法总结: 一个类的构造方法可以有多个,而且还可以进行重载。 每个类至少有一个构造方法,如果用户没有定义,系统自动产生一个默认构造方法,没有参数,也没有方法体。 用户可以定义构造方法,如果定义了构造方法,则系统不再提供默认构造方法。 构造方法一般是public的,不可定义为private的。,3.4.1 this this在方法体用来指向引用当前正在执行方法的那个对象实例 。 以例 3-8 举例 s name person(String s
19、) name = s; /s实际是代表名字的参数 ,3.4.1 this this(参数表),这个构造函数就会调用同一个类的另一个相同的构造函数 。 Page 68 UserInfo.java,3.4.2 super 如果想要使用父类的构造函数则应当使用super(参数列表)的形式。,Page 68 City. java,Java 提供了String 和 StringBuffer 两个类来封装对字符串的各种操作。都是 final类,不能被其它类所继承。 String : 内容不能变 StringBuffer : 内容可以改变,String s = Hello Java World ! ; StringBuffer s = new StringBuffer(Hello) ;,StringBuffer.toString( ) - String Java提供了连接运算符 + ,可将其它各类型的数据转换为字符串,并连接形成新的字符串,+运算是通过StringBuffer类和它的append方法实现的。 String s = a+4+c; String s = new StringBuffer().append(a).append(4).append(c).toString( );,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 锡林郭勒职业学院《口腔疾病概要》2025-2026学年期末试卷
- 初级社会工作综合能力机考试题及答案
- BRM-BRG1-ATP-IN-9-生命科学试剂-MCE
- 广播电视机务员安全生产意识评优考核试卷含答案
- 大气环境监测员操作规范水平考核试卷含答案
- 环境噪声与振动监测员10S考核试卷含答案
- 高压熔断器装配工安全专项竞赛考核试卷含答案
- 2026年智慧城市成效评估题库
- 2026年供销合作社考试供销社应收账款管理题
- 呼吸治疗师岗前认知考核试卷含答案
- 老年人摄影与艺术创作指导
- 2024-2025学年度洛阳职业技术学院单招《职业适应性测试》综合提升测试卷含答案详解【新】
- 2025年文化旅游演艺产业集群人才培养可行性研究
- 蒙牛校园招聘在线测评题
- 2026年振动传递路径的分析方法
- 工程项目竣工资料归档与移交规范
- 工厂防错培训课件
- 高中数学资优生导师培养模式与教学资源整合研究教学研究课题报告
- 商业综合体弱电系统施工方案
- 2025年选拔乡镇副科级干部面试真题附答案
- 湖南公务员面试必-备知识要点集锦
评论
0/150
提交评论