教师布置作业给学生和家长-Java

教师布置作业给学生和家长-Java

题目:教师,学生,家长。教师布置作业给学生和家长。每当教师布置一个道题时,就要自动通知到所有的学生和家长把该题记下来,然后在布置下一道题。要求程序扩展性,新学生或者家长可以随时加入这个班级,可以随时转学取消作业通知。(提示:模拟天气预报的案例,使用观察者模型)
具体代码如下:
Observer.java

public interface Observer {
	public void update(String info);
}

Subject.java

public interface Subject {
	public void registerObserver(Observer o);
    public void removeObserver(Observer o);
    public void notifyObservers(); 
}

Parent.java

public class Parent implements Observer {
	private TeacherSubject t;
    //学生的姓名,用来标识不同的学生对象
    private String name;
    //构造器用来注册观察者
    public Parent(String name,TeacherSubject t) {
        this.name=name;
        this.t = t;
        //每新建一个学生对象,默认添加到观察者的行列
        t.registerObserver(this);;
    }
	public void update(String info) {
		 System.out.println("家长"+name+"得到作业:"+info);
	}
}

StudentObserver.java

public class StudentObserver implements Observer {
	private TeacherSubject t;
    //学生的姓名,用来标识不同的学生对象
    private String name;
    //构造器用来注册观察者
    public StudentObserver(String name,TeacherSubject t) {
        this.name=name;
        this.t = t;
        //每新建一个学生对象,默认添加到观察者的行列
        t.registerObserver(this);;
    }
	public void update(String info) {
		 System.out.println("学生"+name+"得到作业:"+info);
	}
}

TeacherSubject.java

import java.util.ArrayList;
import java.util.List;

public class TeacherSubject implements Subject {
	//用来存放和记录观察者
    private List<Observer> observers=new ArrayList<Observer>();
    //记录状态的字符串
    private String info;
	
    public void notifyObservers() {
		for (int i = 0; i < observers.size(); i++) {
            Observer observer = (Observer)observers.get(i);
            observer.update(info);
        }
	}
    
	public void registerObserver(Observer o) {
		observers.add(o);
	}

	public void removeObserver(Observer o) {
		int i = observers.indexOf(o);
        if (i >= 0) {
            observers.remove(i);
        }
	}
	 //布置作业的方法,在方法最后,需要调用notifyObserver()方法,通知所有观察者更新状态
    public void setHomework(String info){
        this.info=info;
        System.out.println("今天的作业是"+info);
        this.notifyObservers();
    }
}

TestObserver.java

public class TestObserver {
	public static void main(String[] args) {
		TeacherSubject teacher=new TeacherSubject();
		StudentObserver s=new StudentObserver("张三", teacher);
		StudentObserver LiSi=new StudentObserver("李四", teacher);
        StudentObserver WangWu=new StudentObserver("王五", teacher);
		Parent zparent=new Parent("张大三", teacher);
		Parent lparent=new Parent("李大四", teacher);
		 teacher.setHomework("第二页第六题");
	     teacher.setHomework("第三页第七题");
	     teacher.setHomework("第五页第八题");
	}
}
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值