高职学校面向对象软件工程实践教学的改革探索

2024-07-27

高职学校面向对象软件工程实践教学的改革探索(精选7篇)

1.高职学校面向对象软件工程实践教学的改革探索 篇一

基于项目教学法的面向对象程序设计课程改革探析论文

面向对象程序设计(ObjectOrientedProgramming,OOP)是信息管理与信息系统专业学生必修的专业基础课,在整个教学体系中的地位非常重要,学生在学习该课程后能充分掌握面向对象程序设计思想和方法,是该课程教学改革的理想目标。

一、相关概念

(一)面向对象程序设计

OOP 是一种计算机编程架构,它具备软件工程的灵活性、重用性和扩展性。OOP 不仅具有丰富的理论知识,同时具有很强的实践性,坚持在真实的项目中锻炼编程能力,才能理解其精髓,进而活学活用。

(二)项目教学法

项目教学法以学生为教学中心,是学生在教师的指导下处理项目,提高自身能力的教学方法。其优势在实践性较强的 OOP 课程中体现得淋漓尽致。具体实施时,教师化身为顾问,主要的作用是引导学生把课堂所学用在实践过程中,理论联系实际,进而提高动手能力 ;学生是项目的具体操作者,知识水平和发现问题、解决问题能力均能得到提高。

二、改革的必要性

OOP 是一门实践性很强的课程,如果不进行实践教学,学生不能全面掌握其核心思想。原因主要有以下两方面 :

(一)难理解

由于面向对象概念较抽象,是基于现实世界的特点,对系统的复杂性进行概括、抽象和分类,对象是 OOP 的核心,是将代码和数据封装起来的具有某些特性的具体事物的抽象。从学生角度来看,以知识点为中心的讲解教学方式理论性太强,不好理解,甚至有部分学生自始至终也无法掌握OOP 的重要概念,不能满足课程考核要求。

(二)理论教学多

教师上课采用多媒体教学,这种方式基本上是教师在课堂上唱独角戏,把理论和方法灌输给学生,学生被动地学习,只是把教师讲的内容在大脑中形成记忆,没有自己独立思考的过程,不利于培养学生的创造能力。

三、项目教学法的改革要点

项目教学法设计了完整的软件项目教学背景,克服了传统教学中注重理论知识忽视应用实践的缺点。学生在慢慢了解、逐渐熟悉软件项目开发的过程中,能够理解应用,学习和掌握各种知识并训练相关技能。

(一)项目题目的设定

教师在进行项目教学引导时需要策略,创设学习的资源,协调学习合作环境。教学项目题目的选取是其中的关键问题,选题最好能与软件公司进行交流或合作,应具备针对性和实用性,能体现出学生综合能力的运用,并且可以进行客观评价。首先,项目题目应尽可能覆盖教学大纲的多项知识点 ;其次,应该构建具有完整项目的项目案例库,项目题目应有不同的难易度和适当的工程工作量,适应所教班级的不同学生的实际水平;最后,项目题目应尽量贴近大学生的生活,并可以用一些标准,如软件是否易用、是否有良好的用户交互性等进行公平、准确的评价。

(二)互动增强

