基于 Java 的对象模型消息机制实现

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

—72—

第15期

ol 2010年8月

Au 基于Java 的对象模型消息机制实现

石博天1,高玉金2,朱 凯1

(1. 北京市八一中学,北京 100080;2. 北京理工大学计算机学院,北京 100081)

摘 要:Java 语言标准不提供消息,使得面向对象模型中消息机制的实现十分不便。针对上述问题,利用Java 的接口、继承及多态机制,实现一种风格与微软基础类库中framework 的消息机制相似的对象模型消息机制,将其应用于一款基于LEGO 机器人的协同式智能化多机器人系统,结果证明该消息机制具有合理性、有效性和易实现性。 关键词:Java 语言;消息;面向对象;LEGO 机器人

Implementation of Message Mechanism

for Object Model Based on Java

SHI Bo-tian 1, GAO Yu-jin 2, ZHU Kai 1

(1. Beijing Bayi High School, Beijing 100080; 2. School of Computer Science and Technology, Beijing Institute of Technology, Beijing 100081) 【Abstract 】Java language standard does not provide any message, which makes message mechanism in object-oriented model hard to implement. This paper uses interface, inheritance and polymorphism of Java to implement a message mechanism for object model, which is similar to that of framework in Microsoft Foundation Class(MFC). The mechanism is applied in a collaborative intelligent multi-robot system based on LEGO robot, and the result proves it is reasonable, effective and easy to implement. 【Key words 】Java language; message; object-oriented; LEGO robot

计 算 机 工 程 Computer Engineering 第36卷V .36 No.15 gust 2010

术与数据库· 文章编号:1000—3428(2010)15—0072—02

文献标识码:A

中图分类号:TP312

·软件技1 概述

面向对象技术能够简化建模过程的重要原因之一在于它将客观事物间的复杂相互作用抽象(简化)为消息的传递及被作用者对接收到的消息的处理。由于消息本身表现为简单的整数及参数,而面向对象环境往往提供了消息传递的机制,因此复杂的建模变得简单。

Java 语言是一种被广泛使用的面向对象通用程序设计语言,Java 没有对消息机制提供直接支撑,尽管可以使用函数模拟面向对象的消息机制,但与真正的面向对象消息机制相比,熟悉事件驱动程序的开发者仍然很难直接根据面向对象建模阶段的UML 模型完成程序的编写。

本文利用Java 的接口、继承及多态机制,借鉴文献[1]的回调函数思路,通过封装实现了Java 消息机制。该机制使软件开发人员能够直观地使用Java 语言标准语法实现面向对象模型,与采用try-catch 结构实现事件驱动程序模型[2]相比,本文的消息传递机制与人们所习惯的Visual Studio 中framework 的消息机制相似,便于在事件驱动程序设计中使用Java 语言。

2 基于Java 的消息机制

本文的Java 消息由消息模式、消息队列、消息处理函数

3个部分构成。

2.1 消息模式

消息模式可以理解为消息构成方式,例如在微软基础类库(Microsoft Foundation Class, MFC)中,消息模式由消息标识(预定义整数)及2个长整型参数构成。发送消息时,发送者将消息标识及相关参数发送给消息接收者(目标对象)即可。Java 不像C++那样可以在指针类型和长整数类型之间进行强制类型转换,所以,无法像MFC 那样通过将复杂类型参数的地址强制转换为长整型类型来进行复杂类型数据的传递,如果直接在Java 中采用MFC 的消息模式,这种消息模式的应用范围将十分有限,因此,本文将消息定义为一种特殊的对象,该对象一般只需有属性数据而无需成员函数,其内部结构如程序1中类CMessage 所示,每个消息都将是CMessage 类的一个实例。

程序1 本文所采用的消息模式

public class CMessage { public int m_nMessageID; public int m_nParam; public String m_sText;

public CMessage(int nID, int nParam, String sText) { m_nMessageID=nID; m_nParam=nParam; m_sText=sText; } public CMessage(CMessage msg) { m_nMessageID=msg.m_nMessageID;

m_nParam=msg.m_nParam; m_sText=msg.m_sText; } public int getMessageID() { return m_nMessageID; } public int getMessageParam() { return m_nParam; } public String getMessageText() { return m_sText; } public void setMessageID(int nMessageID) { m_nMessageID=nMessageID; } public void setMessageParam(int nParam)

作者简介:石博天(1991-),男,高中生,主研方向:计算机辅助教学,LEGO 多机器人系统;高玉金,讲师、博士;朱 凯,中学 一级教师

收稿日期:2010-01-30 E-mail :paulgyj@

相关文档
最新文档