Here is the result of our in-class design session for a multiagent system Classes ------- Agent Environment Action Percept State KnowledgeBase Agent ----- public void see(Percept p) perceive enviroment updates internal state? public Action selectAction() gets agent to select its next action based on internal state Environment -------------- protected State state protected Vector agents public void addAgent(Agent a) public void start(State s) sense/act loop calls isComplete(), getPercept(), and updateState() protected void updateState(Action a, State s) update member field state protected Percept getPercept(Agent a) uses state to determine percept protected boolean isComplete() returns true if execution of environment should terminate Action -------- public State execute(Agent a, State s) result of an agent executing action given state s Percept ------- public Percept(State s, Agent a) constructs a percept for a state from the point of view of a particular agent