传统的教学环节中,老师和同学的交流仅限于课间十分钟或者课下较短时间的交流,交流时间少,沟通的`问题也只是教学内容中个别的知识点。而在项目教学法中,沟通渠道是多向的,老师与学生之间沟通的宽度和广度都加大了。另外,即使在同一课堂上听讲,不同的学生在学习动机、学习心理、学习兴趣和学习能力等方面仍然会有一些差别。

(三)角色换位

在项目教学法中,学生居于教学活动中的主要地位,应该是项目的积极参与者,首先要认真阅读选定的真实项目材料,和同一个项目的同学讨论,甚至就项目问题的不同理解与同组同学展开争辩。其次在真实项目实战场景下,经过认真的独立思考和判断动手编写程序。学生的自学能力和实践能力得到提升,并主动构建自己的知识体系。居于教学活动中从属地位的是教师,教师不再是整个课程的中心。教师对整个教学活动按照工程项目的需要加以指导,做适当的示范,只是项目的指导者或者说是项目进度的推动者,引导学生进行深入学习。

综上所述,项目教学法是 OOP 课程非常重要的一种理想教学模式。项目教学法不仅激发了学生的学习积极性,使学生主动投入更多的精力掌握上机调试程序的步骤、排查各种错误的方法,进而达到解决实际问题的目的,而且使教师转变了教学角度和思维方式,致力于全面提高学生的系统工程能力,让项目教学法在 OOP 课程中发展成熟,发挥它在教学上的重要作用。

2.高职学校面向对象软件工程实践教学的改革探索 篇二

(一) 传统模式仍占主要地位

作为一个应用操作性很强的专业群, 软件技术专业传统的授课方式是在机房实施理论+实践教学。教师围绕教材和专业技能对应知识点来进行讲解理论知识之后, 学生再按教师教授的步骤来进行上机实训。但作为高职学生往往会忽视课堂理论学习, 于是按部就班地打代码并不能真正理解程序的结构和语法, 因此在项目开发的时候, 便不能很顺畅地用理论基础只是去搭建系统架构体系。专业教师的课堂设计一般只在教案中体现, 缺乏职业能力的训练, 缺少对认知过程的控制和行为引导的设计。教案中同时也看不到对教学环节设计的描述。以知识为中心的课堂教学模式, 教师是课堂的主体, 学生往往偏向于被动认知, 普遍对学习程序设计的积极性不高。

(二) 软件专业学生的课堂学习情况

以软件技术专业一门基础课《面向对象程序设计》为例, 由于传统的课堂教学设计缺乏目标意识, 教师为了完成授课计划, 忽视学生的实际接受能力和情感体验, 过于强调学生接收学习、机械上机训练。学生的主体地位形同虚设, 课堂上学生听不懂就睡觉、玩手机、玩游戏, 对老师的讲解内容毫无兴趣。当进入到提问互动环节, 学生无法对教师的问题进行积极的响应, 教师的积极性也受到了影响, 有时甚至只能关注自己的教, 而不是学生的学。因此, 通过调查问卷和深度访谈的方式得出的结论是, 学生认为上这样的基础课有一种很压抑的情绪存在。有的学生认为自身本来英语基础差, 程序设计的代码都是英文更加大了他们对课程的恐惧;有的学生认为对所学知识的实际应用模糊, 不知学来有何用处, 所以干脆不学;有的学生觉得程序设计的课程内容太抽象, 太理论, 无法理解, 只能是照搬代码运行结果, 无法对语句语法进行举一反三的应用。

二、以《面向对象程序设计》课堂教学进行改革与实践

在《面向对象程序设计》课程中选取“类的封装”为例讲述以任务驱动为主的课堂教学实施过程。整个课堂设计时间为2课时, 课堂以4个任务, 贯穿定义类的属性和方法、实例化类的对象、为什么需要进行类的封装、如何进行封装、强化类的封装等5个知识点, 把理论方面的教学内容从教师讲授转变到在任务中体验与提炼出知识点, 尽量避免高职学生对理论学习因枯燥而产生抵触的情绪。每个任务具体而贴近生活, 通过“引-做-评”的形式激励学生完成一个个任务。课堂活动设计如下:

(一) 教师抛出任务引入, 学生明确做什么

课堂开始时, 就把4个任务布置发布给学生, 明确本次课的教学任务是:理解封装的作用。学生带着疑问和不解去执行第一个任务, 直到把疑问解开:使用封装, 可以增加对数据访问的限制。学生一旦觉得有事可做, 就不再觉得迷茫, 不至于一开始就对本次课失去兴趣。具体任务如下:

(二) 学生执行任务, 巩固已学知识点, 思考任务过程中出现的问题

学生在执行任务一中, 可以复习知识点——类的定义, 但留意到了第一个问题:其中有个年龄属性有最小限制, 学生根据以往经验, 会思考:限制部分的代码应放在什么位置合适?带着这个疑问, 学生继续执行任务二, 实例化类的对象后发现, 有一个对象的输出不符合任务一中的要求, 因此更加明确了接下来任务三的目的是要把对某个属性进行限制的操作体现出来。这个过程, 通过任务的实现, 自然体会到了为什么要进行类的封装, 教师不用太照搬教材中对封装的解释, 便可让学生轻松的理解。课堂的重点任务在任务三中, 学生先通过对教材、课件的自学领悟, 尝试着按步骤提示做出来。整个过程中, 教师不必占用太多时间来解释说明, 而是重在巡视课堂, 收集学生在操作过程中, 出现的共性问题。待给予学生充足时间进行操作后, 教师首先通过教师机转播有代表性问题的学生机子, 演示操作, 学生通过提示改进代码的编写;接着教师进行总结性的演示、说明封装的具体步骤以及封装的快捷方式。学生对问题进行经过思考后, 听课的认真程度明显提高, 对教师提供的快捷操作更是大感兴趣。为此, 任务四的作用是:强化和巩固封装的操作, 针对能力较强的同学, 还提供了进一步思考的问题作为挑战。

(三) 学生自我评价

学生在课堂接近尾声时, 都要填写任务自我评价表。教师在设计时, 尽可能细化评价量规, 让学生记录下自己成功的地方和不足之处, 并写下自己尚未解决或不理解的问题, 以供教师及时了解和掌握学生的实际接受程度, 调整和改进课堂教学设计, 以促进教学目标的完成。

三、改革后的课堂教学设计框架

在对软件技术专业学生培养模式不断进行总结和反思之后, 作为专业教师, 我们更多的是要思考应该如何做, 才能培养出一名有实际应用能力的学生。教师备课, 不能再以知识内容的讲解为首要任务, 而备课更应该注重的是备课堂, 备课堂上的学生, 也就是认真而具体的做好课堂教学设计。如何调动学生在课堂上学习积极性, 如何提高课堂教学的效率, 如何增强课堂教学活动的互动性, 如何能在课堂中真正做到“教、学、做”一体化。在这一转变过程中, 我们开始明确了教学的目标, 逐步形成了适用于软件专业课程的新模式下的课堂教学设计主体框架:在课堂一开始时, 学生就应当清楚这节课中要学什么, 做什么。接下来, 学生就知道自己该怎样做了, 有目的性的根据教师在课堂中设计的任务驱动去完成每一项任务, 每做完一项任务, 都有相对应的评价表, 在评价表中, 学生可以体验到一种成就感, 这样的成就感就会触动学生更积极主动的去完成下一个任务。真正的设计出:以学生为主体, 教师做好引导的活跃课堂。

摘要:本文对高职软件技术专业的课堂教学模式进行了研究和探索, 在认真分析和总结传统式教学的基础上进行了一系列务实的改革, 通过实践证明, 科学合理的课堂教学设计能增强学生对课堂学习的关注度, 提高参与教学活动的积极性。

关键词:软件技术专业,学生,课堂教学设计,任务驱动教学

参考文献

[1]舒志华.对高职课堂教学设计的再思考[J].吉林省教育学院学报, 2013, 2 (29) :41-42.

[2]赵治.谈如何调动高职学生课堂学习的积极性[J].辽宁高职学报, 2012, 10 (14) :108-109.

3.面向不同对象的双语教学探索 篇三

摘 要: 文章结合电磁场与电磁波双语课程,论述了专业课程双语教学,在面向普通高等院校学生与中外合作项目学生时,其目标、性质、教学模式区别,以及在实施过程中遇到的问题和解决办法。

关键词: 双语教学 普通高等院校学生 中外合作 教学模式

引言

国家为了推动高等教育与国际接轨,鼓励高校开展双语课程教学历来已久。全国开设双语课程教学的高校非常多,研究双语课程教学模式的学者也很多。高校中双语课程实施的对象可分为两类,一类是普通高等院校学生,包括本科生与研究生;另一类为中外合作办学学生。面向这两类学生,在实施双语课程教学时,教学的性质、目标、教学方法都有所不同。

“电磁场与电磁波”是电子信息类专业和通信工程类专业一门重要的专业基础课程,也是“微波技术”和“光纤通信”等课程的基础。其内容在移动通信、微波通信、光纤通信、射频电路、高速集成电路等相关领域有着广泛而深入的应用。本文以“电磁场与电磁波”双语课程教学为例,分析普通双语课教学与中外合作中双语课程教学的区别。

1.普通班级专业双语课程教学

高校中普通专业双语教学的目标是在各专业领域培养既有较高的英文水平,又熟悉专业的人才。面向此类学生,多数高校采用的教学方法是汉语与外语混合授课模式,考虑到多数学生的外语口语和听力能力较弱,为了帮助学生掌握专业知识,往往先外语后汉语翻译。因为在制定该课程教学目标时把对专业知识的掌握放在首要位置,而外语能力的提高则放在其次。大多数学生在国内完成学业,双语课程仅仅使得学生在一定程度上提升了英语水平、扩大了英语词汇。因此,中外合作办学的双语课程与普通双语课程的性质是不一样的。

目前我们学校的“电磁场与电磁波”课程还没有在普通本科班级开设,但本课题组成员已经在积极准备中,对多个高等院校的双语教学进行了调研。对本校的通信工程专业本科生进行了“电磁场与电磁波”双语课程教学意愿调查,其中有调查项:92%的学生愿意实施双语教学;85%的学生认为自己的英语能力会妨碍对专业知识的理解,学生普遍认为自己的听力能力、口语能力较弱,专业词汇量较少。课题组成员针对这些问题提出了措施:听力能力与口语能力的提高是日积月累的事情,重在坚持锻炼。在初始阶段,教师的授课方式主要以混合模式为主,并录制相应教学视频,让学生能够课后进行相应复习,同时教师要制定合理的考核机制起到监督作用。其次,在教学过程中,对课程每一段落讲解结束后,把章节总结任务交给学生,鼓励学生积极参与并分组讨论,每组学生用英文提炼章节的重点和难点,再总结结论,从而提高学生口语能力;针对专业词汇量问题,课题组成员已经制定了专业词汇手册,按专业知识点类型分类,并非以往的按字母分类。在专业词汇教与学过程中,可将传统的大学公共英语教学手段与专业双语课程教学方法相结合。

2.中外合作项目中专业双语教学

目前国内高校的中外合作项目多数采用的是“3+1”或“2+2”模式,即前两年或三年在国内完成一定量的课程学习,成绩合格者可申请到国外完成剩余的学业。出国学习后,他们要面对的是纯外语的生活和学习环境,国内的双语课程教学可以使学生提前体验国外的语言环境、教学环境和教学模式,因此,在中外合作办学中,双语课程起到了过渡、引导的作用,同时为学生出国留学打下了坚实的基础。此时,专业双语课程授课目标应该是把专业知识的掌握与外语能力的提高放在同等位置。因为中外合作的学生多数已经进行过雅思培训或其他类出国外语培训,所以他们的外语能力相对普通学生较强,此时授课模式可由混合模式逐步向全外语模式过渡。

在我校的中外合作项目中,电磁场与电磁波双语课程已开设三届。该课程采用国外的原版教材,用外语完成作业,教学过程中采用外文课件,考核采用外文试卷,教学模式在一个学期中由混合模式逐步向全外语模式过渡。学生在潜移默化中习惯用外语思维组织语言、表达想法。这部分学出国后无论在专业知识方面还是语言能力方面,都受到外方的一致好评。但在该课程实施过程中,也存在一系列问题:(1)教学模式过渡到纯外语模式时,部分学生跟不上老师的节奏,甚至完全听不懂,再加上“电磁场与电磁波”课程是一门理论性抽象性非常强的专业课,学生就失去了学习兴趣。针对这一问题,在纯外语过程中可以将一些知识点的关键字进行反复强调,并在黑板上列出来;督促学生进行预习,提前了解老师讲解内容,有助于课堂上理解。(2)虽然大多数学生英语词汇量还可以,但因为没有接受过专业词汇的学习,所以在专业课程学习中,因专业词汇陌生或理解不准确而无法顺利掌握专业知识点。针对这一现象,在课堂教学中我们及时调整教学内容安排,花费一定的时间对专业词汇进行讲解。不论是面向院校普通学生还是中外合作学生,专业词汇的教与学都应该是基础,但在教学内容时间安排比例上应有相应区别。

结语

针对不同的授课对象,专业课程双语教学在教学目标、教学模式上都应该有所区别。目前随着教改课题的深入研究,结合近几年中外合作中“电磁场与电磁波”双语课程的实践,对教学模式探索,发现问题并提出相关措施,从而完善了双语教学,提高了教学质量。面向普通班级学生的该课程双语教学,课题组成员在积极准备探索中,明确授课对象的不同,在制定教学目标、采用教学方法都要因材施教。

参考文献:

[1]支绛.专业课程双语教学的思考与探讨[J].中国高等医学教育,2016,2:26-27.

[2]丁琪,张权.提高高校双语教学质量的对策[J].江苏高教[J].2013,5:90-91.

[3]许冬瑞,范东生.中外合作办学双语课堂教学模式的探究[J].教育艺术,2016,11:293-294.

[4]李强.卓越工程师培养背景下土木工程专业课程双语教学的实践与探索强[J].教育教学论坛,2016,6(25):169-170.

[5]王俊.探究式学习:改善高校双语教学实效的一个新思路[J].江苏高教,2013,2:68-69.

[6]蔡毓.关于高等学校通信电子及计算机工程类双语教学的思考[J].外语教学,2016,05:190.

4.高职学校面向对象软件工程实践教学的改革探索 篇四

关键词:面向对象;软件工程;软件需求分析

本文主要阐述软件需求分析在关键工程中的必要性,并描述了面向对象的软件工程中软件需求分析的任务、过程和方法。

1软件工程

软件工程涉及程序涉及语言、数据库、开发工具、以及设计模式等等,是研究并维护软件的一门学科。在目前的社会中,软件在各个方面都被广泛的应用,如办公套件、操作系统以及游戏。其中计算机软件的应用在银行、工农业、、企业中的应用更为广泛,有了这种软件工程的加入,让人们的生活和工作的质量更高,同时也加强了工作效率,推动社会经济的发展。开发软件的职业是软件工程师,也能够根据所负责的工作不同进行划分为系统分析员、软件设计师、系统架构师和程序员等。软件工程在学界中并没有专一的概念,比较被大部分人认可的定义为:软件工程是针对软件出现的各种问题而出现的一门学科,同时也是对软件进行一系列研究的方法。软件工程的目标在于研发质量较高的软件产品,使软件在功能、可靠、使用、效率、维护、移植等方面都具有良好的标准。软件工程的表现为以下几点:首先,软件并不是指实际产品,它是指逻辑上存在的产品,费用的使用也主要是在研制过程中,软件的问题并不存在像实物中一些用坏或者损坏情况,而是存在过时问题;其次,软件的功能体现是靠用户的使用和软硬件的运行状态,而且其功能的复杂性也高于一般产品;最后,软件设计在功能和实现上有很大的多样性,提升软件的质量和开发效率就是推动软件工程发展的关键。

2软件需求分析具体过程

软件需求分析的过程主要有四个阶段,分别为确定软件需求目标、进行分析并整合、规格的相关说明规定、以及最终评审。确定软件需求目标在涵义上是指系统分析师和程序开发工程师在进行工作中,找出目标软件工程所需的要求,从而讲述出能够达到要求所需要的条件。一般来说,这些要求主要体现在功能、性能、环境、可靠性、安全性以及用户界面、资源使用、软件成本消耗与开发进度等。

(1)功能是指将软件的功能开发;

(2)性能则在于软件技术性能标准;

(3)环境是指如硬件和软件方面在软件系统运行时的`要求,另外还包括对使用此软件的工作人员的技术要求;

