基于J2EE的Java语言学习平台的系统架构如图1所示。系统采用C/S模式开发,客户端(Clients)和服务端(Servers)通过互联网进行
通信连接。基于J2EE的客户端程序主要提供Java语言学习的编程环境和实战练习服务。基于J2EE的服务器端程序主要提供用户管理服务、文件服务和逻辑检错服务,并包含四个数据库:用户数据库、用例数据库、完型填空数据库和试题数据库。数据库统一由基于J2EE的数据库操作程序进行规范管理。
2.1基于J2EE的Java语言学习平台的系统架构
客户端主要包括五个功能模块:用户登录、编译检错、逻辑检错、完型填空和面向对象编程辅助设计。服务器端主要包括三个功能模块:用户管理、数据库管理和逻辑检错服务。其中,面向对象编程辅助设计和逻辑检错是本系统最主要的两大功能。面向对象编程模块主要是向用户提供可视化类图编辑环境并能生成代码,同时也能根据用户写的代码相应地生成类图并展示类图的结构。着重突出了Java程
5
序的面向对象特点,让用户直观了解Java语言的特色。逻辑检错模块主要对客户端提交的Java语言源文件进行安全检测和编译运行,利用重定向技术和数据库管理技术对程序进行逻辑检测,最后将检测分析的结果反馈给客户端。
2.2基于J2EE的Java语言学习平台的系统模块
用户可以通过客户端学习Java语言的相关知识,在客户端提供的面向对象编程环境中编写程序,当用户编写了一个完整的程序后,通过代码自动转化为类图,并展示类图的结构。用户也可先设计类图然后通过类图自动生成代码框架,余下的代码由用户通过手动进行编写。当用户完成了代码的编辑
工作之后就通过编译检错功能来进行编译检错,并将编译结果显示在程序界面下的帮助栏内。若遇到了解决不了的错误,通过系统提供的编译错误的帮助功能,得到编译错误提示信息,改正程序的语法错误,得到可运行的程序,然后通过互联网将源程序代码提交服务器端进行逻辑检测,判断其程序的功能是否达到所需的要求,根据反馈信息,对原有程序进行相应修正,达到编译与功能的双重正确性。
第三章:第三章:面向对象编程模块
面向对象编程模块主要包含两个功能:第一是从通过程序获得类图:用户在编辑框里写出代码点击界面
6
上的生成类图就可以在界面上生成类图。具体实现
方案是:①模块先分析用户编写的Java源文件,调用Jdk里的javac编译声明,建立类程序的内部表示,包括类层次和“使用”关系。然后对源程序再进行词法分析,将结果与javac分析的结果比较和综合。得出相应的类的结构。②调用Java
doc从
源代码的
文档注释中获取用户的文档,把生成的类成员的信息保存在文档当中。③生成类图,用不同的箭头和连线表示类之间的关系。
第二是类图生成代码:将类图画在主窗口的面板上,将类与类之间的关系用箭头联系。并生成类属性对话框,在对话框里填写相应的辅助信息就可以生成相应的代码框架。模块设计主要包括四个子功能:①编程界面的实现,包括主菜单设计、工具栏的设计和控制面板的设计。②类图实现。在面板上表示的类图通过重写Java语言里的JLABEL实现,并在JLABEL里直接定义了句柄功能。通过调整句柄的位置实现类图的放大和缩小。③类与类之间连线的实现和箭头的实现,来可视化地表示类与类之间的关系,并由事先定义好的LineRenderer接口,在设置箭头的范围、位置、大小。④代码生成。读取用户输入信息,并添加注释信息,输出到控制面板上。通过对类图。我们得到了面向对象的编程模块统一视图。它遵循域模型相同的图解惯例。类图既显示操作名称也显示属性,表明了各部分之间的关系。它显示了系统分类器的静态结构;并为其它结构图提供了基本记号。
7
第四章:第四章:逻辑检错功能
系统提供的逻辑检错功能主要是向初学者提供功能完整性检测服务。对有些初学者来说,他根据试题的要求编完了一个程序,并在客户端编译通过了编译器,这个时候需要判断是否完成了设计所要求的功能。我们在服务器端设计了庞大的测试用例库,学生从服务器端的试题库读取相应的试题进行练习,我们把不同的试题进行了分类,对于不同的题目我们调用不同的测试用例进行检测,针对不同的程序采用不同的分析方法。同时,在进行程序检测的过程中,也考虑了系统的安全性。提供了安全检测机制。系统根据面向对象程序设计方法和反射技术实现了复杂的测试用例的调度。逻辑检错的实现主要由文件管理、编译检测、安全检测、输入输出接管、用例检测和反馈信息六个服务功能组成。一个完整的程序文件从提交到服务器开始就执行相应的功能,当前功能段报错,说明源程序有问题,将不能进行下一层的功能检测服务。系统将把程序返回给客户端,保证系统的安全性和实时性。文件管理主要接收处理客户端传来的Java源程序文件。编译检测模块对传来的Java源程序文件进行编译运行,如果程序存在错误,则返回给客户端程序,提示用户先进行编译检错。如编译通过,则进入安全性检错。判断程序可能出现的死循环状态,如出现死循环状态,则服务器将会死机。本系统利用J2EE平台提供的Process组件特性,