SCI论文(www.lunwensci.com):
摘要:在“Windows编程”课程的教授和教学改革实践中,根据业界新兴的MVC设计方法对传统的Windows操作系统应用开发方法进行了重构,增强了传统知识和流行方法的对应关系。提升了学生的学习积极性,帮助学生更好地理解图形界面编程的基本思想和理念,温故知新,取得了良好的教学效果。
关键词:软件开发;图形界面编程;教学改革
本文引用格式:张索非,等.MVC设计模式视角下的Windows编程方法教学浅析[J].教育现代化,2020,7(44):1-3.
Analysis of Teaching Windows Programming from the Perspective of MVC Design Pattern
ZHANG Suo-fei1,XIE Ben2
(1.School of Internet of Things of Nanjing University of Posts and Telecommunications,Nanjing Jiangsu;2.School of Communication and Information Engineering of Nanjing University of Posts and Telecommunications,Nanjing Jiangsu)
Abstract:In the practice and reform of teaching“Windows Programming”course,traditional Windows operating system application development method was reconstructed according to the emerging MVC design theory in industry.The correspondence relationship between traditional knowledge and popular methods was enhanced.The reconstruction prompts the learning enthusiasm of students,and helps them better understand the basic ideas and concepts of graphical interface programming.The overall teaching effect has been significantly improved.
Key words:Software development;Graphical interface programming;Teaching reform
一 引言
“Windows编程”是一门讲授Windows操作系统环境下应用程序开发方法的课程[1,2]。以微软基础库类(Microsoft Foundation Classes,MFC)为基础,课程主要教授了基于Visual C++的图形界面编程的技术框架,开发流程以及功能结构的划分和实现。对于常见的Windows操作系统组件,如对话框、控件、菜单栏等等,进行了详细的技术接口介绍和编程方法讲授。同时,着重分析了MFC框架下的编程思想和传统C++编程思想的异同。作为一门软件开发相关专业的专业基础课程,其目的是指导学生在熟练掌握了C++编程方法的基础上,继续深入学习MFC框架下面向对象编程的理论和实践,提升学生实际的C++程序开发能力。然而由于MFC框架成型时间是Windows桌面操作系统快速发展的年代,所涉及相关知识略显陈旧,在教学过程中存在难以联系当前技术标准,学习兴趣难以调动等问题。本文从当前新兴的模型、视图以及控制器(Model View Controller,MVC)设计模式的视角切入,以新颖的视角重构了传统MFC框架下基于视图的应用程序开发功能架构,在教学方式以及内容体系安排等方面进行了一定的探索和研究。
二不同框架下图形界面功能实现的异同比较
传统的MFC框架针对桌面操作系统定义了一整套图形界面的编程框架和功能划分标准,然而随着当前操作系统标准逐步从桌面端向移动端以及网络端迁移,该框架的应用场景逐渐减少,技术标准也有所变化,需要在授课的时候进行详细的分析。
(一)基于MFC的文档视图模型
MFC针对通用的Windows操作系统应用程序提出了文档、视图和框架窗口模型。模型由应用程序类作为入口,引出框架窗口和文档视图模型,具体功能划分如图1所示。
当应用程序启动时,该框架首先基于从标准应用类派生出的接口类启动应用程序。在此基础上,以文档模板类的方式,分别加载从标准库类派生出的框架窗口类,视图类和文档类。三者匹配,完成对通用图形界面应用程序的功能划分。即用户使用程序时的主要图形界面接口功能由视图类对象实现,对视图类对象的操作被转化为对内部数据的修改保存到文档类对象。而试图和文档之间由框架窗口类的对象进行沟通,各种辅助功能也在该类内部实现,对应于应用程序的主菜单、工具栏以及状态栏等等。开发者在开发应用程序时也应遵循相同的功能划分标准来进行开发。
MFC框架的另一个主要创新在于消息循环机制。与传统的函数式调用方式不同,MFC的功能调用基本上通过消息映射来完成。在程序执行的过程中系统消息循环自动传到各类对应的函数、方法中,通过函数处理独特的消息事件。每个消息包含一个对应的指针和一个消息实体,实体中说明该消息应该有什么类来处理,对应的执行函数以及参数如何。而消息指针则指向对应父类的消息,这样系统在该类中找不到对应消息处理函数时还可以去父类中查找。消息映射和循环机制保证了图1图形界面方案中各类的独自连续运行,防止函数式调用中常见的阻塞问题频繁出现,导致系统图形界面出现不连续的现象,大幅提高了调用的效率。同时消息处理机制的优势在于不同类之间的功能调用以及数据传递都以一种标准的格式封装为消息来实现。
(二)MVC设计方法
MVC设计方法是一种新兴的分层设计方法,大量部署于网页以及移动设备网页端web服务中,如常见的基于JAVA语言的Spring框架等[3]。其功能架构如图2所示。
MVC设计模式下,模型层、视图层和控制层构成了Web开发三层架构的总体布局,将数据和视图独立划分,降低了模块之间的耦合程度。例如基于JAVA语言的Spring框架就是一个典型的基于MVC设计模式的Web服务框架,该框架中浏览器将用户请求发至前端控制器,控制器根据配置文件转发请求,由后端控制器与处理器映射器进行交互。在确定请求对应的视图后,通过数据交互层从数据库中取出数据模型,并进行加工,最终将执行结果的模型和视图进行渲染,返回带有数据的界面视图给用户。
MVC设计模式在整个用户使用流程中充分应用各个组件,开发者只需要进行视图开发、模型设计和处理器的开发。明确的功能划分极大的减少了开发过程中的代码量,降低了各模块之间的耦合度,实现各层之间的代码复用,非常方便地实现了团队分工开发,实现了系统了动态模块化更新等特质,是典型的适合现代化敏捷式开发的标准软件框架。
在MVC设计模式中,同样广泛采用了单例多线程等技术,在运行时进一步降低各模块之间的耦合度。其设计思想和MFC中的消息循环类似,以统一的封装进行模块之间的消息传递和功能调用,同时保证每个模块能够独立决定功能执行的时机,防止多并发场景中阻塞问题的频繁出现。在运行时,首先使用一个线程加载单例模式类对应的对象,然后在静态区获取该单例对象。在调用对象的非静态方法时会为每个线程独立开辟空间,这样即使多线程同时调用了一个对象的某个功能,只要不涉及到对象的共有属性值,就不会存在线程安全问题。
(三)两种框架的异同比较
上述两种图形界面的实现框架虽然成型于不同时期,但是两种框架都致力于对标准的图形界面应用进行统一的功能划分,以帮助程序开发人员能够尽快的熟悉交互流程,将精力集中于具体功能的定制和开发。虽然术语上有所区别,两种框架基本上都将功能划分为控制器、视图和模型三个部分,主要的图形交互功能由视图定义,而操作过程中涉及到的数据则通过模型类的方式进行定义。这种方法明确地划分了应用的各项功能,降低了模块耦合,提高了开发效率。同时,严格封装的数据传递以及功能调用机制,也保证了不同模块之间信息传递的标准化,以及在多线程高并发环境下运行时的系统稳定和高效。
而由于应用环境不同的原因,两种框架之间的区别也是非常明显的。MFC的控制器模块定位于实现菜单功能内容,而由于Web服务没有对应需求,其控制器主要负责的是用户请求的转发和反馈机制。另一方面,由于MFC框架面对的主要应用场景是桌面操作系统,其文档类对象的主要功能是本地文档序列化功能,而高并发主要是指操作系统在展示图形界面时所涉及的众多应用程序和组件;而MVC设计模式主要应用于Web服务场景,其数据模型对应的是服务器端数据库技术的持久化模型,高并发主要是指处理众多不同用户同时发出的各类数据请求。
三 基于两种技术比对的教学方式改革
由于单纯讲授MFC内容往往只涉及到桌面应用程序开发,对于当前软件开发行业的现状而言有所滞后,往往会导致学生学习兴趣降低。在授课的过程中,可以有意地将不同技术框架进行对比教学,通过实例增强学生的学习效率。
(1)通过引入基于JAVA语言的Spring工程实例,讲解MVC设计模式。虽然涉及到一门新的编程语言,但由于JAVA语言和C++语言语法类似,学习的障碍并不明显。在讲解时主要重点不在于编程实现,而是结合实例分析MVC设计模式中类似的分层设计理念,并切合一些学生比较熟悉的Web服务讲解MVC的实现机制,激发学生的学习兴趣,帮助其明确学习动机[4-6]。许多学生在接触到这些和实际项目以及今后就业更加密切相关的实例以后,学习热情有较为明显的提升,愿意深入地了解其背后的设计原理和思路。
(2)将两种技术框架进行详细对比,回归课程本身内容,从软件工程的角度深入理解MFC的设计初衷,同时帮助学生重温面向对象编程的相关知识。通过分析应用程序启动流程,体会面向对象的设计思想具体是如何实践的。同时,在实验课程中,增加可选内容,有意识地引导学有余力的学生使用相关知识对书本上的实验内容进行修改和进一步深化,定制自己设想的内容。通过实际动手提升学生的学习积极性,加强所学知识的消化和记忆。
(3)进一步提炼MFC的设计思路,将其与MVC设计思想相统一,上升为一种通用的图形界面设计方案。不局限于某种编程语言,而是作为一种通用框架来进行讲解,可以用一些其他的流行框架如Python、Android等案例作为更进一步的比较来进行分析。同时在期末考评的大作业环节中,要求学生在完成具体功能的实现之余,根据自己的理解程度就其实现功能进行分析,体会MFC的功能划分,将其纳入考评标准。鼓励学生更多地搜索课外资料,展现学习成果,同时更好地回忆课堂学习内容。
四 教学效果
(一)课堂和实验课教学效果
从课堂的教学反馈以及实验课的交流来看,学生普遍被更好地调动了学习积极性,不再将Windows编程作为一门陈旧的知识来应试学习,而是将课堂内容和自身以往的项目经验或者正在参与的项目内容结合起来。甚至主动提出问题,有一些是和课堂知识直接相关,还有一些则是和MVC设计模式相关的问题。可以从分层设计、降低耦合等思路给出引导,启发学生独立主动的通过查阅资料以及动手尝试等手段解决问题。
(二)大作业反馈教学效果
从期末的大作业反馈来看,很多同学在主动和老师沟通以后,不局限于老师给出的几个课题,而是更多的从日常生活或者相关项目需求出发,使用Visual C++实现了很多有趣实用的系统应用。在实现的过程中也能很好地根据MVC设计模式进行软件设计分析,框架搭建,对整个工程有了更加宏观的认识。同时启发了思路、开阔了眼界,能更好参与到相关项目的开发当中去。
总之,从MVC设计模式的视角对Windows编程相关知识进行比较学习,新老结合,触类旁通,显著提升了学生学习这门课程时的学习效果。
参考文献
[1]方昱春,陈迅雷,张景峤.分而治之的Windows编程课实践教学实验编制[J].计算机教育,2018(01):147-150.
[2]丁有和,郑阿奇.Visual C++教程(第3版)[M].北京:清华大学出版社,2016.
[3]孙林,于海春,李星宇.基于移动互联WEB开发的MVC模式研究[J].科技风,2019(23):89-90.
[4]龙凤梅,熊伟.浅谈数学算法教学[J].教育现代化,2019,6(52):174-176.
5]杜勇,齐肖阳,王秀娟.数学建模中智能优化算法教学方法探究[J].高师理科学刊,2019,39(06):73-76.
[6]张蔚,周子渝,何家莉.智能算法在数学建模教学中的实施[J].西部素质教育,2020,6(06):154-156.
关注SCI论文创作发表,寻求SCI论文修改润色、SCI论文代发表等服务支撑,请锁定SCI论文网! 文章出自SCI论文网转载请注明出处:https://www.lunwensci.com/jiaoyulunwen/30988.html