产品库存管理系统面向对象设计(PPT145页)

上传人:陈** 文档编号:193358305 上传时间:2023-03-09 格式:PPTX 页数:146 大小:1.73MB
收藏 版权申诉 举报 下载
产品库存管理系统面向对象设计(PPT145页)_第1页
第1页 / 共146页
产品库存管理系统面向对象设计(PPT145页)_第2页
第2页 / 共146页
产品库存管理系统面向对象设计(PPT145页)_第3页
第3页 / 共146页
资源描述:

《产品库存管理系统面向对象设计(PPT145页)》由会员分享,可在线阅读,更多相关《产品库存管理系统面向对象设计(PPT145页)(146页珍藏版)》请在装配图网上搜索。

1、威威 海海 职职 业业 学学 院院 产品库存管理系统面向对象设计学习情境描述 要求根据第一个情境的需求分析结果,学要求根据第一个情境的需求分析结果,学生成立项目开发小组,划分角色,推选项目经生成立项目开发小组,划分角色,推选项目经理和理和CTOCTO(首席技术师),程序员。经过讨论(首席技术师),程序员。经过讨论给出产品库存管理系统中的实体类:入库单、给出产品库存管理系统中的实体类:入库单、出库单、库存和用户类和控制类接口的详细设出库单、库存和用户类和控制类接口的详细设计;利用情境计;利用情境2 2搭建好的环境,对每个类予以搭建好的环境,对每个类予以编程实现。编程实现。所需知识q类的定义与对象

2、的创建类的定义与对象的创建q构造方法的作用及应用构造方法的作用及应用q面向对象三大特征:封装性、继面向对象三大特征:封装性、继承性和多态性的承性和多态性的JavaJava语言实现语言实现q抽象类与接口的应用抽象类与接口的应用q包的创建与使用包的创建与使用q访问控制符的应用访问控制符的应用q异常处理异常处理重点及难点q构造方法的作用及应用构造方法的作用及应用q面向对象三大特征:封装性、继面向对象三大特征:封装性、继承性和多态性的承性和多态性的JavaJava语言实现语言实现q抽象类与接口的应用抽象类与接口的应用q异常处理异常处理能力目标q培养学生面向对象的编程能力q培养学生良好的团队合作意识及沟

3、通协调能力、接收新知识的能力 q培养学生分析问题、解决问题的能力、创新能力以及逻辑思维能力 任务一 用Java语言描述现实世界中的Person。p学生讨论确定Person的特征 譬如:name-姓名,age-表示年龄,sex-表示性别等。p确定Person相关的行为 譬如:吃饭、睡觉等。用Java语言实现Person类复习引入面向对象与面向过程的区别?面向对象编程 面向对象编程是软件设计与实现的有效方法,它将客观世界中存在的事物看作对象,每个客观事物都有自己的特征和行为。对象的基本概念 变量变量方法方法在现实生活中在计算机程序中客观世界的实体程序中对象对象具有两方面的含义(考虑从哪些方面描述对

4、象)面向对象的基本概念类是抽象的,对象是具体的q具有相同特征和行为的对象被抽象为类。q类是对象的模板,包括一个对象的所有数据和代码。类的示例类的示例形状类形状类动物类动物类汽车类汽车类对象对对 象象面向对象编程的核心为计算机应用程序提供实用基础完成特定任务表示现实世界中的实体“对象是存在的具体实体,具有明确定义的状态和行为。对象是存在的具体实体,具有明确定义的状态和行为。”对象的示例收银员对象顾客对象顾客姓名:朱丽叶年龄:28体重:52千克操作:购买商品状态状态姓名:布兰尼职衔:收银员年龄:35体重:60千克操作:收款打印帐单行为行为消息传递“消息指一个对象为执行某项特定操作而向另一个消息指一

5、个对象为执行某项特定操作而向另一个对象发送的请求对象发送的请求”消息传递消息传递当需要执行一项特定操作时,通过向已为其定义此项操作的对象发送消息来请求对象之间通过传递消息实现相互通信类和对象的示例雇员雇员收银员系统管理员仓库管理员促销员采购经理面向对象技术的实现对象类实例化抽象计算机世界实体抽象数据类型现实世界抽象映射计算机逻辑的实现对象、类和实体的关系类是创建对象的模板,对象是类的实例类的基本概念 现实生活中的对象class Car int color;int name;int speed;void brake()void speedUp()void slowDown()抽象数据类型程序中的

