基于设计模式的实验室管理系统设计与实现
徐妍++崔良中++黄佳维
摘 要:针对目前很多高校对实验室管理效率低下、实验室利用率低等问题,文章构建了一套管理信息系统,解决了实验课件管理、预约管理、资源共享等问题。系统在设计中,充分利用GoF设计模式,有效增强了系统的可维护性和可扩展性。系统的设计与开发,有效提升了高校对实验室的管理能力。
关键词:实验室管理;系统设计;GoF设计模式
提高学生的动手能力,是学校的主要工作任务之一,高校实验室是提高学生动手能力的重要途径[1]。学校实验室的构建目的,一是为学生创造良好的实验环境和条件;二是确保实验教学任务的顺利完成;三是为科研工作提供实验环境。目前高校实验室存在的主要问题包括以下几个方面:(1)缺乏制度化管理,实验设备与实验教学内容脱节;(2)实验室基本资源管理混乱,实验器材和原料得不到及时补充;(3)实验室资源没有得到充分利用,学生无法利用课余时间上机,各高校之间的实验室也无法共享资源。
本系统根据目前高校实验室存在的问题,构建了一套实验室管理系统。该系统能够为高校学生提供实验室预约、实验课程教学等功能;能够为高校教师提供实验课程管理、实验信息获取、实验课件提交等功能;能够为实验室管理人员提供实验器材及原料补充管理、实验室资源共享管理等功能。本系统最大的特点,是充分考虑到了实验室管理业务流程的扩展,在系统各主要功能的设计中,引入了拟合优度(Goodness of Fit,GoF)设计模式,系统的可扩展性和可维护性得到了大幅提高。
系统投入使用后,解决了实验室管理过程中的效率低下的问题,教师和学生可以基于系统实现对实验教学内容的交流;实验室管理人员能够及时根据实验课程安排,调整实验器具和原料;各高校之间的实验室资源共享,有效地提高了高校实验室的利用率。
1 关键技术研究
本系统的设计与开发,主要是在面向对象编程原则的指导下,利用GoF设计模式,完成系统的各个功能模块。
1.1 面向对象编程技术
面向对象编程技术,是针对传统的面向过程编程技术而言,是目前主流的高级编程语言所采用的编程技术。面向对象编程技术,主要包括5个原则[2]:(1)单一职责原则,类中仅包含必要的属性和方法,且类中的方法要求相互关联,避免因类过于庞大而导致的破坏封闭性;(2)开闭原则,简而言之,就是对扩展开发,对修改封闭,在不改变类结构的前提下,应能够方便地扩展类的功能,而在不改变类接口的情况下,能够对类内部的功能进行修改;(3)Liskov替换原则,该原则要求在面向对象设计时,某个类的子类可以完全替换其基类,这一原则是面向对象设计中多态、继承等应用的基础[3];(4)依賴倒置原则,一般的分层架构系统,上层构件的实现依赖于下层的构件,导致系统模块之间的耦合性增加,而依赖倒置原则要求各层的实现都依赖于接口,只要接口不变,可以对构件功能进行完善和调整;(5)接口隔离原则,系统接口的设计要求简洁明了,同一接口中的各个方法之间要求相互关联[4]。
1.2 设计模式技术
设计模式是软件工程中的重要组成部分,是对软件功能模块设计的经验总结[5]。软件开发人员在长期的编程工作中发现,利用面向对象的程序开发语言,可以构建一些固定模式的类组织架构,使所开发的功能具有更好的可扩展性和可维护性,这些模式就被称为设计模式[6]。
设计模式的出现是为了解决在面向对象编程过程中存在的问题,很多功能逻辑的设计实际上是重复的,如果用一个相对固定的,被证明具有良好的可扩展性和可维护性的模式进行固定,则可以有效地提高程序的开发效率,并提高系统的质量[7]。每一个设计模式都相对详细地描述了一个在程序设计与开发过程中存在的问题,并提出了解决的方案。一个完整的设计模式有4个基本要素[8],分别是模式的名称,用于标识和区别不同的模式;问题描述,用于说明当前模式所能够处理的问题,以及适用的情况;解决方案,描述了设计的组成成分,具体地说就是各个类的设计,以及类之间关系的设计;效果,用于描述使用了该设计模式以后所能够达到的效果。
2 系统总体功能设计
高校实验室管理系统的主要设计目标,是提高实验室的使用和管理效率,能够为教师和学生提供实验课程预习、交流等平台,为管理员提供耗材、设备管理功能等。针对不同的参与者,系统设计了相关的功能模块,系统的功能架构如图1所示。
系统从功能的角度可以分为4个模块:(1)教学管理模块主要用于处理与实验课教学相关的业务内容,教师通过该模块发布教学课件,学生通过该模块提交实验报告;(2)实验室管理模块主要用于实验室使用申请,以及相关信息查询;(3)设备器具管理模块主要为管理人员提供了实验室易耗品以及相关设备器具的管理功能;(4)系统管理功能模块主要是对数据库、日志等进行管理。
3 实验室易耗品管理功能的实现
高校实验室管理系统包括多个功能模块和功能指标。为了保证系统的可扩展性和可维护性,在每一个功能的设计实现中,均充分考虑到了设计的灵活性。篇幅所限,本节主要对实验室易耗品的管理功能进行详细讨论。该功能是对实验过程中使用到的易耗品,以及各类实验设备等进行管理。
3.1 易耗品管理功能的设计
实验室中的易耗品与具体实验之间存在着直接的关联关系,某一个实验会包含多个实验的易耗品,而同一类的易耗品也可以被应用于多个实验中,两者之间是多对多的关系。按照传统的面向对象的软件设计方案,对于实验室易耗品类的设计可以采用两种方式:一种是从实验种类设计类,可以分为物理实验的易耗品、化学实验的易耗品等;另一种是直接对易耗品设计类,抽象属于同类的易耗品属性和方法。上述两类设计方式都存在着较大的问题,当在易耗品的管理过程中出现新的实验类别时,需要增加一个新类,同时增加该类相关联的各类易耗品;同时,当增加一个易耗品的操作时,需要对所有的类别进行修改,违反了面向对象设计中的开闭原则。
为了解决上述设计上的问题,利用GoF设计模式中的桥接模式进行类的设计。桥接设计模式的类图如图2所示。
桥接设计模式的主要目的是将抽象对象与具体的实现细节进行分离,使两者之间既存在关系,又可以实现各自的灵活变化。在实验易耗品管理过程中,各种不同类型的实验都是抽象的对象,而实验所用到易耗品则是具体的实现。两者之间可以不建立联系,但这样就无法反映实验与易耗品之间的关系,给管理工作造成较大的阻碍。按照桥接设计模式的设计要求,本功能的类图设计如图3所示。
如图3所示,设计了抽象的实验类AbstractLab,该类的属性中包括实验的名称,而List
采用这一设计模式,当需要扩展新的实验类别时,只需要设计一个新类继承AbstractLab类,并实现其定义的方法;而新增加一种易耗品类别时,则从Drug类中派生一个新类。
3.2 易耗品管理功能的实现
以上对实验易耗品管理功能进行了设计,利用桥接模式提高系统功能的灵活性。该功能的实现序列如图4所示。
AbstractLab类的主要代码如下:
abstract class AbstractLab
{
protected List
public void ShowLabInfo(){
foreach(Drug drug in DrugList)
drug.GetAmount();
//其他处理操作
}
public void AddDrug(Drug drug){
DrugList.Add(drug);
}
Drug类的主要代码如下:
abstract class Drug
{
public double GetAmount(){
//从数据库中获取易耗品的存量。
}
继承类的相关代码在此不再赘述。完成了类的定义后,用户在客户端可以方便地完成实验和易耗品之间的操作。代码如下:
main()
{
AbstructLab lab = new ChemistryLab();
lab.add(new AlcoholDrug);
lab.ShowLabInfo();
}
通过以上客户端的操作,可以方便地根据实验对象,查询得到该实验所使用到的易耗品各类,以及各类易耗品目前的存量。
该功能的界面如图5所示。
4 结语
高校实验室管理系统的设计与开发,解决了实验室管理不規范,实验易耗品和设备补充不及时,资源利用率低等问题,有效地提高了高校对实验室的管理效率。设计模式在实验室管理系统中的应用,能够使系统功能具有更好的灵活性,便于对功能进行扩展或修改。
[参考文献]
[1]CHEN L,CENTER ET. Problems and countermeasures of laboratory safety management in colleges and universities in the new era[J]. Research & Exploration in Laboratory,2017(3):24-29.
[2]IGARASHI,ATSUSHI,NAGIRA,et al. Union types for object-oriented programming[J]. Journal of Object Technology,2016(2):47-68.
[3]PANCERZ K,SCHUMANN A. Some issues on an object-oriented programming language for physarum machines[J]. Studies in Computational Intelligence,2015(6):185-199.
[4]KAILA E,KURVINEN E,LOKKILA E. Redesigning an object-oriented programming course[J]. Acm Transactions on Computing Education,2016(4):18.
[5]LI,DAABOUL J,Tong S. A design pattern for industrial robot[J].Robotics and Computer Integrated Manufacturing,2015(C):30-39.
[6]JAAFAR F,HAMEL S,KHOMH F. Evaluating the impact of design pattern and anti-pattern dependencies on changes and faults[J]. Empirical Software Engineering,2016(3):31-36.
[7]陈烽,陈蓉,王跟成.设计模式在区域综合管网中的应用研究[J].计算机技术与发展,2015 (4):193-196.
[8]崔亮.设计模式在试验信息系统中的应用研究[J].计算机与数字工程,2015(4):671-675.