第8章编写问题域类.ppt

上传人:本田雅阁 文档编号:3435749 上传时间:2019-08-25 格式:PPT 页数:57 大小:536.54KB
返回 下载 相关 举报
第8章编写问题域类.ppt_第1页
第1页 / 共57页
第8章编写问题域类.ppt_第2页
第2页 / 共57页
第8章编写问题域类.ppt_第3页
第3页 / 共57页
第8章编写问题域类.ppt_第4页
第4页 / 共57页
第8章编写问题域类.ppt_第5页
第5页 / 共57页
点击查看更多>>
资源描述

《第8章编写问题域类.ppt》由会员分享,可在线阅读,更多相关《第8章编写问题域类.ppt(57页珍藏版)》请在三一文库上搜索。

1、1,第8章 编写问题域类,定义问题域类 使用静态变量和静态方法 编写自定义方法 格式化输出 重载方法 异常及其处理,2,8.1 定义问题域类,本节定义校内书店管理系统的问题域类Book类和BookStore类; 编写单独的类对问题域类进行测试。,3,8.1 定义问题域类,定义Book类(1),4,8.1 定义问题域类,定义Book类(2),5,8.1 定义问题域类,定义Book类(3),6,8.1 定义问题域类,测试Book类 可以编写一个名为TesterOne的测试类来模拟客户程序发送消息,以调用Book类定义中的方法。 测试类TesterOne仅有一个主方法main。,7,8.1 定义问题

2、域类,TesterOne,8,8.1 定义问题域类,TesterOne,9,8.1 定义问题域类,顺序图,10,8.1 定义问题域类,编写构造方法 对于每个类,系统都提供默认的构造方法,除此之外,程序员还可以自定义构造方法。 但只要程序员定义了有参的构造方法,系统就不再提供默认的构造方法了。 因此,在这种情况下,默认的构造方法也需要明确定义。,11,8.1 定义问题域类,编写构造方法 默认的构造方法 public Book() ,12,8.1 定义问题域类,编写构造方法 自定义构造方法,13,8.1 定义问题域类,编写TesterTwo类对构造方法进行测试,14,8.1 定义问题域类,编写to

3、String方法,15,8.1 定义问题域类,编写TesterThree类对toString方法进行测试,16,8.1 定义问题域类,定义BookStore类,17,8.1 定义问题域类,定义BookStore类,18,8.1 定义问题域类,定义BookStore类,19,8.1 定义问题域类,测试BookStore类,20,8.2 使用静态变量和静态方法,静态变量即类变量,静态方法即类方法。 使用static关键字定义类变量和类方法。,21,8.2 使用静态变量和静态方法,静态变量 在BookStore类中加入静态变量open和close来表示书店营业开始时间、结束时间,单位为小时(9.5表

4、示9点30分)。,22,8.2 使用静态变量和静态方法,静态变量 编写get方法返回open和close的值。,23,8.2 使用静态变量和静态方法,编写测试类TesterFive,24,8.3 编写自定义方法,增加自定义方法storeHours(),25,8.3 编写自定义方法,编写测试类TesterSix,26,8.4 格式化输出,使用java.text包中的DecimalFormat类进行格式化输出。 DecimalFormat类对带有逗号和小数点、但未带有时间单位的数字进行格式化。,27,8.4 格式化输出,在使用DecimalFormat类之前,需要使用import语句将java.t

5、ext包导入: import java.text.*; 当需要对多个数据进行格式化时,可以首先生成DecimalFormat类的实例,再使用format方法,具体如下: DecimalFormat df = new DecimalFormat(“0.0小时”); df.format(12.8);,28,8.4 格式化输出,DecimalFormat测试程序,29,8.5 重载方法,方法签名(method signature)包括方法名及参数表,Java通过签名来识别方法。 重载方法(overloaded method )是指在一个类中可以定义多个方法,它们具有相同的方法名及不同的参数表。 构造

6、方法可以重载,自定义方法也可以重载。,30,8.5 重载方法,重载构造方法 增加具有两个参数的构造方法,31,8.5 重载方法,重载构造方法 测试程序,32,8.5 重载方法,重载自定义方法 在特殊情况下,书店在中午吃饭时间不营业。 下面编写storeHours方法的第二个版本:接收不营业时间值。,33,8.5 重载方法,重载自定义方法 测试程序,34,8.6 异常及其处理,异常的概念 异常(Exception)是特殊的运行错误对象,又称为例外。 所谓错误,是在程序运行过程中发生的异常事件,比如除0溢出、数组越界、文件找不到等。 为了提高程序的健壮性,程序设计时,必须考虑到可能发生的异常事件,

