第五、八、九章复习5.6

1-1 异常与异常处理


常见的异常有哪些


Java中一共提供了try、catch、finally、throw和throws 5个关键字来处理异常,其中的try-catch-finally需要配套使用,它们的作用是捕获和处理异常,使用try关键字和它后面的{}把有可能出现异常的代码包含起来。如果在try语句块中发生异常,这个异常就会被抛出。这时候就可以使用catch语句来捕获异常,并在这个语句块中,对这个异常进行处理。还有一些是不管发不发生异常,都需要执行的代码,就把它们放到finally语句块中。throw关键字用来手动引发一个异常。throws关键字用来定义任何被调用方法的异常。

 异常的分类


在Java的lang包里有一个Throwable类,它是所有异常的父类或者间接父类。每个异常类型都是Throwable类的子类,这其中有两个直接子类:Error和Exception。Error类及其子类是用来处理系统内部及程序运行环境的异常,一般与硬件有关,由系统直接处理,不需要程序员在程序中处理。

Exception类是程序能够捕获到的异常情况。它又可以分为两大类:运行时异常(为RuntimeException)和检查型异常(也称非运行时异常)。运行时异常(RuntimeException)是一种设计或者是实现问题上出现的错误,大多数是由于程序设计不当而引发的错误,但这种错误要在运行期间才会发生和被发现。

在 Java 语言中,将程序执行中发生的不正常情况称为“ 异常 ”。 (开发过程中的语法错误和逻辑错误不是异常)

 有异于常态,和正常情况不一样,有错误出现。阻止当前方法或作用域,称之为异常。

 

 

 1.系统错误——Error


        Error 类及其子类通常用来描述 Java 运行系统中的内部错计吴,该类定义了常规环境下不希望由程序捕获的异常,比如OutOfMemoryError、ThreadDeath等,这些错误发生时,Java虚拟机(JVM)一般会选择线程终止。
例如,下面的代码在控制台中输出“梦想照亮现实”这句话活,代码如下: 
 

public static void main(String[] args) {
    System.out.println("梦想照亮现实!!!")//此化处缺少必要的分号
}


2.异常——Exception

运行时异常
编译时不会报错,但程序运行起来如果有错误就会报异常。运行时异常都是RuntimeException类及其子类异常,如NullPointerException、IndexOutOfBoundsException等,这些异常一般是由程序逻辑错误引起的,程序应该从逻辑角度尽可能避免这类异常的发生。

常见的运行时异常:

 注:
ConcurrentModificationException  并发修改异常;
NoSuchElementException  找不到元素异常; 
UnsupportedOperationException  不支持请求异常;(使用Arrays工具类的asList将数组转成集合增加元素时,会报此异常)
 

 

package eight2;
 
public class Thundering { // 创建类
	public static void main(String[] args) { // 主方法
		String str = "lili"; // 定义字符串
		System.out.println(str + "年龄是:"); // 输出的提示信息
		int age = Integer.parseInt("20L"); // 数据类型的转换
		System.out.println(age); // 输出信息
	}
}


运行结果如下:

非运行时异常

        非运行时异常是RuntimeException类及其子类异常以外的异常,我们必需对出现的这些异常进行处理,否则程序就不能编译通过。如 IOException、SQLException 以及用户自定义的异常等。

常见的非运行时异常:

 注:
反射操作异常:ReflectiveOperationException
方法未找到异常:NoSuchMethodException
字段未找到异常:NoSuchFieldException
非法访问权限异常:IllegalAccessException
实例化异常:InstantiationException
不支持克隆异常:CloneNotSupportedException
被中止异常:InterruptedException

 

package eight3;
 
public class FootballTeam {
	private int playerNum;						// 定义“球员数量”
	private String teamName;						// 定义“球队名称”
	public FootballTeam()						// 构造方法FootballTeam()
	{
		// 寻找“教练”类
		try {
			Class.forName("com.mrsoft.Coach");
		} catch (ClassNotFoundException e) {	//catch代码块用来获取异常信息
			// TODO Auto-generated catch block
			e.printStackTrace();			//输出报错信息
		}
	}
	public static void main(String[] args) {
		FootballTeam team = new FootballTeam();	// 创建对象team
		team.teamName = "com.mrsoft";			// 初始化teamName
		team.playerNum = 19;					// 初始化playerNum
		System.out.println("\n球队名称:" + team.teamName + "\n" + "球员数量:" + team.playerNum + "名");
	}
}