(4)可靠性是通过软件在开发过程中对实际环境的要求,并满足在进行需求分析时显露出所有存在的问题,估计运行后会产生的后果,提出更高的可靠性;

(5)安全性是指安全保密,在进行开发时特别针对安全性能严格要求,保证在日后的使用过程中能够拥有强大的安全性能;

(6)用户界面要根据客户的要求进行需求分析;

(7)资源使用是要保证用户能够接受在软件的使用中的资源需求;

5.高职学校面向对象软件工程实践教学的改革探索 篇五

高职数学面向专业应用的教学探索与实践

随着职业教育改革的不断深化,在高职数学教学改革中,如何把数学与专业需求结合起来,大力推进高职数学与专生课的衔接,这是本文进行探索的问题.同时,作者在教学实最中做了一些尝试,建立适合专业需求的.数学课程体系;采用专业案例驱动教学、数学软件教学等方法,强化数学为专生课服务的功能.

作 者:胡秀平魏俊领 作者单位:河北交通职业技术学院,石家庄,050091刊 名:中国科教创新导刊英文刊名:CHINA EDUCATION INNOVATION HERALD年,卷(期):2009“”(7)分类号:G642.0关键词:高职数学 服务专业 案倒教学 数学软件教学

6.高职学校面向对象软件工程实践教学的改革探索 篇六