7、并做出相应的处理。,35,8.6 异常及其处理,异常的概念 可以将程序中的错误分为三种类型,即编译错误、运行错误及逻辑错误。 编译错误是编译器能够检测到的错误,一般为语法错误; 运行错误是运行时产生的错误,如被零除、数组下标越界等; 逻辑错误是机器本身无法检测的,需要对程序逻辑及运行结果进行人工分析。,36,8.6 异常及其处理,异常的概念 Java系统中根据错误的严重程度不同,将错误分为两类: 错误:是致命性的,即程序遇到了非常严重的不正常状态,不能简单地恢复执行。 异常:是非致命性的,通过某种修正后,程序还能继续执行。,37,8.6 异常及其处理,异常类和错误类的层次结构 所有的包中都声明

8、了异常类和错误类; Exception类是所有异常类的父类; Error类是所有错误类的父类; 这两个类同时又是Throwable的子类。,38,8.6 异常及其处理,异常类和错误类的层次结构,非检查型异常,39,8.6 异常及其处理,编译器对继承自RuntimeException的异常不做检查。 Java类必须在方法签名中声明它们所抛出的任何检查型异常。 对于任何方法,如果它调用的方法抛出一个类型为E的检查型异常,那么调用者就必须捕获E或者也声明抛出E(或者E的一个父类),对此编译器要进行检查。,40,8.6 异常及其处理,Java预定义了一些常见异常: ArithmeticExceptio

9、n NullPointerException ArrayIndexOutOfBoundsException FileNotFoundException IOException,41,8.6 异常及其处理,异常处理 对于检查型异常,Java强迫程序必须进行处理。 处理方法有两种:声明抛出异常,捕获异常。,42,8.6 异常及其处理,声明抛出异常 如果程序员不想在当前方法内处理异常,可以使用throws子句声明将异常抛出到调用方法中。,43,8.6 异常及其处理,声明抛出异常 一个 throws 子句也可以声明抛出多个异常。,44,8.6 异常及其处理,声明抛出异常 调用程序也可以将异常再抛给它的

10、调用程序。,45,8.6 异常及其处理,声明抛出异常 如果所有的方法都选择了抛出此异常,最后Java虚拟机( JVM)将捕获它,输出相关的错误信息。 在异常被抛出的过程中, 任何方法都可以捕获异常并进行相应的处理。,46,8.6 异常及其处理,捕获异常 使用try语句括住可能抛出异常的代码段,用catch语句指明要捕获的异常及相应的处理代码。,47,8.6 异常及其处理,捕获异常 Finally块的作用通常用于释放资源,Finally不是必须的部分,如果有finally部分,不论是否捕获到异常,总要执行finally后面的语句。 在有多个异常需要捕获时,异常类型的顺序很重要,特殊的异常类型要放

11、在前面,一般的异常类型要放在后面。,48,8.6 异常及其处理,捕获异常 在 catch 块的内部, 可用下面的方法处理异常对象: getMessage() 返回一个字符串,对发生的异常进行描述。 printStackTrace() 给出方法的调用序列,一直到异常的产生位置。,49,8.6 异常及其处理,生成异常对象 在Java程序中,通过throw语句生成异常对象,例如: throw new ThrowableObject(); ArithmeticException e = new ArithmeticException(); throw e;,50,8.6 异常及其处理,生成异常对象 编

12、写TrowTester类对throw语句进行测试。,51,8.6 异常及其处理,telephone的数据验证 假设书店的座机号码位数不会超过20,则需要在电话的set方法中验证传递给它的值长度是否在120范围内。 如果某方法准备创建和抛出异常,其头必须包含关键字throws。,52,8.6 异常及其处理,telephone的数据验证 扩展后的setTelephone()方法头为: public void setTelephone (String telephone) throws Exception 然后在此方法中检查接收到的参数值是否在合理的范围内,如果超出了范围,则对Exception进行

13、实例化,并将其抛出。,53,8.6 异常及其处理,telephone的数据验证 修改后的setTelephone()方法:,54,8.6 异常及其处理,telephone的数据验证 由于在构造方法中调用了setTelephone方法,因此,需要对构造方法进行修改如下:,55,8.6 异常及其处理,telephone的数据验证 异常捕获测试代码,56,本章小结,本章对书店管理系统中的问题域类进行了定义及测试。 问题域(PD)类代表要在系统中表示的真实对象,应为每个PD类编写问题域类定义。 方法签名由方法名和参数表组成。Java通过方法签名而不是通过方法名来标识方法。 同一个类中参数表不同的同名方法称为重载方法。 Java中引入了异常类来处理程序运行过程中可能发生的错误。异常类是Throwable类或其子类,异常则是异常类的实例。,57,Thanks!,

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

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1