java面向对象编程(31)

上传人:san****019 文档编号:71618271 上传时间:2019-01-21 格式:PPT 页数:35 大小:428.81KB
返回 下载 相关 举报
java面向对象编程(31)_第1页
第1页 / 共35页
java面向对象编程(31)_第2页
第2页 / 共35页
java面向对象编程(31)_第3页
第3页 / 共35页
java面向对象编程(31)_第4页
第4页 / 共35页
java面向对象编程(31)_第5页
第5页 / 共35页
点击查看更多>>
资源描述

《java面向对象编程(31)》由会员分享,可在线阅读,更多相关《java面向对象编程(31)(35页珍藏版)》请在金锄头文库上搜索。

1、第3章 面向对象编程,3.1面向对象问题求解的提出 3.2面向对象的分析与设计 面向对象的分析(OOA) 面向对象的设计(OOD) 3.3面向对象程序设计方法的优点 可重用性 可扩展性 可管理性 3.4Java中类的定义和使用 类声明 类体,3.1面向对象问题求解的提出,程序设计语言的发展阶段: 第一代语言(1GL) : 二进制机器代码( 0101001 ) 第二代语言 (2GL) : 汇编语言 (Low Level Language LLL) ( mov, add ) 第三代语言 (3GL): 高级语言 (HLL)(以C语言为代表,过程式编程语言) 第四代语言(4GL) : 面向对象语言(O

2、OP )非过程化/面向对象的编程语言 OOP最大的优点是具备了隐藏库执行的某些方面的功能,另一个重要优点是过程与数据结构联合,这种数据属性与方法的结合称为类。,最早的面向对象的编程语言是1966年推出的Simlula,它首次提出模拟人类的思维方式,把数据和相关的操作集成在一起的思想。 20世纪80年代末期,以C+为代表的面向对象程序设计(OOP)才流行起来。其优点为隐藏库执行的某些方面的功能,另一个优点是过程与数据结构联合。 Java是20世纪90年代新出现的面向对象的编程语言,它去除C+中非面向对象的内容,并实现一次编写,多次使用的跨平台特点,是面向对象开发工具中极具潜力的成员之一。,3.2

3、面向对象的分析与设计 软件工程的新途径 面向对象作为一种思想及编程语言,为软件开发的整个过程:从分析设计到实现,提供了一个完整解决方案。面向对象堪称是软件发展取得的里程碑式的伟大成就。 面向对象方法简介 从80年代后期开始,进行了面向对象分析(OOA)、面向对象设计(OOD)和面向对象程序设计(OOP)等新的系统开发方式模型的研究,在有些文献中统称为OO范型。,图1-1 面向对象软件开发过程(软件生命周期),3.3面向对象程序设计方法的优点,与传统的方法相比,面向对象的问题求解具有更好的可重用性,可扩展性和可管理性 3.3.1可重用性 可重用性是面向对象软件开发的一个核心思路,面向对象程序设计

4、的抽象、封装、继承、多态四大特点都围绕这个核心服务。,1.抽象: 抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面。抽象并不打算了解全部问题,而只是选择其中的一部分,暂时不用部分细节。比如,我们要设计一个学生成绩管理系统,考察学生这个对象时,我们只关心他的班级、学号、成绩等,而不用去关心他的身高、体重这些信息。抽象包括两个方面,一是过程抽象,二是数据抽象。过程抽象是指任何一个明确定义功能的操作都可被使用者看作单个的实体看待,尽管这个操作实际上可能由一系列更低级的操作来完成。数据抽象定义了数据类型和施加于该类型对象上的操作,并限定了对象的值只能通过使用这些操作

5、修改和观察。,2.继承: 为什么会有继承?建立一个类后,发现另一个新的类有相同的特性,两个选择:重新定义一个新的类;在已有类的基础上,修改(加加/减减) 继承是一种联结类的层次模型,并且允许和鼓励类的重用,它提供了一种明确表述共性的方法。新类继承了原始类的特性,新类称为原始类的派生类(子类),而原始类称为新类的基类(父类)。继承性很好的解决了软件的可重用性问题。,运输工具,航空运输工具,陆地运输工具,水上运输工具,人力驱动,引擎驱动,二轮,四轮,客运,货运,3.封装: 封装是面向对象的特征之一,是对象和类概念的主要特性。封装是把过程和数据包围起来,对数据的访问只能通过已定义的界面。面向对象计算

6、始于这个基本概念,即现实世界可以被描绘成一系列完全自治、封装的对象,这些对象通过一个受保护的接口访问其他对象。一旦定义了一个对象的特性,则有必要决定这些特性的可见性,即哪些特性对外部世界是可见的,哪些特性用于表示内部状态。在这个阶段定义对象的接口。通常,应禁止直接访问一个对象的实际表示,而应通过操作接口访问对象,这称为信息隐藏。事实上,信息隐藏是用户对封装性的认识,封装则为信息隐藏提供支持。封装保证了模块具有较好的独立性,使得程序维护修改较为容易。对应用程序的修改仅限于类的内部,因而可以将应用程序修改带来的影响减少到最低限度。,4. 多态性: 多态性是指允许不同类的对象对同一消息作出响应。多态

