高分求设计模型(类模型) 你究竟是要源代码还是UML图?从你的描述来看可以用消息驱动的BEAN实现。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 UML图也好,最好有一个示例的源码看看.很简单的就行.只要模型.BEAN不行,应因这是一个应用,严格来说是一个实时控制系统.其实就是消息与动作如何让控制部分进行控制时不造成递归.我设计的几个模型都是这样.看看我这个例子.如何改成不递归的模型.package autothreadex;/** * 此处插入类型说明。 * 创建日期:(2002-7-30 23:54:13) * @author:Administrator */public class ThreadCtrl { public OrderCenter Lorder; public Robot Lrobot1; public Robot Lrobot2;/** * ThreadCtrl 构造子注解。 */public ThreadCtrl() { super();}/** * 启动应用程序。 * @param args 命令行自变量数组 */public static void main(java.lang.String[] args) { //在此处插入用来启动应用程序的代码。 Robot Lrobot1= new Robot(); Robot Lrobot2= new Robot(); OrderCenter Lorder=new OrderCenter(); Lrobot1.Order="2"; Lrobot2.Order="1"; Lrobot1.Lorder=Lorder; Lrobot2.Lorder=Lorder; Lorder.LRobot1=Lrobot1; Lorder.LRobot2=Lrobot2; Lrobot1.start();}}package autothreadex;/** * 此处插入类型说明。 * 创建日期:(2002-7-31 0:02:12) * @author:Administrator */public class Robot { public OrderCenter Lorder; public java.lang.String Order;/** * Robot 构造子注解。 */public Robot() { super();}/** * 此处插入方法说明。 * 创建日期:(2002-7-31 0:09:12) */public void start() { Lorder.sendOrder(Order); }}package autothreadex;/** * 此处插入类型说明。 * 创建日期:(2002-7-30 23:58:31) * @author:Administrator */public class OrderCenter { public Robot LRobot1; public Robot LRobot2; /** * OrderCenter 构造子注解。 */public OrderCenter() { super();}/** * 此处插入方法说明。 此方法用来解释指令并用出相应的动作 * 创建日期:(2002-7-30 23:59:42) * @param Order java.lang.String */public void sendOrder(String Order) { Times++; if(Times<5000) { if (Order.equals("2")) { LRobot2.start(); } else { LRobot1.start(); } }else{ System.out.print("ok"); } } public long Times=1;}这是递归的模型,无法长时工作,到一定的次数就出错了. 这是不是一个交替调度的问题?,能否在OrderCenter离开一个服务线程实现对机器人的交替调度?public class OrderCenter implements Runnable{.... public void run(){ boolean mySwitch=false; while(true){ if(mySwitch){ LRobot1.process(); }else{ LRobot2.process(); } mySwitch=!mySwitch; } }... 我今天找了一个JAV智深的人士,他分析后说,这是UNIX和WINDOWS不同的地方,JAVA中实现这种方式,很难,因为JAVA不是建立在消息机制上的.各高手,有没有办法解决? 其实说简单了就是多个对象实例之间的消息异步传递问题.其实我也想过一些,就是模拟WINDOWS的消息循环和消息对列来做.但这种做法,效率极低.高手们,开动脑筋吧!加油.来学习的帮忙UP啊. 你上面的代码会使OrderCenter无法接受到ROBOT的消息只是能控制他们,我的要求是互相间能互发消息.并且OrderCenter可以控制其它对象的行为. 绝对的实时是不可能的,即使unix,只要没有多个指令流水线(多处理器,或者在但处理器内集成多条流水线)cpu时间就得分片,但即便有多条流水线由于windows不支持进程方式,所以还是不如unix。消息队列,以不同的线程来相应不同的消息,可能这已经时迄今为止实时性最好的 java+windows 方案了.另外从软件工程的角度来说,“实时”这个词表示的也只是一种时间约束。如:b.responseTime<10ms,主要还看你的需求 BoxLayout 如何使用 XMMP 协议与 openfire交互 如何最快的判断一个数字(或字符串)是否是一个集合中的一员?谢谢大家。 JTextArea 对齐方式 我是否应该熟悉java.swing或者java.awt这些包 有一年工作经验的java程序员现在在广州找工作景况如何???大概薪水有多少??? 很小的问题,相信你一定能回答 如何改变画笔的粗细?setStroke(Stroke s)? frame里面一个按钮点了执行另外一个类程序的问题 websphere3.5安装不上,高手帮忙(急!!!)。 谁有服务设置程序代码?在线。急200分 怎么做帮助文档???
BEAN不行,应因这是一个应用,严格来说是一个实时控制系统.
其实就是消息与动作如何让控制部分进行控制时不造成递归.
我设计的几个模型都是这样.看看我这个例子.如何改成不递归的模型.
package autothreadex;/**
* 此处插入类型说明。
* 创建日期:(2002-7-30 23:54:13)
* @author:Administrator
*/
public class ThreadCtrl {
public OrderCenter Lorder;
public Robot Lrobot1;
public Robot Lrobot2;
/**
* ThreadCtrl 构造子注解。
*/
public ThreadCtrl() {
super();
}
/**
* 启动应用程序。
* @param args 命令行自变量数组
*/
public static void main(java.lang.String[] args) {
//在此处插入用来启动应用程序的代码。
Robot Lrobot1= new Robot();
Robot Lrobot2= new Robot();
OrderCenter Lorder=new OrderCenter();
Lrobot1.Order="2";
Lrobot2.Order="1";
Lrobot1.Lorder=Lorder;
Lrobot2.Lorder=Lorder;
Lorder.LRobot1=Lrobot1;
Lorder.LRobot2=Lrobot2;
Lrobot1.start();
}
}package autothreadex;/**
* 此处插入类型说明。
* 创建日期:(2002-7-31 0:02:12)
* @author:Administrator
*/
public class Robot {
public OrderCenter Lorder;
public java.lang.String Order;
/**
* Robot 构造子注解。
*/
public Robot() {
super();
}
/**
* 此处插入方法说明。
* 创建日期:(2002-7-31 0:09:12)
*/
public void start() {
Lorder.sendOrder(Order);
}
}package autothreadex;/**
* 此处插入类型说明。
* 创建日期:(2002-7-30 23:58:31)
* @author:Administrator
*/
public class OrderCenter {
public Robot LRobot1;
public Robot LRobot2;
/**
* OrderCenter 构造子注解。
*/
public OrderCenter() {
super();
}
/**
* 此处插入方法说明。
此方法用来解释指令并用出相应的动作
* 创建日期:(2002-7-30 23:59:42)
* @param Order java.lang.String
*/
public void sendOrder(String Order) { Times++;
if(Times<5000)
{
if (Order.equals("2")) {
LRobot2.start();
} else {
LRobot1.start();
}
}else{
System.out.print("ok");
}
}
public long Times=1;}这是递归的模型,无法长时工作,到一定的次数就出错了.
public class OrderCenter implements Runnable{
.... public void run(){
boolean mySwitch=false;
while(true){
if(mySwitch){
LRobot1.process();
}else{
LRobot2.process();
}
mySwitch=!mySwitch;
}
}
...
JAVA中实现这种方式,很难,因为JAVA不是建立在消息机制上的.
各高手,有没有办法解决?
其实说简单了就是多个对象实例之间的消息异步传递问题.其实我也想过
一些,就是模拟WINDOWS的消息循环和消息对列来做.但这种做法,效率极低.高手们,开动脑筋吧!加油.
来学习的帮忙UP啊.
只是能控制他们,我的要求是互相间能互发消息.并且
OrderCenter可以控制其它对象的行为.
另外从软件工程的角度来说,“实时”这个词表示的也只是一种时间约束。
如:b.responseTime<10ms,主要还看你的需求