基于数据库和面向对象的运载火箭地面测发控软件复用

随着运载火箭地面测发控软件的规模越来越大,测发控软件的复用成为当前运载火箭地面软件的.发展趋势.本文介绍了一种新颖的运载火箭地面测发控软件复用技术,该技术将面向对象技术和数据库技术相结合,实现了运载火箭地面软件的复用,在加快试验进度的同时,也提高了程序的可靠性.目前,该技术已被成功应用在某新型运载火箭的地面测发控软件中.

作 者:孙海峰 陈迪 解月江 邹军 安占新 SUN Haifeng CHEN Di XIE Yuejiang ZOU Jun AN Zhanxin  作者单位:孙海峰,解月江,邹军,安占新,SUN Haifeng,XIE Yuejiang,ZOU Jun,AN Zhanxin(北京航天自动控制研究所,北京,100854)

陈迪,CHEN Di(哈尔滨工程大学,哈尔滨,150001)

刊 名:航天控制  ISTIC PKU英文刊名:AEROSPACE CONTROL 年,卷(期):2010 28(2) 分类号:V554 TP31 关键词:运载火箭   测发控系统   软件复用   面向对象  

7.高职学校面向对象软件工程实践教学的改革探索 篇七

封装、继承、多态等特点为面向对象程序设计语言提供了强大的能力和无与伦比的灵活性。鉴于上述优点,大学计算机专业普遍开设《面向对象程序设计》这门课程,以C++或Java为范例语言讲述面向对象思想、面向对象分析与设计以及面向对象编程。但在实际教学中,面向对象的思想理解较困难,且容易被语言细节湮没,抽象思想和实际应用很难结合起来,造成理论和实际之间的脱节[1]。