6、对象映射描述实现类定义类定义中必须要写类名,应该使用Java语言合法的标识符来命名类名不能与java中已定义好的类名相同格式格式:修饰符class 类名 extends 父类名 implements 接口名表 成员变量声明 方法成员声明 其中classclass、extendsextends和implementsimplements都是Java的关键字。类的声类的声明明类体类中的方法 6-1方法的定义方法的定义方法的名称参数列表方法的主体方法返回的对象类型或原始类型方法体 若局部变量与类的成员变量同名,则类的成员变量被隐藏。方法体是对方法的实现,它包括局部变量的声明以及所有合法的Java指令。

7、方法体中声明的局部变量的作用域在该方法内部。类的定义举例class Car int color;int name;int speed;void brake()void speedUp()void slowDown()类的实现任务一实现class PersonString name;int age;String sex;public void eat()System.out.println(Its delicious!);【实战】:定义一个名为Rectangle表示长方形的类,它包含double类型的长length和宽width两个数据成员和设置长方形长宽值的方法setDim()、计算长方形面积

8、的方法area()。类的实现对象的创建实例化初始化对象的声明对象的创建声明 类名 对象名;声明并不为对象分配内存空间,而只是分配一个引用空间实例化 类名 对象名=new 类名()例:Person p=new Person();运算符new为对象分配内存空间,它调用对象的构造方法,返回引用初始化另外执行构造方法,可进行初始化 当一个变量被创建时,会对其中各种类型的成员变量自动按下表进行初始化赋值。对象的使用访问对象成员的一般形式为:对象名对象名.成员变量名成员变量名 对象名对象名.成员方法名成员方法名()()运算符”.”在这里称为成员运算符创建对象举例class TestPersonpublic

9、 static void main(String args)Person p1=new Person();p1.name=Tom;p1.age=12;p1.sex=male;p1.eat();按照前面设计Person类来充当生产车间,创建Person对象任务二 通过构造方法,初始化Person类的实例,为其成员变量赋初值。构造方法 在Java中,任何变量在被使用前都必须先设置初值。Java提供了为类的成员变量赋初值的专门功能:构造方法。构造方法的特点q构造方法名与类名相同。q构造方法不返回任何值,也没有返回类型。q每一个类可以有零个或多个重载的构造方法。若没有为一个类显式的定义构造方法,则当创

10、建类对象时,编译器将自动为它创建一个没有参数的默认构造方法.q构造方法只能在创建对象时通过new关键字来自动调用。注意:注意:一旦我们自己定义了构造方法,系统将不再为我们提供默认的不带参数的构造方法。class PersonString name;int age;String sex;public Person(String s1)name=s1;public Person(String s1,int x)name=s1;age=x;任务二实现public Person(String s1,int x,String s2)name=s1;age=x;sex=s2;public void eat

11、()System.out.println(Its delicious!);class TestPersonpublic static void main(String args)Person p1=new Person(Tom);Person p2=new Person(John,20);Person p3=new Person(Bob,22,male);System.out.println(p1.name+p1.age+p1.sex);System.out.println(p2.name+p2.age+p2.sex);System.out.println(p3.name+p3.age+p3.

12、sex);通过构造方法赋初值This引用句柄q构造方法的形式参数与类的成员变量名相同q在构造方法中调用其他重载的构造方法,用this(参数列表)的形式自主学习内部类的定义和使用。自主学习内部类的定义和使用。面向对象的基本特征封装性、继承性、多态性是面向对象的三个主要特性。特征特征描述描述封装性封装性通过提供一个或多个公有通过提供一个或多个公有(publicpublic)方法,实现对该类)方法,实现对该类的私有成员变量的访问和修改的私有成员变量的访问和修改 继承性继承性通过通过extendsextends关键字实现子类继关键字实现子类继承父类的所有非私有成员承父类的所有非私有成员 多态性多态性通

