JAVA面向对象编程(31)课件.ppt

上传人(卖家):晟晟文业 文档编号:4988476 上传时间:2023-01-31 格式:PPT 页数:35 大小:150.50KB
下载 相关 举报
JAVA面向对象编程(31)课件.ppt_第1页
第1页 / 共35页
JAVA面向对象编程(31)课件.ppt_第2页
第2页 / 共35页
JAVA面向对象编程(31)课件.ppt_第3页
第3页 / 共35页
JAVA面向对象编程(31)课件.ppt_第4页
第4页 / 共35页
JAVA面向对象编程(31)课件.ppt_第5页
第5页 / 共35页
点击查看更多>>
资源描述

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

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

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

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

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

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

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

8、规则符合标识符的规则。3.4 java中类的定义和使用中类的定义和使用3.4.2 类体类体 类体包含数据(变量)的定义和方法的定义。只可以类体包含数据(变量)的定义和方法的定义。只可以在类体中定义数据、初始化数据、定义方法的语句,而不在类体中定义数据、初始化数据、定义方法的语句,而不能有其他的语句,如控制语句、赋值语句等。能有其他的语句,如控制语句、赋值语句等。class n在定义类的成员变量时可以同时赋初值,但对于成员变量在定义类的成员变量时可以同时赋初值,但对于成员变量的操作只能放在方法中。例如:的操作只能放在方法中。例如:class Tom int x=98,y;y=87;/此语句对成员

9、变量此语句对成员变量y进行了赋值操作进行了赋值操作 n一个简单的类class Student String name,stuNumber;double score1,score2,score3;void set1(String s1,String s2)name=s1;stuNumber=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、变量的定义、变量

10、的定义(1)成员变量)成员变量 在类体中定义的变量称为类的成员变量。其类型可以是在类体中定义的变量称为类的成员变量。其类型可以是java中的中的任一类型。成员变量在声明它的整个类中有效。任一类型。成员变量在声明它的整个类中有效。成员变量又可以分为:成员变量又可以分为:类成员变量(类变量)类成员变量(类变量):类变量前有:类变量前有static关键字修饰,所有的关键字修饰,所有的对象共享类变量。对象共享类变量。改变一个对象的类变量会影响到其他对象的这个改变一个对象的类变量会影响到其他对象的这个变量变量 实例成员变量(实例变量)实例成员变量(实例变量):实例变量前无:实例变量前无static修饰,

11、所有的修饰,所有的对象拥有各自不同的实例变量,存储空间也不同。对象拥有各自不同的实例变量,存储空间也不同。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)局部变量)局部变量n在方法体中定义的变量和方法的参数称

12、为局部变量。如在方法体中定义的变量和方法的参数称为局部变量。如n,s,m,count;n其类型可以是其类型可以是java中的任一类型。中的任一类型。n其作用域只限制在定义它的方法内。其作用域只限制在定义它的方法内。n如果局部变量的名字与成员变量的名字相同,成员变量如果局部变量的名字与成员变量的名字相同,成员变量被隐蔽,即暂时无效。被隐蔽,即暂时无效。例例3.2 class Tom int x=98,y;/实例变量实例变量 static int a;/类变量类变量 void f()/方法方法f int x=3;/x为局部变量为局部变量 y=x;y=this.x;n如果局部变量与成员变量的名字相同

13、,在该方法内引用如果局部变量与成员变量的名字相同,在该方法内引用成员变量,则必须使用关键字成员变量,则必须使用关键字this(类的当前对象类的当前对象)2、方法的定义、方法的定义n方法声明部分:方法声明部分:方法名和方法的返回类型方法名和方法的返回类型n方法体方法体:局部变量的定义和合法的局部变量的定义和合法的java语句语句 class Tom int x=98,y;static int a;void f()int x=3;y=x;y=this.x;方法声明方法声明方方法法体体方法分类方法分类(1)类方法)类方法 方法前有方法前有static修饰的方法,类方法只能对类变修饰的方法,类方法只能

14、对类变量进行操作。量进行操作。n类方法调用:类方法调用:类名类名.方法名方法名 或者或者 对象名对象名.方法名方法名n类变量的调用:类变量的调用:类名类名.类变量名类变量名 或者或者对象名对象名.类变量名类变量名(2)实例方法)实例方法 方法前无方法前无static修饰的为实例方法,实例方法修饰的为实例方法,实例方法既能对类变量操作也可以对实例变量操作。既能对类变量操作也可以对实例变量操作。n实例方法调用:实例方法调用:对象名对象名.方法名方法名n实例变量的调用:实例变量的调用:对象名对象名.实例变量名实例变量名nclass Test n public static void main(Str

15、ing args)ndouble d_product;nArea myArea;nmyArea=new Area();nmyArea.setV(21,23);n d_product=myArea.product();nSystem.out.println(d_product);nnnclass Area ndouble width,height;n void setV(double w,double h)nwidth=w;nheight=h;n ndouble product()nreturn width*height;nnJava实例实例-例例3.3class A int a=5;stati