该文结合在《面向对象程序设计》教学中的体会,以Java语言教学为例,提出在实验教学中设计案例,应用代码重构工具对程序进行重构和改进,提高学生对代码复用以及软件重构等的认识。

1软件重构和重构工具

1.1软件重构的概念和作用

由于需求改变等原因,软件也在不断变化。有时这些改变并不影响软件的行为,而仅仅改变了软件的内部结构。例如,一个程序员可能会改变函数名称,用一个函数来封装重复的代码,改变函数形式参数使函数更容易复用等。在面向对象程序设计中,保持行为的代码修改通常被统称为重构。重构(Refactoring)是指在保留类(方法)外部行为的同时对代码重新组织的过程和技术。重构的定义,比较权威的是Martin Fowler给出的定义:重构是在不改变软件可观察行为的前提下,对软件内部结构的一种改变[2]。在此过程中会应用一系列的重构技术,这种改变的目标是使软件更容易理解,更容易修改。

重构的主要作用是:保持设计的简单性、可扩展性和可维护性;增强代码的可理解性。在下列情况下需要进行重构:

1)软件复用。可复用的软件通常需要大量的迭代设计。对已有的代码与设计进行重构,抽取可复用单元,将使软件结构易于变化,使迭代设计更加简单,从而使软件得到更好的复用性[3]。

