java接口异常实例.ppt_第1页
java接口异常实例.ppt_第2页
java接口异常实例.ppt_第3页
java接口异常实例.ppt_第4页
java接口异常实例.ppt_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

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

文档简介

1,java接口、异常 与实例分析,计算机学院通信软件工程中心 张艳梅 ,2,本章主要内容:,1、我什么时候要用接口? 2、java如何控制异常? 3、Pong游戏设计分析,3,3,保险公司的例子 具有车辆保险、人员保险、公司保险等多种保险业务,各种业务的保险对象不同,但在对外提供服务方面具有相似性,如都需要计算保险费(premium)等,因此可声明一个Insurable 接口,并使不同的类实现这个接口 在UML图中,实现接口用带有空三角形的虚线表示,1. 接口的作用-例1,4,4,声明一个接口Shape2D,可利用它来实现二维的几何形状类Circle和Rectangle 把计算面积的方法声明在接口里 pi值是常量,把它声明在接口的数据成员里 interface Shape2D /声明Shape2D接口 final double pi=3.14; /数据成员一定要初始化 public abstract double area(); /抽象方法 ,1. 接口的作用-例2,5,5,1. 接口的作用-不相关类的公共接口,接口的作用 实现多继承,同时免除C+中的多继承那样的复杂性 建立类和类之间的“协议”契约关系 实现不同类之间的公共操作(具体实现不同,但性质相同) 实现不同类之间的常量共享,6,6,1. 使用接口:共享方法名和常量,class Circle implements Shape2D double radius; public Circle(double r) radius=r; public double area() return (pi * radius * radius); ,class Rectangle implements Shape2D int width,height; public Rectangle(int w,int h) width=w; height=h; public double area() return (width * height); ,声明Circle与Rectangle两个类实现Shape2D接口,7,7,MovableObject接口定义了所有“可移动对象”能做的事情 public interface MovableObject public boolean start(); public void stop(); public boolean turn(int degrees); public double fuelRemaining(); public void changeSpeed(double kmPerHour); ,1. 使用接口-仅仅超类?,8,8,Plane、Car、 Train、 Boat 分别实现 MovableObject 接口 public class Plane implements MovableObject public int seatCapacity; public Company owner; public Date lastRepairDate; /实现MovalbelObject接口的所有方法 public boolean start() /启动飞机,成功则返回true public void stop() /停止 public boolean turn(int degrees) /转向,成功则返回true public double fuelRemaining() /返回燃料剩余量 public void changeSpeed(double kmPerHour) /改变速度 /plane类自己的方法: public Date getLastRepairDate() /. public double calculateWindResistance() / ,1. 使用接口-统一公共接口,9,9,为 MovableObjects安装遥控器(remote control) public class RemoteControl private MovableObject machine; RemoteControl(MovableObject m) machine = m; /按下“启动”按钮: public void start() boolean okay = machine.start(); if (!okay) display(“No Response on start“); /. remoteControl 构造方法的形参类型为 MovableObject,它可以是Plane, Car, Train, Boat, 等等,1. 使用接口-不受限的拼装对象,Plane aPlane = new Plane(); RemoteControl control=new RemoteControl(aPlane); control.start();,10,10,1. 我什么时候要用接口?,可以用上java类库接口时,请尽量使用 java第三方接口,合用则用 自己设计接口, 实现不同类之间的公共操作(具体实现不同,但性质相同) 为某种特性的对象留出扩展空间(可以拼装以后开发的任意对象),11,2、面对程序的异常,谁能保证提供足够彻底的错误检验代码?,用传统语言编程时,程序员只能通过函数的返回值来发出错误信息,从而使错误数值传播遍及整个程序。,java!抛出异常,java有专门的异常处理函数,采用传统途径处理错误时,处理错误的代码直接建立在算法中,使常规执行流程不再清晰可见.,12,2、java异常处理的思想(打棒球),掷出异常象产生一个java对象一样产生一个异常对象,停止程序正常执行。 捕获异常异常处理机制根据异常信息寻找异常处理函数,进行错误处理。,13,2、java的异常体系,Object,java.lang,java.io,Throwable,数组索引值小于0或大于数组长度,被0除或其他数学问题,RuntimeException,Exception,IOException,,安全异常,用不恰当的参数调用,数组或字符串的索引值越界,引用没有实例化的对象,使用非法的数组格式,String索引值小于0或大于其长度,数组存储问题,异常类一般放在掷出这些异常的包中,不可控异常,可控异常,一个包含可能掷出可控异常的表达式的方法, 必须处理或者声明这个异常, 否则编译器就会产生语法错误。,14,2、java如何处理程序的异常?,程序设计的一个重要要素就是健壮性和安全性。 java默认的异常处理 JVM将捕获没有被程序自身捕获的任何不可控异常。 对你自己的练习程序或者尚在调试阶段的软件来说,最好的设计也许只是使用java的默认异常处理。 商业软件不能由用户来修复错误,应该包含针对可能出现的真正异常情况的异常处理程序。,15,2、java的默认异常处理,public class CalcAverage public double avgFirstN(int N) int sum=0; for (int k=1;k=N;k+) sum += k; return sum/N; /avgFirstN() /CalcAverage class public class CalcAvgTest public static void main(String args) CalcAverage ca=new CalcAverage(); System.out.println(“AVG=”+ca.avgFirstN(0) ); /main() ,Exception in thread “main” java.lang.ArithmeticException: / by zero at CalcAverage.avgFirstN(Compiled Code) at CalcAvgTest.main(CalcAvgTest.java:5),16,2、程序员自己编的异常处理,public class IntField extends JTextField public int getInt() throws NumberFormatException /文本框输入,可能掷出非数字的异常 return Integer.parseInt(gettext(); /getInt /IntField class 窗口类中该文本框的事件响应方法 public void actionPerformed(ActionEvent e) try userInt = intField.getInt(); message = “You input” +userInt+”Thank you.”; catch (NumbetFormatException ex) JOptionPane.showMessageDialog(this,”The input must be an integer. Please re-enter.”); /弹出错误提示对话框 finally repaint(); /捕获数字非法的异常后提示用户重新输入,17,3.实例分析:Pong游戏,问题:自行运动的小球,用户控制的球拍,遇到墙壁或球拍会反方向弹起并发出“Pong”声。 寻找对象寻找名词 小球、球拍、视频界面 寻找动词(行为):小球运动、球拍上下移动、球拍击中小球,窗口组件JApplet,墙壁,球拍,墙壁,墙壁,小球,18,3.Pong游戏的对象设计视图,使用,PongApplet,Paddle,Ball,19,3.Paddle类设计,什么数据 什么行为 对象接口 应该隐藏实现细节,类名:Paddle 角色:计算球拍上下的移动 属性:(隐藏 private) applet:PongApplet对象引用 locationX,Y:球拍位置 gameAreaHeight:画板高度 行为: Paddle(app):建立和主界面对象关系 getX():报告当前横坐标 getY():报告当前纵坐标 moveUp():向上移动 moveDown():向下移动 resetLocation():复位,20,3.Ball类设计,什么数据 什么行为 对象接口 应该隐藏实现细节,类名:Ball 角色:后台算法,计算小球运动轨迹 属性:(隐藏 private) applet:PongApplet对象引用 locationX,Y;位置坐标 directionX,Y;运动方向 topWall.rightWall:墙壁位置 行为: Ball(app):建立和主界面对象关系 getX():报告当前横坐标 getY():报告当前纵坐标 move():自动运动 run():线程入口,执行move(),21,3.PongApplet类设计,什么数据 什么行为 对象接口 应该隐藏实现细节,类名:PonaApplet

温馨提示

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

评论

0/150

提交评论