13、过方法重载和方法重写通过方法重载和方法重写 实现实现方法的多态性方法的多态性封装性的引入class PersonString name;int age;String sex;public void eat()System.out.println(Its delicious!);class TestPerson public static void main(String args)Person p1=new Person();p1.name=Tom;p1.age=-12;/非法的值非法的值 p1.sex=male;System.out.println(“p1的年龄的年龄是:是:”+p1.age

14、);通过实例启发学生思考为什么引入封装性?通过实例启发学生思考为什么引入封装性?封装性的实现私有数据公有方法外部世界所谓封装,就是信息隐藏所谓封装,就是信息隐藏,隐藏对象的实现细节,隐藏对象的实现细节,不让用户看到不让用户看到封装的示例 3-1接口 采购经理罗杰斯先生法拉力公司.迪斯尼汽车公司.市场经理雪莉女士 要求 封装的示例 3-2有选择地提供数据法拉力公司迪斯尼汽车公司公共电话号码电子邮箱产品种类私有备件的制造方法备件库存备件的制造成本公共电话号码电子邮箱汽车种类私有汽车的组装方法汽车库存汽车的组装成本封装的示例 3-3 实体法拉力公司实体迪斯尼汽车公司 Auti Ltd.Buto Lt

15、d.属性电话号码电子邮箱产品种类现有存货数量雇员详情所需物料详情属性电话号码电子邮箱汽车种类汽车规格雇员详情库存详情经销商详情方法接收订单备件的制造方法计算备件的制造成本计算利润率方法发出订单汽车的组装方法计算汽车的组装成本计算工资发出订单编制必要报告设置器和访问器方法设置私有成员变量值的方法称为设置器方法,通常为:public void setX(类型 x)this.x=x;访问私有成员变量值的方法称为访问器方法,通常为:public 类型 getX()return x;封装举例class Person private int age;public void setAge(int i)if(

16、i130)return;age=i;public int getAge()return age;将其设为私有的方法设为公有封装的好处封装的优点可进行数据检查便于修改,增强代码的可维护性隐藏类的实现细节任务三定义Person类的子类Student类继承性q类继承是指一个类可以继承其他类的非私有成员,实现代码复用。q被继承的类称为父类,继承父类后产生的类称为子类。继承父父 类类 子类子类 父类父类/子类子类是相对的是相对的Cow类Lion类Tiger类类Animals类Carnivorous类Herbivorous类Coat类继承的实现class SubClass extends SuperCla

17、ssJava中的继承是通过extends关键字来实现的。关键字任务三实现class Student extends Person String school;public void study()System.out.println(Studding);public static void main(String args)Person p=new Person();p.name=Tom;p.age=30;p.getInfo();Student s=new Student();s.name=John;s.age=16;s.school=“清华大学”;s.getInfo();s.study();

18、继承的特点继承的特点具有层次结构子类继承了父类的非私有属性和方法Object是所有类的超类注意注意:在Java语言中,只允许单继承。继承的优点继承的优点代码的可重用性父类的属性和方法可用于子类设计应用程序变得更加简单可以轻松地自定义子类构造方法的继承构造方法不能继承,但子类在创建对象时要对继承来自父构造方法不能继承,但子类在创建对象时要对继承来自父类的成员进行初始化,因此,在创建子类时除了执行子类类的成员进行初始化,因此,在创建子类时除了执行子类的构造方法外,还需要调用父类的构造方法,具体遵循原的构造方法外,还需要调用父类的构造方法,具体遵循原则如下则如下:p当子类未定义构造方法时,创建对象时

19、将无条件地调用父类的无参构造方法;p对于父类的含参数构造方法,子类可以在自己构造方法中使用super调用它,但super调用语句必须是子类构造方法中的第一个可执行语句;p子类在自己的构造方法中如果没有用super明确调用父类的构造方法,则在创建对象时,将自动先执行父类的无参构造方法,然后再执行自己定义的构造方法。任务四 对上例中Student 类继承了父类的所有非私有方法进行重写 多态性 方法重写实现的方法重写实现的动态多态性动态多态性(运行时多态)(运行时多态)方法重载实现方法重载实现的静态多态性的静态多态性(编译时多态)(编译时多态)多态性方法重写 方法重写方法重写子类和父类的方法具有相同