2)需求发生改变,需要增加软件功能。当需求发生变化的时候,就要求对原有的代码与设计进行改变,此时需要对原有的代码与设计进行重构,以使其容易被扩展[3]。

3)修正软件中的错误。因为程序代码凌乱,代码结构不清晰,错误往往很难发现。重构可以让代码结构更加清晰,使得错误容易被发现[3]。

1.2软件重构工具

目前主要的几种Java集成开发环境均提供软件重构功能,如Eclipse、Net Beans、Intelli J IDEA等。Eclipse和Net Beans还可通过安装CDT插件支持C/C++开发,并提供重构功能。Intelli J的系列产品PHPStorm、Py Clarm、Web Storm等也支持对PHP、Python甚至其他语言的重构功能。

以Eclipse为例,其在Refactor菜单下提供了很多重构功能,其中部分常用的重构功能如表1所示。

表1 Eclipse提供的部分重构功能

本文针对其中的若干重构功能,设计了一个教学案例进行演示。其他的重构功能可以通过设计另外的案例来向学生演示和讲解。

2教学案例分析

本文中设计的案例是日期类My Date的编写。My Date类的初始状态包含的方法并不足以满足实际要求,且其中的部分方法只提供了声明而没有加以实现。My Date类的初始UML类图如图1所示。案例的任务是在此基础上对My Date类进行重构,对未实现的方法加以实现。