16、c 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

17、args)A.f(15);/A.c();实例方法不可以由类名调用实例方法不可以由类名调用 A t=new A();t.c();n输出结果nfrom class method,b=15nfrom class method,b=10nfrom instance method,b=10作业:n设计一个学生类设计一个学生类Student,包含的成员变量有包含的成员变量有“学号学号”、“班级班级”、“姓名姓名”、“年龄年龄”,成员方法有成员方法有“获得获得 学号学号”“”“获得班级获得班级”“”“获获得姓名得姓名”“”“获得年龄获得年龄”、“修改年龄修改年龄”。(3)方法重载()方法重载(method

18、Overloading)所谓方法重载就是在一个类中可以有多个方所谓方法重载就是在一个类中可以有多个方法具有相同的名字,但这些方法的参数必须不法具有相同的名字,但这些方法的参数必须不同,或者是个数或者是类型。同,或者是个数或者是类型。注意:不可以以方法的返回值为基础构成重注意:不可以以方法的返回值为基础构成重载方法载方法 n方法的重载(overload)q方法名相同,但方法的参数不同方法描述 方法名(标识符)参数类型 方法返回值 绝对值 abs(a)int int绝对值 abs(a)long long绝对值 abs(a)float float绝对值 abs(a)double double pub

19、lic static int abs(int a)public static long abs(long a)public static float abs(float a)public static double abs(double a)class Calculation void add(int a,int b)int c;c=a+b;System.out.println(c);/int add(int a,int b)return(a+b);float add(float a,float b)float c=a+b;return c;void add(String a,String b

20、)String c=a+b;System.out.println(c);public static void main(String args)Calculation c=new Calculation();c.add(12,12);c.add(“good”,”morning”);float x=c.add(5f,3f);/float x=c.add(5,3);出错出错 System.out.println(“x=”+x);作业:n利用重载的方法利用重载的方法square计算一个整型数和一个计算一个整型数和一个双精度数的平方。双精度数的平方。(4)构造方法构造方法n构造方法名构造方法名与类名相

21、同与类名相同;n构造方法构造方法没有返回类型没有返回类型,也不是,也不是void;n构造方法的主要作用是对构造方法的主要作用是对成员变量的初始化成员变量的初始化。如果没有定义构造方法时,各种类型的默认值;如果没有定义构造方法时,各种类型的默认值;n构造方法不能由编程人员显式地直接调用,在构造方法不能由编程人员显式地直接调用,在创建某个类的对象时,设置的构造方法将创建某个类的对象时,设置的构造方法将自行自行调用调用。n使用不同数量、不同类型的参数对类初始化会使用不同数量、不同类型的参数对类初始化会拥有多个构造方法;拥有多个构造方法;Java实例例3.5class Number private i

22、nt n;Number(int m)n=m;void setNumber(int i)n=i;int getNuber()return n;boolean isEven()if(n%2=0)return ture;else return false;class Class1 public static void main(Sting args)Number n=new Number(10);boolean b=n.isEven();System.out.println(n.getNumber()+”is Even:”+b);(5)重载构造方法(重载构造方法(Overloaded Constru

23、ctor)nclass Stu n static int count=0;/计数器,类变量计数器,类变量n int id;/成员变量成员变量n String name;/成员变量成员变量n Stu(String n)n id=+count;n name=n;n nStu(int i,String n)n id=i;n name=n;n n String getName()return name;n int getId()return id;n n class Main()n public static void main(String args)n Stu lily=new Stu(“lily”);n Stu maga=new Stu(1001,”maga”);n System.out.println(“student id:”+lily.getId()+”,name:”+lily.getName();n System.out.println(“student id:”+maga.getId()+”,name:”+maga.getName();n

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 办公、行业 > 各类PPT课件(模板)
版权提示 | 免责声明

1,本文(JAVA面向对象编程(31)课件.ppt)为本站会员(晟晟文业)主动上传,163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。
2,用户下载本文档,所消耗的文币(积分)将全额增加到上传者的账号。
3, 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(发送邮件至3464097650@qq.com或直接QQ联系客服),我们立即给予删除!


侵权处理QQ:3464097650--上传资料QQ:3464097650

【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。


163文库-Www.163Wenku.Com |网站地图|