20、的名称和类型用子类对象调用子类中的重写方法super.methodname()用于调用父类中的方法class Rectangle int length;int width;Rectangle(int len,int wid)length=len;width=wid;/*计算矩形的周长.*/void getPerimeter()System.out.println(“矩形的周长为 +(2*(length+width);方法重写class Square extends Rectangle Square(int len)length=len;/*计算周长.*/void getPerimeter()S

21、ystem.out.println(“正方形的周长为+(4*length);public static void main(String arg)Rectangle rectObj=new Rectangle(10,15);rectObj.getPerimeter();Rectangle sqObj=new Square(15);sqObj.getPerimeter();调用父类方法调用子类方法任务四实现class Person public String name;public int age;public void getInfo()System.out.println(name);Sys

22、tem.out.println(age);public void eat()System.out.println(Its delicious!);class Student extends Person String school;public void study()System.out.println(Studding);System.out.println(Studding);public void getInfo()public void getInfo()System.out.println(name);System.out.println(name);System.out.prin

23、tln(age);System.out.println(age);System.out.println(school);System.out.println(school);public static void main(String public static void main(String args)args)Person p=new Person();Person p=new Person();p.name=Tom;p.name=Tom;p.age=30;p.age=30;p.getInfo();p.getInfo();Student s=new Student();Student s

24、=new Student();s.name=John;s.name=John;s.age=16;s.age=16;s.school=s.school=塔山小学塔山小学;s.getInfo();s.getInfo();s.study();s.study();多态性【实战】:通过分析,编程实现上图成员方法覆盖应注意的问题q覆盖方法的方法名、返回类型和参数列表必须与它所覆盖的方法相同q覆盖方法不能比它所覆盖的方法访问性更低q覆盖方法不能比它所覆盖的方法抛出更多的异常成员变量的覆盖 若子类声明了与父类同名的变量,则父类的变量被隐藏起来,直接使用的是子类的变量,但父类的变量仍占据空间,可通过super或

25、父类名来访问。程序运行结果:Subclass:200 Superclass:100成员变量的覆盖class Aclass A int x=100;int x=100;class B extends Aclass B extends A int x=200;int x=200;void print()void print()System.out.println(Subclass:+x);System.out.println(Subclass:+x);System.out.println(Superclass:+System.out.println(Superclass:+super.x);sup

26、er.x);public static void main(String args)public static void main(String args)(new B().print();(new B().print();成员变量的覆盖成员变量的覆盖类对象之间的类型转换父类对象和子类对象的转换需要注意以下原则:q子类对象可以被视为是其父类的一个对象,反之则不可。q若一个方法的形式参数定义的是父类的对象,则调用该方法的实际参数可以使用子类对象。q若父类对象引用指向的实际是一个子类对象,则这个父类对象的引用可以用强制类型转换转化成子类对象的引用。类变量 static 修饰符我们在Person类中

27、增加一个成员变量国籍,并假设所有的人都来自中国,该如何实现?思考?类变量 country=Chinaname=“John”age=15name=“rose”age=14name=“Tom”age=16static静态变量或类变量静态变量的访问:类名.变量名类变量的应用class Count public static void main(String args)User u1=new User();u1.login();User u2=new User();u2.login();class Userstatic int count=0;void login()count+;System.out

28、.println(你是第+count+位访问者);类方法 static修饰符static修饰符修饰的方法叫静态方法 目的:使方法独立于类的实例,使用类去访问类方法 规规 则则可以调用其他静态方法必须访问静态数据不能使用 super 或 this 关键字调用静态方法的语法为:classname.methodname();类方法的应用public class IsPrimepublic static boolean prime(int x)for(int k=2;k=Math.sqrt(x);k+)if(x%k=0)return false;return true;Class TestIsPrim

29、epublic static void main(String args)for(int m=10;m name.indexOf()System.out.println(“该电子邮件地址有效该电子邮件地址有效);else System.out.println(“该电子邮件地址无效该电子邮件地址无效);提取字符串方法方法方法说明说明public char charAt(int index)此方法用于从指定位置提取单个字符,该位置由索引指定,索引中的值必须为非负public String substring(int index)此方法用于提取从位置索引开始的字符串部分public String s

30、ubstring(int beginindex,int endindex)此方法用于提取 beginindex 和 endindex 位置之间的字符串部分public String concat(String str)此方法用于连接两个字符串,并新建一个包含调用字符串的字符串对象public String replace(char old,char new)此方法用于将调用字符串中出现某个字符的所有位置都替换为另一个字符public String trim()此方法用于返回一个前后不含任何空格的调用字符串的副本提取字符串方法方法说明说明public char charAt(int index)

31、此方法用于从指定位置提取单个字符,该位置由索引指定,索引中的值必须为非负。public String substring(int index)此方法用于提取从位置索引开始的字符串部分。public String substring(int beginindex,int endindex)此方法用于提取 beginindex 和 endindex 位置之间的字符串部分。public String concat(String str)此方法用于连接两个字符串,并新建一个包含调用字符串的 String 对象。public String replace(char old,char new)此方法用于将

32、调用字符串中出现某个字符的所有位置都替换为另一个字符。public String trim()此方法用于返回一个前后不含任何空格的调用字符串的副本。.char ch;ch=orange.charAt(3);.它将从 index(3)中提取单个字符串“n”并将其存储在变量 ch 中提取字符串举例 public class StringMethods public static void main(String args)String s=Java is a +platform independent language;String s1=Hello world ;String s2=Hello;

33、System.out.println(s);System.out.println(index of t=+s.indexOf(t);System.out.println(last index of t=+s.lastIndexOf(t);System.out.println(index of(t,10)=+s.indexOf(t,10);System.out.println(s1.substring(3,8);System.out.println(s2.concat(World);System.out.println(s2.replace(l,w);System.out.println(s1.

34、trim();任务七实现public class GetFilenameprivate String fullPath;private final char pathSepatator=;public GetFilename(String fname)fullPath=fname;public String getName()int pos=fullPath.lastIndexOf(pathSepatator);if(pos=-1)return fullPath;elsereturn fullPath.substring(pos+1);public String getPath()int po

35、s=fullPath.lastIndexOf(pathSepatator);if(pos=-1)return fullPath;elsereturn fullPath.substring(0,pos);public static void main(String args)GetFilename fn=new GetFilename(F:avamyexamplea.java);System.out.println(fn.getName();System.out.println(fn.getPath();更改字符大小写方法Hello使用使用 toUpperCase()方法方法HELLOHELLO

36、使用使用 toLowerCase()方法方法hello语法public String toUpperCase();语法Public String toLowerCase();更改字符大小写方法举例 public class StringTest public static void main(String args)String name=new String(George);System.out.println(“姓名是姓名是+name);int length=name.length();System.out.println(“姓名的长度为姓名的长度为”+length+“个字符个字符);Sy

37、stem.out.println(“姓名用大写形式表示为姓名用大写形式表示为:);String nameUppercase=name.toUpperCase();System.out.println(nameUppercase);任务八 判断一个字符串是否为回文,即将一个字符串进行反转,得到的字符串与源串相同:例如原始字符串为“aba”,逆转后的字符串也为“aba”。StringBuffer 类构造方法构造方法说明说明public StringBuffer()保留保留 16 个字符的空间个字符的空间public StringBuffer(int length)设置缓存器大小设置缓存器大小pub

38、licStringBuffer(Stringvalue)接收字符串参数,用来设置初始内容,接收字符串参数,用来设置初始内容,并在不重新分配的情况下保留并在不重新分配的情况下保留 16 个字符个字符的空间的空间q StringBuffer 用于表示可以修改的字符串q 使用连接运算符(+)的字符串会自动创建字符串缓冲对象StringBuffer 类的方法方法方法说明说明StringBuffer insert(String s)在指定位置插入指定的字符串在指定位置插入指定的字符串int length()确定确定 StringBuffer 对象的长度对象的长度int capacity()返回当前容量返

39、回当前容量 void setCharAt(int pos,char ch)使用使用 ch 指定的新值设置指定的新值设置 pos 指定的位置上的字符指定的位置上的字符String toString()转换为字符串形式转换为字符串形式StringBuffer reverse()将此字符序列用其反转形式取代将此字符序列用其反转形式取代 StringBuffer delete(int start,int end)删除调用对象中从删除调用对象中从 start 位置开始直到位置开始直到 end 指定的索引指定的索引 1 位置的字符序列位置的字符序列StringBuffer deleteCharAt(int

40、 pos)删除删除 pos 指定的索引处的字符指定的索引处的字符StringBuffer replace(int start,int end,String s)使用一组字符替换另一组字符。将用替换字符串从使用一组字符替换另一组字符。将用替换字符串从 start 指定的位置开始替换,直到指定的位置开始替换,直到 end 指定的位置结束指定的位置结束不变性String类类创建后直接修改直接修改不变性的概念解决方法解决方法StringBuffer 类String 的对等类表示可增加和可编写字符的可变序列将字符插入到字符串中间或附加到字符串末尾不变性举例public class StringBuf p

41、ublic static void main(String args)StringBuffer buf=new StringBuffer(Java);buf.append(“Guide Ver1/”);buf.append(3);int index=5;buf.insert(index,Student);index=23;buf.setCharAt(index,.);int start=24;int end=25;buf.replace(start,end,4);String s=buf.toString();/转换为字符串转换为字符串 System.out.println(s);任务八实现p

42、ublic class StringReversepublic static void main(String args)String s=I am a Chinese;int len=s.length();StringBuffer dest=new StringBuffer(len);for(int i=len-1;i=0;i-)dest.append(s.charAt(i);System.out.println(dest.toString();main方法的参数qmain方法的形参为String类的数组参数args,args可以用来接收Java命令行传送给Java应用程序的数据。例如:ja

43、va HelloEcho How are you?123q若要将包含多个空格的单词作为一个字符串,可用引号括起来。例如:java HelloEcho How are you?123main方法的参数举例class CommandLine public static void main(String args)for(int i=0;iargs.length;i+)System.out.println(args+i+:+argsi);显示所有命令行参数Java异常处理任务九public class ExceptionRaised public ExceptionRaised()public in

44、t calculate(int operand1,int operand2)int result=operand1/operand2;return result;public static void main(String args)ExceptionRaised obj=new ExceptionRaised();int result=obj.calculate(9,0);System.out.println(result);异常情况异异 常常程序突然终止并将控制交给操作系统在运行时发生的错误在运行时发生的错误 什么是异常q在程序运行过程中发生的、会打断程序正常执行的事件称为异常(Excep

45、tion),也称为例外。例如,零用作除数(产生算术异常ArithmeticException)、在指定的磁盘上没有要打开的文件(产生文件未找到异常 FileNotFoundException)数组下标越界(产生数组下标越界异常 ArrayIndexOutOfBoundsException)等常见异常异常类的层次 Object Throwable Error Exception RuntimeException IOException AWTError SQLException 为内部错误,因此在正常情况下不期望用户的程序捕获它们Java虚拟机在运行时生成的例外,由系统检测,用户可不做处理,系统

46、将它们交给缺省的异常处理程序程序中可预知的问题,可能会带来意想不到的结果,Java程序必须捕获或声明所有的非运行时异常异常处理机制异常处理机制 捕获异常声明抛出异常throwsTry-catch消极的消极的处理方处理方式式积极的积极的处理方处理方式式捕获异常q捕获异常是通过try-catch-finally语句实现的。tryfinallycatch要监控的程序语句包含在此块中要监控的程序语句包含在此块中以合理的方式以合理的方式捕获和处理异常捕获和处理异常释放资源等释放资源等try 和 catch 块执行 catch 后程序继续正常运行程序控制 引发代码块trycatch异常异常单单 元元任务九

47、的解决方案一public class ExceptionRaised public ExceptionRaised()public int calculate(int operand1,int operand2)int result=0;try result=operand1/operand2;catch(Exception e)System.err.println(发生异常:发生异常:+e.toString();e.printStackTrace();return result;指明catch可以捕获并处理的异常类型调用异常类的方法异常类的常用方法实战 阅读下列程序代码,分析程序可能产生的异

48、常情况,捕获并处理异常。public class ExceptionDemo int array=1,2,3,4,5,6,7,8,9,0;public void exceptest(int j)for(int i=0;ij;i+)System.out.println(array+i+=+arrayi);public static void main(String args)ExceptionDemo ex=new ExceptionDemo();ex.exceptest(11);多重 catch 块2-1q一段代码可能会生成多个异常q当引发异常时,按顺序查看每个 catch 语句,并执行第一个

49、类型与异常类型匹配的语句q执行其中的一条 catch 语句之后,其他的 catch 语句将被忽略try .catch(ArrayIndexOutOfBoundsException e)catch(Exception e)多重 catch 块2-2try .catch(Exception e)catch(ArrayIndexOutOfBoundsException e)q使用多重 catch 语句时,异常子类一定要位于异常父类之前。多重 catch 块示例class ExceptionCode public void calculate()try int num=0;int num1=42/nu

50、m;int c=1,2,3,4;c4=99;catch(Exception e)System.out.println(父类异常父类异常 catch 子句子句);catch(ArithmeticException ae)/错误错误 不能到达的代码不能到达的代码 System.out.println(这个子类的父类这个子类的父类是是exception 类类,且不能到达且不能到达);class UnreachableCode class UnreachableCode public static void main(String public static void main(String args

51、)args)ExceptionCode obj=new ExceptionCode obj=new ExceptionCode();ExceptionCode();obj.calculate();obj.calculate();finally 块trytry、catch catch 和和 finally finally 块的执行流程块的执行流程vfinally子句可以保证,无论try块中是否抛出异常,finally块中的语句都会被执行到,这样可以对程序的状态作统一的管理。vfinally语句对增强程序的鲁棒性非常重要。无异常异常异常处理块的一般形式try /要监控错误的代码块 catch(Ex

52、ception e)/Exception e 的异常处理程序 finally/在 try 结束前要执行的代码块finally块示例public class SystemException public static void main(String args)int a=68;int b=0;try System.out.println(a/b);/0用作了除数用作了除数 catch(ArithmeticException e)System.out.println(“0用作了除数用作了除数”);return;finally System.out.println(“程序结束程序结束”);思考:如

53、果没有finally语句,程序运行的结果有何不同?try-catch-finally应注意的问题q 每个try语句至少有一个catch语句对应,catch语句的排列顺序应该从特殊到一般。q 可以用一个catch语句处理多个异常类型,这时它的异常类型参数应该是多个异常类型的父类。q try-cacth-finally语句中间不能插入其他语句声明抛出异常处理异常处理异常可能会导致异常防止被调用的方法出现异常并处理异常type calledmethod-name(parameter-list)throws exception-list /body of methodtype callingmetho

54、d-name try /statements calledmethod-name();catch(Exception e)/statements被调用的方法被调用的方法调用方法调用方法注意:一个方法被覆盖时,覆盖它的方法只能抛出相同的异常或异常的子类,即不能抛出新的异常任务九的解决方案二class ExceptionRaised public ExceptionRaised()public int calculate(int operand1,int operand2)throws Exception int result=0;result=operand1/operand2;return r

55、esult;class ArithmeticException public static void main(String args)throws Exception ExceptionRaised obj=new ExceptionRaised();int result=obj.calculate(9,0);System.out.println(result);用throws声明抛弃异常实战 用声明抛出异常的方式处理前面的实战。任务十q编程判断一个数能否被3整除,如果不能整除就让它抛出一个异常。抛出异常throw语句语句语句 3停止停止异常处理程序语句语句 1语句语句 2throw语句使得

56、用户可以根据需要抛出异常。throw语句的一般形式q一般的形式是:throw new 异常类();qnew运算符被用来生成一个异常类的实例对象。例如:throw new ArithmeticException();任务十的实现public class ThrowDemo public static void main(String args)int x=125;try if(x%3!=0)throw new ArithmeticException();catch(Exception e)System.out.println(“捕获异常捕获异常”+e.getMessage();System.ou

57、t.println(“不能被不能被3整除整除”);System.out.println(“程序结束程序结束”);手动抛出异常用户自定义异常类3-1Java提供的内置异常不能满足程序需要怎么办?那就自定义异常吧!用户自定义异常3-2异常类的构造方法方法方法说明说明Exception()创建新异常Exception(String message)用字符串参数message描述异常信息并创建新异常。用户自定义异常示例3-3class MyException extends Exceptionprivate int id;public MyException(String message,int id

58、)super(message);this.id=id;public int getId()return id;用户自定义异常示例3-3class TestMyException public void register(int num)throws MyException if(num0)throw new MyException(人数不能为负值人数不能为负值,3);elseSystem.out.println(登记的人数为:登记的人数为:+num);public static void main(String args)TestMyException my=new TestMyExcepti

59、on();trymy.register(-5);catch(MyException e)System.out.println(e.getMessage();System.out.println(错误类型为:错误类型为:+e.getId();拓展性知识自己查阅自己查阅JDK的帮助,学习与日期处理有关的帮助,学习与日期处理有关的的Date、GregorinCalendar类的使用类的使用 课下实战q用用JavaJava语言描述语言描述IBMIBM公司的员工,其中员工和经理公司的员工,其中员工和经理的薪水是不同的,其工作的方式也是不同的。的薪水是不同的,其工作的方式也是不同的。q编程:模拟编程:模拟wordword中字符串的查找功能,统计一段中字符串的查找功能,统计一段文本中给定字符串出现的频率。文本中给定字符串出现的频率。下课了!下课了!演讲完毕,谢谢观看!

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!