重新发,3月30日,第五天(上)

五、自定义异常类
在Java中,已经提供了很多的异常类的定义,但是在开发一些个人的系统中可能需要使用一些特殊的个性化的异常类的操作,那么此时就可以通过继承Exception类的方式完成一个自定义异常类的操作。
例如:
class MyException extends Exception{ // 继承Exception,表示一个自定义异常类
public MyException(String msg){
  super(msg) ; // 调用Exception中有一个参数的构造
}
};
public class ExceptionDemo14{
public static void main(String argsp[]){
  try{
   throw new MyException("自己定义,抛着玩的。") ;
  }catch(Exception e){
   e.printStackTrace() ;
  }
}
};

F 在JDK 1.4的时候增加了assert关键字,表示断言。
格式如下:
assert 表达式 【: 自定义的错误提示信息】;
如果要启动assert检查,那么在运行的时候需要增加参数“-ea”
例如:
public class AssertDemo{
public static void main(String args[]){
  int x = 30 ;
  assert x==10 : "操作的结果不正确" ; // 断言x的取值肯定是10
}
};
运行命令:java  –ea  AssertDemo
一般assert是在测试当中用的。
G 一个项目一般都是有多人完成的,这样的话就可能出现命名的冲突问题。这个时候,就可以采用包,为自己的东西进行打包。包的概念就如同文件夹一样。当然文件夹也可存在命名相同的风险,只不过呢,嵌套多层的文件夹命名都相同的可能性就减少很多,而且可以采用多特的命名风格,来避免名字相同,比如在包的命名时加上域名、主机名等唯一性较强的名称前缀。
一、包的定义和使用
在Java程序中包的定义格式:package 包名称.子包名称 ;
例如:
package org.lxh.demo ; // 定义包
public class Hello{
public static void main(String args[]){
  System.out.println("Hello World!!!") ;
}
};
说明:
①如果想要根据package的定义自动生成文件夹,则可以在编译的时候,加上“-d  生成目录”参数。
例如:javac  –d  .  Hello.java   ( “.”示当前目录)
②那么访问Hello类的时候必须使用以下的格式进行,例如java  org.lxh.demo.Hello
二、包的导入
如果现在一个包的类要使用另外一个包中的类,那么就需要使用import指令,进行包的导入操作,语法如下:import 包.类 ;
提示:
①如果要用到另一个包的诸多类,那么如果一一采用import语句导入,很是麻烦,这个时候可以采用import  包.*;
②如果两个包中的类型完全相同,那么在使用的时候,在类的前面加上“包.类名”的完整限定词;
例如:
package org.lxh.demoa ; // 定义包
public class Hello{
public void print(){
  System.out.println("Hello World!!!") ;
}
};

package org.lxh.democ ; // 定义包
public class Hello{
public void printInfo(){
  System.out.println("www.mldnjava.cn") ;
}
};
package org.lxh.demob ; // 定义包
import org.lxh.demoa.* ; // 导入包
import org.lxh.democ.* ; // 导入包
public class TestHello{
public static void main(String args[]){
  //new Hello().print() ;//编译错误,无法分辨
         org.lxh.demoa.Hello he = new org.lxh.demoa.Hello() ;
  he.print() ;
}
};
说明:因为这两个包中的类名相同,有都是public class,所以其文件名都是Hello.java,那么不能保存在同一个文件夹,可以将其中org.lxh.democ包先在别处编译,然后把democ文件夹拷贝到demoa 和demob 所在的org.lxh文件夹中。
三、静态导入
在JDK 1.5之后提供了一种新的导入语法 —— 静态导入,如果一个包中定义类的方法是static方法,则可以使用静态导入的方式完成操作。
import  static  包.类.*;         //下面使用此方法可以不加类名修饰
import  static  包.类.静态方法;  //下面使用此方法的时候可以不加类名修饰
import  包.类;      //下面使用此方法必须加类名修饰
import  static  包.类;         //错误,使用static静态导入必须导入到方法
例如:
package mldn.util;
public class Math{
public static void add(int i ,int j){
  System.out.println(i + j) ;
}
public static void sub(int i ,int j){
  System.out.println(i - j) ;
}
public static void mul(int i ,int j){
  System.out.println(i * j) ;
}
public  void div(int i ,int j){
  System.out.println(i / j) ;
}
}
package mldn.test;
import static mldn.util.Math.*;
public class TestMath {
public static void main(String[] args) {
  add(10, 20);
}
}
H 在一般的开发中,往往会开发出很多的类,那么这些类如果最终交付给用户去使用的话,分散的给肯定会比较麻烦,那么此时,就可以将这些类打成一个jar包的形式,通过一个压缩包的方式传递给客户端。
一般常用的操作参数:
• -c:表示创建新的jar文件
• -v:表示生成详细的输出
• -f:表示用户自己指定生成的jar文件的文件名称
jar命令的格式:
jar  -cvf  jar包名称.jar  要打包的包名
例如之前的org包进行打jar包的命令格式: jar  -cvf  my.jar  org
注意:如果把文件进行了jar打包,那么在运行的时候,就需要添加一个classpath路径,让其到jar包中找class文件。例如:set classpath=.;D:\testjava\my.jar  (表示在当前目录或D:\testjava\my.jar中找class文件)

