java作业-代理设计模式和异常处理

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();
	}

}

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值