7、性语言具有灵活、抽象、行为共享、代码共享的优势,很好的解决了应用程序函数同名问题。 表现在继承中方法的重写 子类从父类继承(extends扩展)而来 多个子类同属一个父类,所有子类有相同的父类 继承父类的方法 在不同的子类中有不同的表现形式 表现在用一个类中方法的重载,多态性在继承中的表现,3.3.2可扩展性 3.3.3可管理性,类的实现包括类声明和类体 3.4.1 类声明 class Mankind class 定义类的关键字。(注意不要把class写成Class)。 Mankind 类的名称,习惯上,类名的首字母大写,并且命名的规则符合标识符的规则。,3.4 java中类的定义和使用,3.

8、4.2 类体,类体包含数据(变量)的定义和方法的定义。只可以在类体中定义数据、初始化数据、定义方法的语句,而不能有其他的语句,如控制语句、赋值语句等。 class ,在定义类的成员变量时可以同时赋初值,但对于成员变量的操作只能放在方法中。例如: class Tom int x=98, y; y=87; /此语句对成员变量y进行了赋值操作 ,一个简单的类 class Student String name, stuNumber; double score1, score2, score3; void set1(String s1, String s2) name = s1; stuNumber

9、= s2; System.out.println(name + “ “ + stuNumber); double setScore(double d1, double d2, double d3) double d; score1 = d1; score2 = d2; score3 = d3; d = d1 d2 + d3; return d; ,1、变量的定义,(1)成员变量 在类体中定义的变量称为类的成员变量。其类型可以是java中的任一类型。成员变量在声明它的整个类中有效。 成员变量又可以分为: 类成员变量(类变量):类变量前有static关键字修饰,所有的对象共享类变量。改变一个对象的

10、类变量会影响到其他对象的这个变量 实例成员变量(实例变量):实例变量前无static修饰,所有的对象拥有各自不同的实例变量,存储空间也不同。,Java 实例,class Mankind String name=“Tom”,sex=“man”; static float salary= 3000.0f; void printInf(String n,String s,float m) int count=1; System.out.println(“person:”+n+”sex:”+s+ ”salary:”+m); System.out.println(“count=“+count); ,(2

11、)局部变量 在方法体中定义的变量和方法的参数称为局部变量。如n,s,m,count; 其类型可以是java中的任一类型。 其作用域只限制在定义它的方法内。,如果局部变量的名字与成员变量的名字相同,成员变量被隐蔽,即暂时无效。 例3.2 class Tom int x=98,y; / 实例变量 static int a; / 类变量 void f( ) /方法f int x=3; /x为局部变量 y=x; y=this.x; 如果局部变量与成员变量的名字相同,在该方法内引用成员变量,则必须使用关键字this(类的当前对象),2、方法的定义,方法声明部分:方法名和方法的返回类型 方法体:局部变量的

12、定义和合法的java语句 class Tom int x=98,y; static int a; void f( ) int x=3; y=x; y=this.x; ,方法分类,(1)类方法 方法前有static修饰的方法,类方法只能对类变量进行操作。 类方法调用: 类名.方法名 或者 对象名.方法名 类变量的调用: 类名.类变量名 或者对象名.类变量名,(2)实例方法 方法前无static修饰的为实例方法,实例方法既能对类变量操作也可以对实例变量操作。 实例方法调用: 对象名.方法名 实例变量的调用: 对象名.实例变量名,class Test public static void main(

13、String args) double d_product; Area myArea; myArea = new Area(); myArea.setV(21,23); d_product = myArea.product(); System.out.println(d_product); class Area double width, height; void setV(double w, double h) width = w; height = h; double product() return width*height; ,Java实例-例3.3,class A int a=5;

14、static int b; void c() /实例方法 b=10; /在实例方法中可对类变量进行操作 A.f(b); /类方法可以由类名调用,也可以写成f(b) System.out.println(“from instance method,b=”+b); static void f(int x) /类方法 b=x; / a=x; a是实例变量,要创建对象来引用它 System.out.println(“from class method,b=”+b); public static void main(String args) A.f(15); /A.c();实例方法不可以由类名调用 A

15、t=new A(); t.c(); ,输出结果 from class method,b=15 from class method,b=10 from instance method,b=10,作业:,设计一个学生类Student,包含的成员变量有“学号”、“班级”、“姓名”、“年龄”,成员方法有“获得 学号”“获得班级”“获得姓名”“获得年龄”、“修改年龄”。,(3)方法重载(method Overloading),所谓方法重载就是在一个类中可以有多个方法具有相同的名字,但这些方法的参数必须不同,或者是个数或者是类型。 注意:不可以以方法的返回值为基础构成重载方法,方法的重载(overload) 方法名相同,但方法的参数不同 方法描述 方法名(标识符) 参数类型 方法返回值 绝对值 abs(a) int int 绝对值 abs(a) long long 绝对值 abs(a) float float 绝对值 abs(a) double double public static int abs(int a) public static long abs(long a) public static float abs(float a) public static double abs(d

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号