I 在Java中提供了大量的系统开发包,这些包:
1、 java.lang,此包中包含了各种常用的类,例如:String,此包属于自动导入,但是在JDK 1.0的时候此包必须手工导入。
2、 java.lang.reflect:此包为反射机制包,是整个Java乃至整个Java世界中最重要的包,此包可以完成大量的低层操作。
3、 java.util包:工具包,如果把此包掌握的非常清楚,则可以方便的做各种设计,各种开发。
4、 java.io包:IO操作
5、 java.net:网络编程
6、 java.sql:数据库编程
7、 java.text:国际化程序的应用

J 在Java中有四级访问权限:
• public:最大的,公共的,共同访问的
• private:最小的,只能在本类中访问
• defalut:默认的,只能在本包中访问
• protected:在本包,以及不同包的子类中可以访问。
No. 作用域 private default protected public
1 本类 √ √ √ √
2 同一包的类 × √ √ √
3 不同包的子类 × × √ √
4 不同包的非子类 × × × √

K 在java中所有的属性、类都是有命名规范的,开发时必须严格的按照命名规范的要求开发代码:
1、 类的命名:每个单词的首字母大写
2、 方法的命名:第一个单词的首字母小写,之后每个单词的首字母大写
3、 属性的命名:第一个单词的首字母小写,之后每个单词的首字母大写
4、 常量的命名:所有的单词字母大写
5、 包的命名:所有的单词字母小写
L 可以直接从www.eclipse.org下载到Eclipse的最新版本,最新的版本是3.4.1。
一个Eclipse本身只具备以下的开发工具:
  • JDT:Java的开发环境
  • Junit:进行单元测试
  • CVS客户端的支持,可以用于连接CVS服务器端
  • 插件开发
Eclipse本身只是支持java程序的开发,对于一些其他的应用开发需要下载相应的插件,这些插件是收费的。
一、JDT的使用
Eclipse解压缩之后,可以直接通过eclipse.exe启动Eclipse的开发平台。
1、选择工作空间workspace

2、新建项目

输入项目名称即可,其他的默认。
3、新建包及相应的类
项目建立完成之后,就可以在此项目中建立所需要的操作类,Eclipse本身自带了随笔提示功能。

4、保存和运行
程序保存之后,会自动将其生成class文件,并且可以直接在工具中运行此程序。
直接在类上或者在代码的空白处点鼠标右键,选择(Run AS…)运行,运行为Java应用程序(Java Application)即可。
5、快捷方式
(1)代码的格式化:CTRL + SHIFT + F
(2)代码纠正:CTRL + 1
如果出现编译错误,会在错误的地方自动用红色波浪型下划线标记;
警告用黄色波浪型下划线标记
6、自动生成setter、getter、构造方法
在需要生成处,点击右键SourceGenerate  Getters and Setters…选择相应的属性OK
在需要生成处,点击右键SourceGenerate  Constructor using Fields…选择相应的属性作为参数,如果无参就不要选OK
7、调试
在Eclipse的JDT中最重要的还有就是可以进行debug调试;
(1)首先要设置调试的断点
(2)按照调试的方式运行程序。
直接在类上或者在代码的空白处点鼠标右键,选择(Debug AS…)运行,运行为Java应用程序(Java Application)即可。
(3)询问是否以调试的方式运行,单击yes即可