结果:

 

异常的注意事项


  方法重写---子类方法不能比父类抛出更多的异常,子类重写的方法可以不抛出。
  将检查异常包装为未检查异常。(建议)
  不要吞异常---即catch块后面什么也不写,这样即使将来产生异常,也不知道是什么异常。
  如果try,catch,finally中都有return以finally中的为准     如果try中有return,即使finally对return后的值做了改动,也不会影响    到返回后的结果。
在调用方法时,方法的类型不为void,则在try块和catch块中,都需要加入return(前提,不存在finally中的returun)
当调用的方法出现检查异常或自定义异常,则在调用时,如果使用try-catch(积极处理),则可以正常使用,不用一级一级的向上抛出;如果使用throws(消极处理),则必须一级一级的向上抛出。---如果为未检查异常,则不需要加以处理。
如果catch捕获的异常不完整,则编译不会通过。 
异常产生后,如果不做任何处理,程序就会被终止。
一个方法被覆盖时覆盖它的方法必须抛出相同的异常或异常的子类。如果父类抛出多个子类,则覆盖方法必须抛出那些异常的子类,不能抛出新的异常。
与有返回值的方法连用时要注意: 

异常的常用方法


getMessage()---返回的是异常的信息
getStackTrace()---打印异常的跟踪信息,打印堆栈中的异常出现位置,异常(名称、信息)。

