收藏 分销(赏)

项目3-应用类的特性设计图形参数计算程序.ppt

上传人:快乐****生活 文档编号:9645168 上传时间:2025-04-02 格式:PPT 页数:64 大小:682KB 下载积分:14 金币
下载 相关 举报
项目3-应用类的特性设计图形参数计算程序.ppt_第1页
第1页 / 共64页
项目3-应用类的特性设计图形参数计算程序.ppt_第2页
第2页 / 共64页


点击查看更多>>
资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,项目3 应用类的特性设计图形参数计算程序,古凌岚 张婵 罗佳,人民邮电出版社,Java系统化项目开发教程,知识要点,类的特性,类的成员及其用法,包的概念,编写Java类的语法,类的抽象性、封装性、继承性和多态性的应用方法,特殊关键字this、super、class、static、final、abstract,引子,如何利用Java编写基于面向对象思想的程序?,Java是,基于,面向对象,思想的,程序设计语言,Java,是,以对象为模型来描述世界,Java,是,通过定义类、创建对象、处理对象,以及对象间消息传递,实现程序功能,3.1先导任务三:编写显示图形参数的程序,问题分析,要求,实现图形名称、周长和面积显示的功能,需要进一步了解类的,相关概念,Java类的构成和编写方法,3.1先导任务三:编写显示图形参数的程序,类的抽象与封装,抽象是指从相同类型的多个事物中,抽取本质且共性的状态和行为的方法,利用,抽象方法,,可以得到,对具有相同或相似状态和行为的一组对象的共同描述,(即类),也,就,是,可以识别问题域中事物的状态和行为,封装是指将描述对象的数据(即状态)和对数据的操作,或者说类的属性和方法,聚集在一起形成一个完整逻辑单元的机制,只允许被可信的类或者对象操作,否则将隐藏信息,3.1先导任务三:编写显示图形参数的程序,Java类的定义,class 类名,/构造方法,/多个属性或无属性,/多个方法或无方法,属性声明方式:数据类型 属性名;,方法声明方式:访问限制符 返回值类型 方法名(参数数据类型1 参数名1,参数数据类型2 参数名2,.),3.1先导任务三:编写显示图形参数的程序,定义一个Java类的示例,3.1先导任务三:编写显示图形参数的程序,对象的生命周期有三个阶段:生成、使用和消除,对象的生成:声明、实例化和初始化,。,表述格式,为:,type objectName=new type(paramlist);,type:引用类型(包括类和接口);,type objectName:声明,为type分配一个引用空间,以存放引用变量objectName;,new type:实例化,在堆空间创建一个type类对象;,(paramlist):初始化,在对象创建后,立即调用type类的构造方法,对刚生成的对象进行初始化;,=:使引用变量objectName指向刚创建的那个type类对象,3.1先导任务三:编写显示图形参数的程序,对象生成表述示例:,Position p=new Position();,上述语句对应的创建对象的过程和内存分配图示,3.1先导任务三:编写显示图形参数的程序,创建对象的示例代码,3.1先导任务三:编写显示图形参数的程序,对象的使用,调用对象的方法:对象名.方法名(参数1值,参数2值),调用对象的属性:对象名.属性名,对象的清除,当不存在对一个对象的引用时,该对象成为一个无用对象,Java,提供,垃圾收,机制,垃圾收集器,自动扫描对象的动态内存区,把没有引用的对象作为垃圾收集起来并释放,3.1先导任务三:编写显示图形参数的程序,类的成员,成员变量,:类的,属性,称为成员变量,类变量,:即静态变量,为类所有,类的所有实例共享,实例变量,:当类每实例化一个对象,该对象将会持有实例变量的一个副本,各实例间互不影响,成员变量定义示例,3.1先导任务三:编写显示图形参数的程序,方法,其,声明方式为:,访问限制符 返回值类型 方法名(参数类型1 参数名1,参数类型2 参数名2,.),包括,构造方法和成员方法,构造方法:用于对象的初始化,即为类的实例变量赋初始值,可带参数或不带参数,但方法名与类名相同,且不可有返回类型,成员方法:用于描述类的行为特征的,类的成员方法可以有一个或多个,方法体内是对于类行为的具体描述,可以带参数或不带参数,且必须有返回值类型,3.1先导任务三:编写显示图形参数的程序,成员方法和构造方法应用示例,3.1先导任务三:编写显示图形参数的程序,构造代码块和静态代码块,构造代码块,如果类存在多个构造方法时,可将其中共性的部分写入构造代码块,3.1先导任务三:编写显示图形参数的程序,构造代码块应用示例,3.1先导任务三:编写显示图形参数的程序,静态代码块,:,静态代码块,将,会在JVM加载类时、类实例化之前被执行,且仅执行一次,。它是,类中独立于类成员的static语句块,可以有一个或多个,位置也可以随便放,但不能在任何方法体内,静态代码块应用示例,3.1先导任务三:编写显示图形参数的程序,包,包(Package)是一种组织方式,它以树形目录结构来组织API中的类/接口集合,作用:管理类和接口;区别名字相同的类,不同包中可以有同名的类;,更好地实现访问权限控制,使用方法:,用import关键字来标明,需导入的包,如:,import java.lang.System;,3.1先导任务三:编写显示图形参数的程序,编写Java程序,Java程序的构成,:,一个主类,+,多个非主类,但,必须有且仅,有一个主类,public class 主类类名,/构造方法,/多个属性或无属性,/多个方法或无方法,/main方法且必须有,3.1先导任务三:编写显示图形参数的程序,以WelcomeDemo程序为例,了解Java程序创建步骤:,编写代码:,利用编辑器(如记事本),输入代码,保存成后缀为.java的文件,编译,在该文件所在目录下输入命令:,javac WelcomeDemo.java,按回车键,编译通过后,将自动生成类文件WelcomeDemo.class。,解释运行,同样在文件所在目录下,输入命令行:,java WelcomeDemo,3.1先导任务三:编写显示图形参数的程序,源代码和执行结果:,3.1先导任务三:编写显示图形参数的程序,同步练习,定义一个数字类ExpNumber,能够显示数字的值。,3.1先导任务三:编写显示图形参数的程序,任务实施,设计一个类,实现图形名称、周长和面积的显示功能,该类包括图形名称、周长和面积属性、一个构造方法和一个显示图形参数的方法,利用编辑器(如记事本),输入源代码,保存为GraphBase.java,在DOS命令行中,输入命令”,javac GraphBase.java,“,进行编译,在DOS命令行中,输入命令”,java GraphBase,“,解释执行,程序,3.1先导任务三:编写显示图形参数的程序,完整源代码:,3.1先导任务三:编写显示图形参数的程序,同步练习,扩展数字类ExpNumber,能够比较两个整数是否相等,知识延伸,代码编写规范,标识符规范,:所有的标识符,如类名、属性名等,都是由大/小写字母、数字0-9,以及下划线“_”、“$”符号组成,但不能以数字开头,并遵循驼峰式命名法则,注释规范:注释尽可能使用“/”;程序开头的注释则使用“/*”,缩进排版规范:采用缩进排版,方法间以空行隔开,文件名规范:文件名与主类名同,声明规范:一行声明一个变量,变量声明时要初始化,语句规范:每行至少包含一条简单语句,代码块内每条语句占一行,知识延伸,编程规范,:尽可能使用public或private,限制类及类成员;使用“类名.变量”或“类名.方法”访问静态变量;对于固定不变的值,定义为静态常量/常量;对于多路分支,用switch语句实现;更新数据库表中数据时,应使用java.sql.PreparedStatement类实现;操作对象时,修改其状态的方法名前缀为set,获取其状态的方法名前缀为get,判断其状态的方法名前缀为is,3.2先导任务四:编写三角形参数计算程序,问题分析,需求是,能够计算三角形的周长和面积参数,并能显示图形参数,本问题与先导任务三有一定关系,后者是对于“图形名称”、“周长”和“面积”的显示操作,而前者是对于“周长”和“面积”属性的计算操作,可利用类的继承特性来实现,因此,需要学习类的继承,以及相关的访问限制符知识,3.2先导任务四:编写三角形参数计算程序,类的继承,是指在现有类(父类)的基础上,扩展其功能形成新的类(子类),一个父类可以有多个子类,所有子类都具有父类的公共特性,子类只要定义除了公共特性之外的、子类所特有的特性,。很好地支持了代码的重用性,Java中利用,extends关键字来实现类的继承,,但,不支持多重继承,3.2先导任务四:编写三角形参数计算程序,以,书包括电子版和印刷版两类,为例,定义父类和子类,3.2先导任务四:编写三角形参数计算程序,同步练习,以ExpNumber类为父类(该类具有数字显示、比较两数是否相等的功能),定义子类整数类ExpInteger,使之具有加法运算功能,3.2先导任务四:编写三角形参数计算程序,访问控制符,是一组限定类、域或方法是否可以被程序里的其他部分访问和调用的修饰符,访问控制符是类的封装性的体现,四种,访问控制权限,公有的(public),受保护的(protected),默认的(缺省访问控制符),私有的(private),3.2先导任务四:编写三角形参数计算程序,访问控制符,类B,类C,类D,类E,x声明为public,可访问,可访问,可访问,可访问,x声明为protected,可访问,可访问,可访问,不可访问,x声明为缺省访问控制符,可访问,不可访问,可访问,不可访问,x声明为private,不可访问,不可访问,不可访问,不可访问,类A中的x的访问修饰符,变化时,对于其它类的影响,3.2先导任务四:编写三角形参数计算程序,访问控制符,应用示例,3.2先导任务四:编写三角形参数计算程序,同步练习,扩展ExpInteger类,增加两个私有属性,并通过getXX/setXX方法,为其他类提供访问接口。,3.2先导任务四:编写三角形参数计算程序,包的划分,作用:,项目的组织与管理、避免命名的冲突,划分包的基本规则,项目所属组织名(企业或单位域名)的逆序形式+项目名+模块名,例如:,某大学()图书管理系统,包括用户模块(user)、图书模块(book)、借书模块(borrowing)和还书模块(returning),,按照三层架构(数据层dao、逻辑层bussiness、表示层ui)分层,,则包划分为:,cn.edu.univ.user.dao、cn.edu.univ.user.bussiness、cn.edu.univ.user.ui,cn.edu.univ.book.dao、cn.edu.univ.book.bussiness、.,.,3.2先导任务四:编写三角形参数计算程序,任务实施,类的设计和编写,以GraphBase为父类(已定义了名称、周长和面积属性,以及显示方法),构造派生类Triangle,根据三角形图形特点,定义三条边及高四个属性;,定义计算周长和计算面积方法。,完整源码,3.2先导任务四:编写三角形参数计算程序,3.2先导任务四:编写三角形参数计算程序,3.2先导任务四:编写三角形参数计算程序,项目的构建和编译,类GraphBase、Triangle和GraphApp,的,包路径,为,com.example.base,,若类源码原保存于,d:,执行DOS命令,进行编译,d:,javac -d .GraphBase.java,d:,javac -d .Triangle.java,d:,javac -d .GraphApp.java,执行DOS命令,解释执行代码,java com.example.base.GraphApp,知识延伸:this、super关键字和Class对象,this,:指向当前对象,且仅有应用于方法体内,this调用本类的成员变量;,this调用本类的方法;,this调用本类中的其他构造方法,调用时要放在构造方法的首行;,返回类的调用。,知识延伸:this、super关键字和Class对象,第一种用法示例,第三种用法示例,第四种用法示例,知识延伸:this、super关键字和Class对象,super,作用类似于,this,,但是指向当前对象的父类对象(前提是当前类为子类),知识延伸:this、super关键字和Class对象,this和super应用示例,知识延伸:this、super关键字和Class对象,Class,JVM为每种类型管理一个独一无二的Class对象。,即,,每个类(型)都有一个Class对象,它是java.lang.Class类的实例。,Class对象有三种创建方式:,类的class属性【类名.class】,Object的getClass方法【实例对象.getClass()】,类的全路径【Class.forName(类名字符串)】,知识延伸:this、super关键字和Class对象,Class应用示例,3.2先导任务四:编写三角形参数计算程序,同步练习,扩展ExpInteger类,增加对两个整数的相减、相除和相乘运算功能。,3.3先导任务五:编写四边形参数计算程序,问题分析,需求是,能够计算四边形的周长和面积参数,并能显示图形参数,与先导任务四类似,可以利用对象的继承来实现,四边形,又细分几类,且,面积计算要求的参数和公式不同,,同时参数也不同,,,需要,利用类的多态特性,3.3先导任务五:编写四边形参数计算程序,类的多态,是指允许将子类对象的引用赋值给父类引用变量,Java中的多态性体现,为:,编译时,的,静态多态,方法重载,运行时,的,动态多态,方法重写,方法的重载:如果一个类中定义了多个同名的方法,它们或有不同的参数个数或有不同的参数类型,但和返回值无关,称为方法的重载(Overloading),方法的重写:如果在子类中定义了某方法,且其父类已具有相同的方法名称和参数,我们说该方法被重写(Overriding),3.3先导任务五:编写四边形参数计算程序,编译时多态,方法重载,3.3先导任务五:编写四边形参数计算程序,运行时多态,方法重写,3.3先导任务五:编写四边形参数计算程序,任务实施,将四边形再细分,为,矩形(正方形)和梯形/平行四边形,类的定义包括:四个边属性,计算周长方法,以及针对不同类型四边形的面积计算方法,3.3先导任务五:编写四边形参数计算程序,完整源码,3.3先导任务五:编写四边形参数计算程序,3.3先导任务五:编写四边形参数计算程序,同步练习,编写一个椭圆和圆形参数计算程序。,同步练习,以ExpNumber类为父类,定义子类ExpNumberCalculation,实现两个整型或浮点型数的相加、相减、相除和相乘运算功能,代替ExpInteger类。,3.4先导任务六:编写具有可扩展性的图形参数计算程序,问题分析,需求是,编写图形参数计算程序,且可很方便地衍生出新类型图形的参数计算程序,希望能够构建一种图形参数计算的模型,程序员可以方便地扩展功能,满足更多类型图形的参数计算要求,利用类的抽象性来解决当前问题,而,Java中所提供的抽象类和接口正是高度抽象性的体现,3.4先导任务六:编写具有可扩展性的图形参数计算程序,抽象类和接口,抽象类,往往用来表征对问题领域进行分析、设计中得出的抽象概念,是对一系列看上去不同,但是本质上相同的具体概念的抽象,抽象类的使用规则,抽象类中可以有抽象方法,也可以没有,但包含抽象方法的类一定是抽象类;,抽象方法的表述方法:public abstract 方法名(参数列表);,不可直接对抽象类进行实例化,但可以通过声明抽象类,并将引用指向子类的实例来使用;,抽象类可以被子类继承,但子类必须实现抽象类中的抽象方法;,抽象类中不可以定义抽象构造方法和抽象静态方法。,3.4先导任务六:编写具有可扩展性的图形参数计算程序,抽象类的使用示例,3.4先导任务六:编写具有可扩展性的图形参数计算程序,接口,接口(interface)是一个特殊的抽象类,它是由静态常量和抽象方法构成,用于实现Java中的多重继承,接口使用interface关键字声明,接口的访问控制符为public或缺省,,对应地访问范围是所有类或是包内类,3.4先导任务六:编写具有可扩展性的图形参数计算程序,接口应用示例,抽象类和接口的区别,3.4先导任务六:编写具有可扩展性的图形参数计算程序,方面,抽象类,接口,作用,作为公共父类为子类的扩展提供基础,这里的扩展包括了属性上和方法上的,一般不考虑属性,只考虑方法,使得子类可以自由地填补或者扩展接口所定义的方法,结构,抽象方法,变量,具体方法(默认方法),抽象方法,静态常量,使用,不可实例化,但可声明,可通过子类继承,实现其中的抽象方法,通过类实现,且必须实现接口中的所有方法,不可实例化,但可声明,继承方法,子类可以继承一个抽象类,实现类可以实现多个接口,一个接口可以继承多个接口,3.4先导任务六:编写具有可扩展性的图形参数计算程序,非访问限制符abstract、static和final,abstract,用abstract修饰的类称为抽象类,用abstract修饰的方法称为抽象方法,static,用,static,修饰的成员变量、成员方法和代码块,被称为静态成员变量、静态方法和静态代码块,final,final类:不能被继承,final方法:不能被子类的方法覆盖,但可以被继承,final变量:分为静态变量、实例变量和局部变量,3.4先导任务六:编写具有可扩展性的图形参数计算程序,任务实施,分析先导任务三、四和五,图形的名称、周长和面积属性是共同的,周长和面积计算方法也是共同的,但计算过程不同,采用抽象类或接口来实现,源码参见教材,3.4先导任务六:编写具有可扩展性的图形参数计算程序,同步练习,定义数字接口类INumber,包括数字显示、比较相等方法,数字计算类ExpNumberCalculation通过实现该接口,能够进行整型、浮点数的显示,两个整型、浮点数的相等比较,并各自具有加、减、乘和除运算功能。,
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服