java作业-代理设计模式和异常处理
假设教学过程需要任课教师和助教参与,教师的教学工作是上课,助教的教学工作是批改作业和收作业,完成的教学过程包括:助教先批改完所有的作业任课教师才会上课,上完课后助教要收取所有学生的作业。具体要求:
1、用代理模式实现(参考书上上网的例子),提示:定义一个教师接口(里面包含一个上课的抽象方法),任课教师实现该接口,模拟上课,助教是代理,也实现上课这个方法,但同时要扩展批改作业和收取作业这两个方法。
2、设计两个异常类,一个是助教未批改完作业,则抛出未批改作业异常,任课教师停止上课;一个是收取作业时,如果有未交作业的同学,则抛出未交作业异常。
修改后的版本 假设班上有10个人
module Teach {
}
接口类
package teach;
public interface Tea {
void gotoclass();
}
教师类
package teach;
public class Teacher implements Tea{
public void gotoclass() {
System.out.println("开始上课");
}
}
助教类
package teach;
public class Proxy implements Tea{
Tea x;
private int sum1,sum2;
public int getSum1() {
return sum1;
}
public void setSum1(int sum1) {
this.sum1 = sum1;
}
public int getSum2() {
return sum2;
}
public void setSum2(int sum2) {
this.sum2 = sum2;
}
public Proxy(Tea x) {
this.x=x;
}
public void collect() throws collectexception{
if(sum2>10)
System.out.println("收齐作业了!");
else
throw new collectexception("作业没有收齐");
}
public void check() throws checkexception{
if(sum1>10)
System.out.println("改完作业了!");
else
throw new checkexception("作业没有改完");
}
public void gotoclass() {
try {
this.check();
this.x.getClass();
this.collect();
}
catch(collectexception e) {
//System.out.println(e.getMessage());
e.printStackTrace();
}
catch(checkexception e) {
//System.out.println(e.getMessage());
e.printStackTrace();
}
finally {
System.out.println("收回");
}
}
}
自定义异常
package teach;
public class collectexception extends Exception{
public collectexception(String s) {
super(s);
}
}
package teach;
public class checkexception extends Exception{
public checkexception (String s) {
super(s);
}
}
测试类
package teach;
import java.util.Scanner;
public class Test {
public static void main(String[] args) {
Proxy person = new Proxy(new Teacher());
Scanner sc=new Scanner(System.in);
System.out.println("输入改的作业数 和收的作业数");
int sum1=sc.nextInt();
int sum2=sc.nextInt();
person.setSum1(sum1);
person.setSum2(sum2);
person.gotoclass();
}
}