考虑到日期有效性判断在类中是一个常用操作,已经将其封装为一个方法is Valid Day()。清单1列出了已经实现的私有方法is Valid Day()的代码。

清单1 is Valid Day()方法代码

2.1基础方法的实现

类中的to String()方法、构造方法和getter可以通过Eclipse的代码自动生成功能(source菜单中的Generate to String(),Generate constructor和Generate getters and setters)自动产生方法框架并加以修改。其中的getter和setter也可以通过重构功能Encapsulate Field加以实现。

构造方法My Date()调用is Valid Day()判断日期的有效性,如果有效则初始化属性,否则抛出异常。

2.2 order()、tomorrow()和diff()方法

order()方法的作用是计算当前My Date对象的日期在当年是第几天,其伪代码如清单2:2 order()

清单2 order()方法伪代码for i=1 to month-1

清单3 tomorrow()方法伪代码

清单4 diff()方法伪代码

综合考虑上述三个方法的伪代码,发现有一个共性问题:需要判断是否闰年,从而获取该年的天数或2月份的天数。

2.3对案例进行重构

在类的原有设计中,每个月包含的天数、对于闰年的判断代码均包含在is Valid Day()方法中,order()、tomorrow()和diff()方法无法使用这些代码,必须对代码进行重构,实现代码复用,改善代码结构,使类可以方便地扩展。

首先,选取is ValidDay()方法中的闰年判断部分代码(11-13行),使用Extract Method功能将其提取为方法,将方法命名为isLeap Year。原代码被替换为方法调用,重构生成的方法签名为:

public int is LeapYear(int year,int leap);

其参数在这里属于多余,可使用Change method signature功能对参数进行重构。移除参数leap,并修正代码错误,相应的调用代码也会自动更改,重构后的方法签名为:

public int is Leap Year(int year);

在My Date类中,还可对is Leap Year()方法进行重载,添加一个无参方法对本对象是否闰年进行判断,增加其灵活性。

其次,对于每月天数的判断,可将is Valid Day()方法中的代码3-4行使用convert local variable to field功能提取为类的属性,并修改其属性为static final,方便其他方法使用。

在对类进行上述重构后,其UML类图如图2所示。

3结束语

通过重构,可以看到原有的is Valid Day()方法进行了拆分,类中方法的粒度更加细化,有利于代码的重用。同时,类的结构经过重构之后趋于合理,方便了以后的扩展。在重构过程中,还根据实际需要增加了若干方法,使类的使用更加灵活。

重构是改善既有代码设计,提高代码质量,改进代码结构的方法。代码在开发最初很难有一个比较好的设计,重构可对代码不断进行改进。在面向对象程序设计教学中。引进重构思想,通过使用自动化重构工具,可使学生通过对比重构前后的代码对面向对象思想得到充分认识,将抽象思想和实际应用结合起来,有助于面向对象思想的掌握。同时,还对学生和企业实际软件开发接轨起到了一定辅助作用。

摘要:针对面向对象程序教学,提出在实验教学中通过设计案例,应用代码重构工具对程序进行重构和改进,提高学生对代码复用以及软件重构等的认识,有助于面向对象思想的掌握,也有利于学生编程能力的提高。

关键词:面向对象,软件重构,代码复用

参考文献

[1]刘继承,孔维华,陈娟.在《面向对象程序设计》教学中引人敏捷软件开发思想[J].科技信息:科学.教研,2007(31):100-101.

[2]付友涛,许林英.软件工程新方法——软件重构[J].微型机与应用,2003(10):4-6.

上一篇:英语形容词知识:最的形容词词组下一篇:周末送给亲友的祝福语