(4)调试的时候有三种方式:
• 单步跳入Step Into(F5):进入到类之中观察代码的运行操作
• 单步跳过Step Over(F6):只在当前的代码中执行
• 恢复执行Resume(F8):后面的不再调试了,直接运行完毕
• 停止执行Teminate(Ctrl + F2):停止执行
二、Junit测试工具
程序的测试从软件工程上讲分为两种:黑盒测试、白盒测试。
• 黑盒测试是测试功能的
• 白盒测试是测试性能和代码的
此工具是专门编写测试用例的。
操作步骤:
(1)FileNewJUnit Test Case
(2)选择要用的JUnit的版本,并创建测试用例(包名、类名、选择要测试的类)
假设要测试的类及方法为:
package mldn.util;
public class Math{
public static  int add(int i ,int j){
  return i + j ;
}
}

输入完要测试的类后,点击【Next】选择要测试的类的方法

选择【Finish】
(3)导入JUnit的包

如果没有此jar包根本就无法完成测试,所以此处选择“OK”
(4)编写测试用例的代码
例如:
package mldn.JUnit;
import junit.framework.Assert;
import org.junit.Test;
import mldn.util.Math;
public class JUnitMath {
@Test
public void testAdd() {
  Assert.assertEquals(Math.add(12,2),14);
}
}
(5)保存,直接在测试用例.java文件上或者在代码的空白处点鼠标右键,选择(Run AS…)运行,运行为JUnit Test
(6)如果测试成功,则会显示Green Bar,表示一切正常,如果测试失败的话,则会返回Red Bar,表示失败。
三、CVS客户端和CVS服务器
Eclipse本身只是提供了一个CVS的客户端,而如果要想使用的话,则必须单独安装CVS的服务器端,服务器端的程序使用wincvs即可。CVS的安装本身非常的简单,安装完成之后会询问是否重新启动计算机,现在是否重新启动没什么影响。
1、配置CVS服务器
CVS服务器端最重要的就是配置的的操作:
(1)在d盘见一个文件夹“cvsnt_mypro”,此文件夹中将保存全部的上传项目,之后将此目录在CVS上进行配置。
(2)启动CVS服务器
(3)设置目录

单击【Add】按钮

选择刚才建立的上传目录,此时,cvs的提交目录就完成了。
(4)设置兼容性选项

以上的两个“√”必须选择上。如果不选择,则无法使用客户端连接。
2、提交项目
回到Eclipse上,选择要提交的项目  Team  Share Project  将项目提交到CVS服务器之中。
(1)在服务器的信息上输入要连接的CVS服务器的IP地址、上传的CVS目录名称、服务器的用户名和密码

(2)使用项目的名称作为CVS上的保存名称。

(3)输入一些注释等,直接下一步,完成即可
3、之后,其他的开发者就可以直接从CVS服务器上将需要的项目检出“Check Out”。
通过文件  导入  从CVS上将项目导入回来
(1)选择导入源

(2)此时从一个已有的连接中选择CVS服务器的连接。

(3)从CVS服务器上选择要恢复的项目

(4)单击【Finish】即可


今天学习的包的概念和c#中的命名空间类似,还是比较好理解的。
觉得今天学习的内容当中,异常处理部分是最清楚的,这个以前听c#视频的时候,不是很明白,现在知道这几个关键字的用法了。
关于访问权限也理解了。
关于设计模式,明白意思,但是不知道具体怎么应用。
Eclipse的JDT和CVS服务器的操作基本没问题,不过关于这个JUnit不是很明白,如何编写这个测试用例一点概念都没有。


你可能感兴趣的:(eclipse,应用服务器,JUnit,软件测试,cvs)