在JVM默认的异常处理机制,就是调用printStackTrace方法,打印异常的堆栈跟踪信息。
 创建异常类:
           1)class MyException extends Exception{ // 检查异常 }
           2)class MyException extends RuntimeException { // 未检查异常}

异常处理的原则


1.函数内容如果抛出需要检测的异常,那么函数上必须声明,否则必须在函数内用try{}catch(){}捕捉,否则编译失败。

2.如果调用到了声明异常的函数,要么trycatch要么throws,否则编译失败。

3.什么时候使用catch,什么时候使用throws?

     功能内容可以解决,用catch;解决不了,用throws告诉调用者,由调用者解决。

4.一个功能如果抛出了多个异常,那么调用时,必须有对应的多个catch进行针对性的处理。

自定义异常


在项目中会出现特有的问题,而这些问题并未被java所描述并封装为对象,所以对于这些特有的问题可以按照java封装的思想,将特有的问题进行自定义的异常处理。

如何定义异常信息?

因为父类中已经将异常信息的操作都完成了,所以子类只需要在构造时,将异常信息通过super()传递给父类,就可以直接地通过getMessage()方法获取自定义得到异常信息。

自定义异常类必须继承Exception,原因:因为异常类和ichang对象都被抛出,他们都有可抛性。只有Throwable体系中的类和对象才可以被throws和throw操作。

步骤:     

1、创建自定义异常类
2、在方法中通过throw关键字抛出异常
3、如果在当前抛出的异常方法中处理异常,可以使用try-catch语句块捕获并处理,否则在方法的 4、声明处通过throws关键字指名要抛出给方法调用者的异常,继续下一操作。
5、在出现异常方法的调用者中捕获并处理异常。 

2-1什么是 Java 中的字符串


在程序开发中字符串无处不在,如用户登陆时输入的用户名、密码等使用的就是字符串。其实,在前面的章节中我们就已经使用了字符串,例如我们在控制台中输出的 "Hello World" 、 "imooc" 、"爱慕课"等。

在 Java 中,字符串被作为 String 类型的对象处理。 String 类位于 java.lang 包中。默认情况下,该包被自动导入所有的程序。

创建 String 对象的方法:

 

任务

小伙伴们,字符串的定义您会了吗?让我们来检验下吧!

在编辑器中创建了两个字符串对象,分别为 hobby 和 url ,并输出字符串的值。

代码

 运行结果:

2-2Java 中字符串的不变性

String 对象创建后则不能被修改,是不可变的,所谓的修改其实是创建了新的对象,所指向的内存空间不同。如下所示:

 运行结果::

 

结合上面的代码,关于字符串小伙伴们必须需要了解滴:

1、 通过 String s1="爱慕课"; 声明了一个字符串对象, s1 存放了到字符串对象的引用,在内存中的存放引用关系如下图所示:

 

 然后通过 s1="欢迎来到:"+s1; 改变了字符串 s1 ,其实质是创建了新的字符串对象,变量 s1 指向了新创建的字符串对象,如下图所示:

 

2、 一旦一个字符串在内存中创建,则这个字符串将不可改变。如果需要一个可以改变的字符串,我们可以使用StringBuffer或者StringBuilder(后面章节中会讲到)。

3、 每次 new 一个字符串就是产生一个新的对象,即便两个字符串的内容相同,使用 ”==” 比较时也为 ”false” ,如果只需比较内容是否相同,应使用 ”equals()” 方法(前面条件运算符章节讲过哦~~)

任务
请在编辑器中的第 7、14 行中将代码填写完整,并注意观察代码和运行结果,加强对字符串应用的理解~~

代码

 

运行结果

 

2-3Java 中 String 类的常用方法 Ⅰ 

String 类提供了许多用来处理字符串的方法,例如,获取字符串长度、对字符串进行截取、将字符串转换为大写或小写、字符串分割等,下面我们就来领略它的强大之处吧。

String 类的常用方法:

 结合代码来熟悉一下方法的使用:

 运行结果:

 

友情提示:

1. 字符串 str 中字符的索引从0开始,范围为 0 到 str.length()-1

2. 使用 indexOf 进行字符或字符串查找时,如果匹配返回位置索引;如果没有匹配结果,返回 -1

3. 使用 substring(beginIndex , endIndex) 进行字符串截取时,包括 beginIndex 位置的字符,不包括 endIndex 位置的字符

针对如此繁杂的方法,推荐大家一个学习技巧:好记性不如烂笔头!多看的同时一定要多敲哦~~
 

 

任务
亲,让我们赶紧来做个练习吧。

功能:判断 Java 文件名是否正确,判断邮箱格式是否正确。其中:合法的文件名应该以 .java 结尾;合法的邮箱名中至少要包含 “@” , 并要求 “@” 在 “.” 之前

请参考注释,在编辑器中的第 16、19、22、36 行中将代码填写完整。

代码

public class HelloWorld {
    public static void main(String[] args) {
        // Java文件名
		String fileName = "HelloWorld.java"; 
        // 邮箱
		String email = "laurenyang@imooc.com";
		
		// 判断.java文件名是否正确:合法的文件名应该以.java结尾
        /*
        参考步骤:
        1、获取文件名中最后一次出现"."号的位置
        2、根据"."号的位置,获取文件的后缀
        3、判断"."号位置及文件后缀名
        */
        //获取文件名中最后一次出现"."号的位置
		int index = fileName.lastIndexOf(".");
        
        // 获取文件的后缀
		String prefix =fileName.substring(index+1,fileName.length());
        
		// 判断必须包含"."号,且不能出现在首位,同时后缀名为"java"
		if (index!=-1&&index!=0&&prefix.equals("java")        ) {
			System.out.println("Java文件名正确");
		} else {
			System.out.println("Java文件名无效");
		}
 
        // 判断邮箱格式是否正确:合法的邮箱名中至少要包含"@", 并且"@"是在"."之前
         /*
        参考步骤:
        1、获取文件名中"@"符号的位置
        2、获取邮箱中"."号的位置
        3、判断必须包含"@"符号,且"@"必须在"."之前
        */
	    // 获取邮箱中"@"符号的位置
		int index2 = email.indexOf('@');
        
        // 获取邮箱中"."号的位置
		int index3 = email.indexOf('.');
        
		// 判断必须包含"@"符号,且"@"必须在"."之前
		if (index2 != -1 && index3 > index2) {
			System.out.println("邮箱格式正确");
		} else {
			System.out.println("邮箱格式无效");
		}
	}
}

 结果

 

2-4Java 中的 String 类常用方法 Ⅱ

我们继续来看 String 类常用的方法,如下代码所示:

 运行结果

 

那么,“==” 和 equals() 有什么区别呢?

==: 判断两个字符串在内存中首地址是否相同,即判断是否是同一个字符串对象

equals(): 比较存储在两个字符串对象中的内容是否一致

PS:字节是计算机存储信息的基本单位,1 个字节等于 8 位, gbk 编码中 1 个汉字字符存储需要 2 个字节,1 个英文字符存储需要 1 个字节。所以我们看到上面的程序运行结果中,每个汉字对应两个字节值,如“学”对应 “-47 -89” ,而英文字母 “J” 对应 “74” 。同时,我们还发现汉字对应的字节值为负数,原因在于每个字节是 8 位,最大值不能超过 127,而汉字转换为字节后超过 127,如果超过就会溢出,以负数的形式显示。(关于编码,我们在后面课程中会详细介绍,小小期待哦~~)

任务

亲,让我们赶紧来做个练习巩固一下吧。

功能:统计指定字符串中字符 ‘a’ 出现的次数

分析:可以通过循环遍历字符串中的每一个字符,判断是否是字符 a ,如果是,则累加统计出现的次数,请在编辑器中的第 10、13 行中将代码填写完整.

代码

 

 运行结果

 2-5认识 Java 中的 StringBuilder 类

在Java中,除了可以使用 String 类来存储字符串,还可以使用 StringBuilder 类或 StringBuffer 类存储字符串,那么它们之间有什么区别呢?

String 类具有是不可变性。如

 运行结果:

 

从运行结果中我们可以看到,程序运行时会额外创建一个对象,保存 "helloworld"。当频繁操作字符串时,就会额外产生很多临时变量。使用 StringBuilder 或 StringBuffer 就可以避免这个问题。至于 StringBuilder 和StringBuffer ,它们基本相似,不同之处,StringBuffer 是线程安全的,而 StringBuilder 则没有实现线程安全功能,所以性能略高。因此一般情况下,如果需要创建一个内容可变的字符串对象,应优先考虑使用 StringBuilder 类。

那么如何定义 StringBuilder 类的对象呢? 我们来看下面的代码:

 

任务

在编辑器中定义了一个 StringBuilder 对象,用来存储字符串。认识一下他吧!!

代码

 运行结果

 

2-6Java 中的 StringBuilder 类的常用方法


StringBuilder 类提供了很多方法来操作字符串:

例如:在下面的示例代码中,创建了 StringBuilder 对象,用来存储字符串,并对其做了追加和插入操作。这些操作修改了 str 对象的值,而没有创建新的对象,这就是 StringBuilder 和 String 最大的区别。

 

任务

功能:将一个由英文字母组成的字符串转换成指定格式---从右边开始每三个字母用逗号分隔的形式。

请在编辑器中的第 4、10 行将代码填写完整

代码

 运行结果

 

 

3-1Java 中的包装类


相信各位小伙伴们对基本数据类型都非常熟悉,例如 int、float、double、boolean、char 等。基本数据类型是不具备对象的特性的,比如基本类型不能调用方法、功能简单。。。,为了让基本数据类型也具备对象的特性, Java 为每个基本数据类型都提供了一个包装类,这样我们就可以像操作对象那样来操作基本数据类型。 

基本类型和包装类之间的对应关系:

包装类主要提供了两大类方法:

1. 将本类型和其他基本类型进行转换的方法

2. 将字符串和本类型及包装类互相转换的方法

我们将在后面的小节逐步讲解,表着急哦~~

任务
我们以 Integer 包装类为例,来看下包装类的特性。

Integer 包装类的构造方法:

如下代码所示:

Integer包装类的常用方法:

3-2Java 中基本类型和包装类之间的转换


基本类型和包装类之间经常需要互相转换,以 Integer 为例(其他几个包装类的操作雷同哦):

在 JDK1.5 引入自动装箱和拆箱的机制后,包装类和基本类型之间的转换就更加轻松便利了。

那什么是装箱和拆箱呢?我们分别来看下

装箱:把基本类型转换成包装类,使其具有对象的性质,又可分为手动装箱和自动装箱

拆箱:和装箱相反,把包装类对象转换成基本类型的值,又可分为手动拆箱和自动拆箱

任务
在编辑器中完成了基本类型和包装类之间的转换,即装箱和拆箱的操作。

请参考注释将 8、11、19、22 代码补充完整

代码

 运行结果

 

3-4Java 中基本类型和字符串之间的转换


在程序开发中,我们经常需要在基本数据类型和字符串之间进行转换。

其中,基本类型转换为字符串有三种方法:

1. 使用包装类的 toString() 方法

2. 使用String类的 valueOf() 方法

3. 用一个空字符串加上基本类型,得到的就是基本类型数据对应的字符串

 再来看,将字符串转换成基本类型有两种方法:

1. 调用包装类的 parseXxx 静态方法

2. 调用包装类的 valueOf() 方法转换为基本类型的包装类,会自动拆箱

 PS:其他基本类型与字符串的相互转化这里不再一一列出,方法都类似

任务

在编辑器中完成了基本类型和字符串之间的转换,请将 6、12 行代码填写完整

运行结果

 

 

 

3-6使用 Date 和 SimpleDateFormat 类表示时间


在程序开发中,经常需要处理日期和时间的相关数据,此时我们可以使用 java.util 包中的 Date 类。这个类最主要的作用就是获取当前时间,我们来看下 Date 类的使用:

使用 Date 类的默认无参构造方法创建出的对象就代表当前时间,我们可以直接输出 Date 对象显示当前的时间,显示的结果如下:

其中, Wed 代表 Wednesday (星期三), Jun 代表 June (六月), 11 代表 11 号, CST 代表 China Standard Time (中国标准时间,也就是北京时间,东八区)。

从上面的输出结果中,我们发现,默认的时间格式不是很友好,与我们日常看到的日期格式不太一样,如果想要按指定的格式进行显示,如 2014-06-11 09:22:30 ,那该怎么做呢?

此时就到了 java.text 包中的 SimpleDateFormat 类大显身手的时候了!!可以使用 SimpleDateFormat 来对日期时间进行格式化,如可以将日期转换为指定格式的文本,也可将文本转换为日期。

1. 使用 format() 方法将日期转换为指定格式的文本

 代码中的 “yyyy-MM-dd HH:mm:ss” 为预定义字符串, yyyy 表示四位年, MM 表示两位月份, dd 表示两位日期, HH 表示小时(使用24小时制), mm 表示分钟, ss 表示秒,这样就指定了转换的目标格式,最后调用 format() 方法将时间转换为指定的格式的字符串。

运行结果: 2014-06-11  09:55:48   

2. 使用 parse() 方法将文本转换为日期

 代码中的 “yyyy年MM月dd日 HH:mm:ss” 指定了字符串的日期格式,调用 parse() 方法将文本转换为日期。

运行结果: 

 

一定要注意哦:

1、 调用 SimpleDateFormat 对象的 parse() 方法时可能会出现转换异常,即 ParseException ,因此需要进行异常处理

2、 使用 Date 类时需要导入 java.util 包,使用 SimpleDateFormat 时需要导入 java.text 包

任务
亲, Date 类和 SimpleDateFormat 类的使用您掌握了吗?让我们来检验下吧。

功能:实现将日期转换为指定格式的文本,将文本转换为日期

请在编辑器中的第 15、18、27 行中将代码填写完整

 代码

运行结果

 

 

3-7Calendar 类的应用


Date 类最主要的作用就是获得当前时间,同时这个类里面也具有设置时间以及一些其他的功能,但是由于本身设计的问题,这些方法却遭到众多批评,不建议使用,更推荐使用 Calendar 类进行时间和日期的处理。

java.util.Calendar 类是一个抽象类,可以通过调用 getInstance() 静态方法获取一个 Calendar 对象,此对象已由当前日期时间初始化,即默认代表当前时间,如 Calendar c = Calendar.getInstance();

那么如何使用 Calendar 获取年、月、日、时间等信息呢?我们来看下面的代码:

其中,调用 Calendar 类的 getInstance() 方法获取一个实例,然后通过调用 get() 方法获取日期时间信息,参数为需要获得的字段的值, Calendar.Year 等为 Calendar 类中定义的静态常量。

运行结果: 

Calendar 类提供了 getTime() 方法,用来获取 Date 对象,完成 Calendar 和 Date 的转换,还可通过 getTimeInMillis() 方法,获取此 Calendar 的时间值,以毫秒为单位。如下所示:

运行结果:

任务
亲, Calendar 类的使用您掌握了吗?让我们来检验下吧。

代码编辑器中实现获取 Calendar 对象,并转换为指定格式的时间。请将第 9、12 行代码补充完整

 代码

 运行结果 

 

3-8使用 Math 类操作数据


Math 类位于 java.lang 包中,包含用于执行基本数学运算的方法, Math 类的所有方法都是静态方法,所以使用该类中的方法时,可以直接使用类名.方法名,如: Math.round();

常用的方法:

通过案例我们来认识一下他们的使用吧!!

运行结果:

PS: Math 类还提供了许多其他方法,各位小伙伴们可以注意关注 wiki ,查阅更多信息

任务
功能:定义一个包含 10 个元素的整型数组,通过随机产生 10 以内的随机数,给数组中的每个元素赋值,并输出结果。

 代码

 运行结果

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
写在前面的话 引言 1. 前提 2. Java的学习 3. 目标 4. 联机文档 5. 章节 6. 练习 7. 多媒体 8. 源代码 9. 编码样式 10. Java版本 11. 课程和培训 12. 错误 13. 封面设计 14. 致谢 第1章 对象入门 1.1 抽象的进步 1.2 对象的接口 1.3 实现方案的隐藏 1.4 方案的重复使用 1.5 继承:重新使用接口 1.5.1 改善基础类 1.5.2 等价和类似关系 1.6 多形对象的互换使用 1.6.1 动态绑定 1.6.2 抽象的基础类和接口 1.7 对象的创建和存在时间 1.7.1 集合与继承器 1.7.2 单根结构 1.7.3 集合库与方便使用集合 1.7.4 清除时的困境:由谁负责清除? 1.8 违例控制:解决错误 1.9 多线程 1.10 永久性 1.11 Java和因特网 1.11.1 什么是Web? 1.11.2 客户端编程 1.11.3 服务器端编程 1.11.4 一个独立的领域:应用程序 1.12 分析和设计 1.12.1 不要迷失 1.12.2 阶段0:拟出一个计划 1.12.3 阶段1:要制作什么? 1.12.4 阶段2:开始构建? 1.12.5 阶段3:正式创建 1.12.6 阶段4:校订 1.12.7 计划的回报 1.13 Java还是C++? 第2章 一切都是对象 2.1 用句柄操纵对象 2.2 必须创建所有对象 2.2.1 保存在什么地方 2.2.2 特殊情况:主类型 2.2.3 Java中的数组 2.3 绝对不要清除对象 2.3.1 作用域 2.3.2 对象的作用域 2.4 新建数据类型:类 2.4.1 字段和方法 2.5 方法、自变量和返回值 2.5.1 自变量列表 2.6 构建Java程序 2.6.1 名字的可见性 2.6.2 使用其他组件 2.6.3 static关键字 2.7 我们的第一个Java程序 2.8 注释和嵌入文档 2.8.1 注释文档 2.8.2 具体语法 2.8.3 嵌入 2.8.4 @see:引用其他类 2.8.5 类文档标记 2.8.6 变量文档标记 2.8.7 方法文档标记 2.8.8 文档示例 2.9 编码样式 2.10 总结 2.11 练习 第3章 控制程序流程 3.1 使用Java运算符 3.1.1 优先级 3.1.2 赋值 3.1.3 算术运算符 3.1.4 自动递增和递减 3.1.5 关系运算符 3.1.6 逻辑运算符 3.1.7 按位运算符 3.1.8 移位运算符 3.1.9 三元if-else运算符 3.1.10 逗号运算符 3.1.11 字串运算符 3.1.12 运算符常规操作规则 3.1.13 造型运算符 3.1.14 Java没有“sizeof” 3.1.15 复习计算顺序 3.1.16 运算符总结 3.2 执行控制 3.2.1 真和假 3.2.3 反复 3.2.6 中断和继续 3.2.7 切换 3.3 总结 3.4 练习 第4章 初始化和清除 4.1 由构建器保证初始化 4.2 方法过载 4.2.1 区分过载方法 4.2.2 主类型的过载 4.2.3 返回值过载 4.2.4 默认构建器 4.2.5 this关键字 4.3 清除:收尾和垃圾收集 4.3.1 finalize()用途何在 4.3.2 必须执行清除 4.4 成员初始化 4.4.1 规定初始化 4.4.2 构建器初始化 4.5 数组初始化 4.5.1 多维数组 4.6 总结 4.7 练习 第5章 隐藏实施过程 5.1 包:库单元 5.1.1 创建独一无二的包名 5.1.2 自定义工具库 5.1.3 利用导入改变行为 5.1.4 包的停用 5.2 Java访问指示符 5.2.1 “友好的” 5.2.2 public:接口访问 5.2.3 private:不能接触 5.2.4 protected:“友好的一种” 5.3 接口与实现 5.4 类访问 5.5 总结 5.6 练习 第6章 类再生 6.1 合成的语法 6.2 继承的语法 6.2.1 初始化基础类 6.3 合成与继承的结合 6.3.1 确保正确的清除 6.3.2 名字的隐藏 6.4 到底选择合成还是继承 6.6 递增开发 6.7 上溯造型 6.7.1 何谓“上溯造型”? 6.8 final关键字 6.8.1 final数据 6.8.2 final方法 6.8.3 final类 6.8.4 final的注意事项 6.9 初始化和类装载 6.9.1 继承初始化 6.10 总结 6.11 练习 第7章 多形性 7.1 上溯造型 7.1.1 为什么要上溯造型 7.2 深入理解 7.2.1 方法调用的绑定 7.2.2 产生正确的行为 7.2.3 扩展性 7.3 覆盖与过载 7.4 抽象类和
面向对象系统分析与设计课件及复习资料 为老师上课用课件和复习指导 内容包括: 1.3 uml概述 1.3.1 uml简史 1.3.2 uml概貌 1.3.3 uml的特点和用途 第2章 面向对象的软件开发过程 2.1 rational统一过程 2.1.1 项目开发阶段 2.1.2 过程成分 2.1.3 螺旋上升式开发 2.1.4 rup过程产物 2.1.5 rup的特点 . 2. 2 项目开端阶段 2.3 精化阶段 2.3.1 问题领域分析 2. 3.2 建立系统架构 2.3.3 开发风险处理 2.3.4 构建规划 2. 4 系统构建 2. 5 系统提交 2. 6 循环节的生命周期活动 第3章 uml语言 3. 1 uml语言结构 3. 2 无模型 3.3 符号与图形 3.3.1 图形符号 3.3.2 语义规则 3.4 图与模型组织 3.4.1 模型组织 3.4.2 图 3.4.3 视图 3.5 公共机制 3.6 扩展机制 3.6.1 构造型 3.6.2 标记值 3.6.3 约束 第4章 use case图 4.1 概述 4. 2 活动者 4.2.1 系统范围与系统边界 4.2.2 活动者 4.2.3 活动者的确定 4.3 use case 4.3.1 use case概念 4.3.2 业务use case与系统use case 4.3.3 use case图 4.4 use case的联系 4.4.1 泛化关联 4.4.2 使用关联 4.4.3 包含关联 4.4.4 扩展关联 4.5 use case图的应用 4.5.1 use case的确定 4.5.2 建立use case模型 第5章 对象类图与对象图 5.1 对象类图 5.1.1 对象类 5.1.2 属性 5.1.3 操作 5.2 对象类的关联 5.2.1 对象类的关联 5.2.2 自返关联、二元关联与n元关联 5.2.3 关联的约束 5.3 聚合与组合 5.3.1 聚合 5.3.2 组合 5.4 泛化 5.4.1 泛化/特化 5.4.2 继承 5. 3 重载与多态性 5.5 依赖 5.6 对象图 5.6.1 对象 5.6.2 对象图 5. 7 接口 5.8 对象类的高级概念 5.8.1 抽象类 5.8.2 参数对象类 5.8.3 型与实现对象类 5.8.4 导出属性与导出关联 5. 9 对象类图的应用 5.9.1 对象类图的建立 5.9.2 模型景象与粒度控制 5.9.3 数据库建模 5.9.4 例外情况建模 第6章 交互图 6. 1 顺序图 6.1.1 顺序图的组成 6.1.2 对象的创建与销毁 6.1.3 同步消息与异步消息 6.1.4 分支 6.1.5 循环 6.1.6 自调用与回调 6. 2 协同图 6. 2. 1 协同图的组成 6. 2.2 说明层与实例层 6. 3. 3 对象的创建与销毁 6. 2. 4 同步消息与异步消息 6. 2. 5 多对象 6.2.6 自调用与回调 6.3 协同 6.3.1 概述 6.3.2 use case与协同 6.3.3 参数化协同 6.4 交互图的应用 第7章 状态图 7.1 状态机 7.2 状态图 7.3 状态 7.3.1 概述 7.3.2 组合状态 7.3.3 顺序状态 7.3.4 历史状态 7.4 转移 7. 4. 1 事件 7. 4. 2 条件 7.4.3 动作 7.4.4 转移的类型 7.5 并发状态图 7.5.1 并发子状态 7.5.2 同步 7.6 状态图的应用 第8章 活动图 8.1 概述 8. 2 活动图的基本元素 8.2.1 动作状态与活动状态 8.2.2 动作流 8.2.3 泳道 8.2.4 对象流 8. 3 活动分解 8.4 并发 8.4.1 并发与同步 8.4.2 条件线程 8.4.3 同步状态 8.4.4 动态并发 8. 5 活动图的应用 8. 5. 1 用途 8. 5. 2 工作流建模 第9章 包图 9. 1 包的语义和表示 9. 2 包的嵌套 9.3 标准构造型 9. 2 包的联系 9. 2. 1 依赖与输入依赖 9.2.2 泛化 9. 3 包图 9.4 包图的应用 9.4.1 包图的建立 9.4.2 系统建模 9.4.3 开发跟踪 第10章 物理图与对象约束语言(ocl) 10.1 组件图 10.1.1 组件 10.1.2 组件的种类 10.1.3 组件的联系 10.1.4 组件图的应用 10.2 配置图 10.2.1 节点 10.2.2 节点的联系 10.2.3 配置图的应用 10.3 对象约束语言(ocl) 10.3.1 标准型 10.3.2 表达式 10.3.3 对象性质的约束 第11章 软件开发工具rational rose 11.1 rational rose的主要功能 11.1.1 对面向对象模型的支持 11.1.2 对螺旋上升式开发过程的支持 11.1.3 对往返工程的支持 11.1.4 对团队开发的支持 11.1.5 对工具的支持 11.2 rational rose的使用 11.2.1 系统主菜单窗口 11.2.2 模型与工作方式的组织 11.2.3 use case视图 11.2.4 逻辑视图 11.2.5 组件视图 11.2.6 配置视图 第12章 简易教学管理系统的分析与设计 12.1 系统需求 12.2 分析问题领域 12.2.1 确定系统范围和系统边界 12.2.2 定义活动者 12.2.3 定义use case 12.2.4 绘制use case图 12.2.5 绘制主要交互图 12.3 静态结构模型 12.3.1 建立对象类图 12.3.2 建立数据库模型 12.3.3 建立包图 12.4 动态行为模型 12.4.1 建立顺序图 12.4.2 建立协同图 12.4.3 建立状态图 12.4.4 建立活动图 12.5 物理模型 12.5.1 建立组件图 12.5.2 建立配置图

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值