《编写问题域类》PPT课件.ppt_第1页
《编写问题域类》PPT课件.ppt_第2页
《编写问题域类》PPT课件.ppt_第3页
《编写问题域类》PPT课件.ppt_第4页
《编写问题域类》PPT课件.ppt_第5页
已阅读5页,还剩52页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

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 定义问题域类,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 定义问题域类,编写toString方法,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表示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.text包导入: 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 )是指在一个类中可以定义多个方法,它们具有相同的方法名及不同的参数表。 构造方法可以重载,自定义方法也可以重载。,30,8.5 重载方法,重载构造方法 增加具有两个参数的构造方法,31,8.5 重载方法,重载构造方法 测试程序,32,8.5 重载方法,重载自定义方法 在特殊情况下,书店在中午吃饭时间不营业。 下面编写storeHours方法的第二个版本:接收不营业时间值。,33,8.5 重载方法,重载自定义方法 测试程序,34,8.6 异常及其处理,异常的概念 异常(Exception)是特殊的运行错误对象,又称为例外。 所谓错误,是在程序运行过程中发生的异常事件,比如除0溢出、数组越界、文件找不到等。 为了提高程序的健壮性,程序设计时,必须考虑到可能发生的异常事件,并做出相应的处理。,35,8.6 异常及其处理,异常的概念 可以将程序中的错误分为三种类型,即编译错误、运行错误及逻辑错误。 编译错误是编译器能够检测到的错误,一般为语法错误; 运行错误是运行时产生的错误,如被零除、数组下标越界等; 逻辑错误是机器本身无法检测的,需要对程序逻辑及运行结果进行人工分析。,36,8.6 异常及其处理,异常的概念 Java系统中根据错误的严重程度不同,将错误分为两类: 错误:是致命性的,即程序遇到了非常严重的不正常状态,不能简单地恢复执行。 异常:是非致命性的,通过某种修正后,程序还能继续执行。,37,8.6 异常及其处理,异常类和错误类的层次结构 所有的包中都声明了异常类和错误类; Exception类是所有异常类的父类; Error类是所有错误类的父类; 这两个类同时又是Throwable的子类。,38,8.6 异常及其处理,异常类和错误类的层次结构,非检查型异常,39,8.6 异常及其处理,编译器对继承自RuntimeException的异常不做检查。 Java类必须在方法签名中声明它们所抛出的任何检查型异常。 对于任何方法,如果它调用的方法抛出一个类型为E的检查型异常,那么调用者就必须捕获E或者也声明抛出E(或者E的一个父类),对此编译器要进行检查。,40,8.6 异常及其处理,Java预定义了一些常见异常: ArithmeticException NullPointerException ArrayIndexOutOfBoundsException FileNotFoundException IOException,41,8.6 异常及其处理,异常处理 对于检查型异常,Java强迫程序必须进行处理。 处理方法有两种:声明抛出异常,捕获异常。,42,8.6 异常及其处理,声明抛出异常 如果程序员不想在当前方法内处理异常,可以使用throws子句声明将异常抛出到调用方法中。,43,8.6 异常及其处理,声明抛出异常 一个 throws 子句也可以声明抛出多个异常。,44,8.6 异常及其处理,声明抛出异常 调用程序也可以将异常再抛给它的调用程序。,45,8.6 异常及其处理,声明抛出异常 如果所有的方法都选择了抛出此异常,最后Java虚拟机( JVM)将捕获它,输出相关的错误信息。 在异常被抛出的过程中, 任何方法都可以捕获异常并进行相应的处理。,46,8.6 异常及其处理,捕获异常 使用try语句括住可能抛出异常的代码段,用catch语句指明要捕获的异常及相应的处理代码。,47,8.6 异常及其处理,捕获异常 Finally块的作用通常用于释放资源,Finally不是必须的部分,如果有finally部分,不论是否捕获到异常,总要执行finally后面的语句。 在有多个异常需要捕获时,异常类型的顺序很重要,特殊的异常类型要放在前面,一般的异常类型要放在后面。,48,8.6 异常及其处理,捕获异常 在 catch 块的内部, 可用下面的方法处理异常对象: getMessage() 返回一个字符串,对发生的异常进行描述。 printStackTrace() 给出方法的调用序列,一直到异常的产生位置。,49,8.6 异常及其处理,生成异常对象 在Java程序中,通过throw语句生成异常对象,例如: throw new ThrowableObject(); ArithmeticException e = new ArithmeticException(); throw e;,50,8.6 异常及其处理,生成异常对象 编写TrowTester类对throw语句进行测试。,51,8.6 异常及其处理,telephone的数据验证 假设书店的座机号码位数不会超过20,则需要在电话的set方法中验证传递给它的值长度是否在120范围内。 如果某方法准备创建和抛出异常,其头必须包含关键字throws。,52,8.6 异常及其处理,telephone的数据验证 扩展后的setTelephone()方法头为: public void setTelephone (String telephone) throws Exception 然后在此方法中检查接收到的参数值是否在合理的范围内,如果超出了范围,则对Exception进行实例化,并将其抛出。,53,8.6 异常及其处理,telephone的数据验证 修改后的setTelephone()方法:,54,8.6 异常及其处理,telephone的数据验证 由于在构造方法中调用了setTelephone方法,因此,需要对构造方法进行修改如下:,55,8.6 异常及其处理,telephone的数据验证 异常捕获测试代码,56,本章小结,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论