java作业——代理模式和异常处理

java作业——代理模式和异常处理

假设教学过程需要任课教师和助教参与,教师的教学工作是上课,助教的教学工作是批改作业和收作业,完成的教学过程包括:助教先批改完所有的作业任课教师才会上课,上完课后助教要收取所有学生的作业。具体要求:

1、用代理模式实现(参考书上上网的例子),提示:定义一个教师接口(里面包含一个上课的抽象方法),任课教师实现该接口,模拟上课,助教是代理,也实现上课这个方法,但同时要扩展批改作业和收取作业这两个方法。

2、设计两个异常类,一个是助教未批改完作业,则抛出未批改作业异常,任课教师停止上课;一个是收取作业时,如果有未交作业的同学,则抛出未交作业异常。

本代码没有使用代理工厂类,直接由助教代理实现的。废话较多,看看就好~

package Teaching_process;

//教学的接口,具体操作由Teacher类实现
public interface T_USB {
	public void teach_menthod();//定义抽象的教学方法
}

package Teaching_process;

//任课教师实现T_USB接口,模拟上课
public class Teacher implements T_USB{
	
	//具体实现教学方法
	public void teach_menthod()
	{
		System.out.println("教师:认真上课ing");
	}
}

package Teaching_process;

import java.util.Scanner;

//助教代理上课,实现上课,并扩展收发作业功能
public class Assistant implements T_USB{
    private T_USB t_USB;
    public Assistant(T_USB t_USB)
    {
    	this.t_USB=t_USB;                                                 
    }
	Scanner input=new Scanner(System.in);
	
    //代理上课,实现上课功能
	public void teach_menthod() {
		 System.out.println("我是助教,我辅助上课");
		 int n;
		 System.out.println("教师:作业改完了?\n(1)改完了 (2)没改完");
		 n=input.nextInt();
		 int fg;//判断老师是否会上课
		 fg=Correcting_work(n);
		 if(fg==1)
		 {
			 t_USB.teach_menthod();//教师上课
			 Retracting_work();
			 
		 }
		 else
		 {
			 System.out.println("教师:我不上了...\n\n");
		 }
	}
	
	//批改作业
	public int Correcting_work(int n)
	{
		try 
		{
			if(n==1)
			{ 
				System.out.println("助教:批改完毕,可以上课");
				return 1;
			}
			else 
			{
				 throw new MyException("\n助教:还没改完,让我先改改");
			}
	   }
	   catch(MyException e)
		{
		   System.out.println(e);
		   return 0;
		}
		
	}
	   
	
	//收作业
	public void Retracting_work()
	{
		System.out.println("助教:课上完了,把作业交上来");
		int n;
		System.out.println("(1)收齐了 (2)没收齐");
		n=input.nextInt();
		try {
			if(n==1) System.out.println("收齐了,下课\n\n");
			else
			{
				throw new MyException("\n没收齐,拖堂十分钟\n\n");
			}
		}catch(MyException e)
		{
			System.out.println(e);
		}
	}
}
package Teaching_process;

//测试类
public class Text {

	public static void main(String[] args) {
		// TODO 自动生成的方法存根
		Assistant cs1=new Assistant(new Teacher());
		while(true)
		{
			cs1.teach_menthod();
		}
		
	}

}

package Teaching_process;

public class MyException extends Exception {
    public MyException(String s)
    {
    	super(s);
    }
}

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值