课程思政优秀教学案例(五)——《面向对象系统分析与设计》-彭钰莹
日期:2022-08-29  发布人:chenrunlin@employee.  浏览量:3912

面向对象系统分析与设计-思政案例

一、教学基本信息

课题

策略模式

授课老师

彭钰莹

授课时长

4学时

授课班级

软工20

二、教学分析

教学目的

与要求

1.理解什么是策略模式,掌握策略模式类的结构和代码结构;

2.灵活运用策略模式来识别不好的类的设计,并对设计进行优化;

3.能够通过策略模式案例理解蕴含的人文精神和家国情怀,能够结合时代背景分析问题并解决;

4.培养学生独立思考能力、质疑批判精神、团队协作能力和软件工程师的职业素养。

重点

难点

【重点】

1.策略模式的思想、类的结构;

2.合理运用策略模式来优化类的设计。

【难点】

1.综合运用策略模式来优化类的结构,解决实际开发业务、复杂工程问题;

2.融会贯通思政案例,提高人文素养。

三、教学设计

教学进程

安排

一、课前教学设计

  要求学生完成以下学习任务:

1. 学生预习教材第7章。

2. 学生通过学习资源平台或慕课平台学习“策略模式”微课视频,并完成预习作业。以下是微课视频截图:

3. 教师通过在线学习平台了解学生视频学习情况。以下是学生学习数据截图。

在预习过程中教师通过钉钉群为学生进行在线指导和答疑。以下为答疑截图。

二、【课堂教学设计】

(一)、【自学效果监测】(讲授教学法,10分钟,辅助工具:问卷星)

1、学生通过在线平台完成课前二次检测

课前发布问卷星复习&预习检测(https://ks.wjx.top/vj/exo8IZl.aspx),一可以提高大家的复习&预习积极性,二可以帮助大家更好的掌握该堂课重点。课上分析错题率和完成情况,下课前给予讲解。根据学生预习完成度可及时调整该次课教学重难点讲解时间。

2、【复习旧课,引入新课】

教师针对学生的学习效果检测结果进行点评并复习上节课核心内容:

利用上节课遗留作业题进行复习;通过学生预习完成度,教师讲解得分偏低的题目,引入新课重难点。

提出一个问题:用户完成一个目标选择不同的方式,根据时政阐述家国情怀提出居民打疫苗问题引出方式和策略两个关键字从而引出新课模式名称:策略模式。居民打疫苗阶段,选择什么途径打疫苗相当于选择什么策略完成打疫苗的目标。引发学生思考方式和策略之间有什么关系。

(二)、【课堂教学】(讲授教学法、案例教学法、演示教学法、讨论教学法、任务分析法,75分钟,辅助工具:课件)

1【案例驱动-提出问题】

【课堂互动设计】观看视频,提出“诸葛亮三个锦囊妙计”问题(人文),提出合适时机选择合适策略的思想。

案例分析:模拟鸭子游戏问题,介绍场景,给出版本1、版本2类的结构,并让学生分析案例设计是否合理?代码是否稳定?引出使用继承和单纯使用接口的缺点。

2、【分析问题&解决问题】

1)教师帮助学生分析该问题的解决思路,提出解决方法。

通过产生的问题引出第三个版本迭代解决的过程,引出涉及到的设计原则。为帮助学生更好的理解版本3的结构,类比一个现实案例:主板问题,用户通过主板自主选择显卡和声卡来类比第三个版本的运行过程。

从而引出策略模式的概念、类的结构(给出类图板书,重点)。从UML类图和代码两个层面帮助学生理解策略模式,并详细讲解案例代码。

2)指导学生完成类的设计和代码的编写(重点)。

3)教师总结该问题解决过程中的注意事项: 

A)编码规范:为行为接口类型声明两个引用对象;动态使用setStrategy( )方法(难点);

B)常见错误:例如策略参数传递。

3、【案例扩展】

教师提出一个针对上述案例的延伸问题体现知识点深度

题目:模拟鸭子游戏升级问题

在该问题的基础上,目前希望增加鸭子的类型,动态调整其中一个鸭子的飞行行为。希望学生给出类的设计和代码结构。

【引导学生思考&分组讨论】

1)学生分组讨论问题的解决思路; 

2学生以小组为单位完成程序的编码实现(团队合作,提供团队贡献值互评表); 

3鼓励小组派代表向大家讲解本组解决问题的思路和做法。

4.【深度实战:实际开发项目】

题目:电商平台项目

给出电商平台购物场景和题目要求,分析后模拟计算优惠的方式利用策略模式进行设计,并使用Java语言实现优化后的设计方案。

【分组讨论&独立练习】

(1) 学生分组讨论问题的解决思路; 

2)学生成员独立完成程序的编码实现; 

3)组内学生根据该问题引发思考,共同交流策略模式的使用场景;

4)分享知识:鼓励学生将思考成果分享给全体同学【板书】;

5)教师点评:鼓励同学发现问题,带动学生来“找茬”、“批改”,培养同学质疑批判精神

(三)、【归纳总结】(讲授教学法,5分钟)

内容:

1. 总结本节课重难点:概念及类的结构;描述适用场景广度延伸);通过人一生当中会面临不同方式选择来类比策略模式引发学生课下思考

2. 每个小组的学生代表总结本次课的收获、问题和不足;

3. 老师布置课后学习任务。

三、【课后教学设计】

1.通过作业系统布置课后作业,学生登录系统提交作业。以下是作业系统截图:

2.学生针对该知识点有疑问进行辅导答疑。

3.学生利用在线学习平台资源完成下次课内容的预习。

4.学生在慕课平台/混改平台系统上完成下次课微课“单例模式”的观看。

主要参考资料

1.教材《面向对象与设计模式》P70-76(第7-策略模式),辅助教材《Head First》;

2.学习平台对应章节微课视频;

3.学习平台对应章节学案及案例资料;

4.学堂在线视频参考http://www.xuetangx.com/courses/course-v1:USTC+USTC2006001+sp/about

课后总结分析

1.本次课程重点在于让学生理解策略模式并掌握如何运用,利用贴近生活的案例通过三次迭代能够更好的帮助学生清晰明确策略模式的结构,联系实际问题映射案例模块,简单明了,通过实践培养学生人文素养能力。

2.通过案例代码实践观察学生学情,发现难点在于理解策略的使用者和具体策略之间的关系,以及动态调整策略的代码书写,这部分需要继续强化代码练习。

3.针对深度实战环节的练习题,有部分同学没有参与其中,这部分学生需要多加时间课后复习。下节课上课前会针对学生复习遇到的疑难点进行提问和巩固。

四、思政考核设计

思政目标

目标:能够通过策略模式案例理解蕴含的人文精神和家国情怀,能够结合时代背景分析问题并解决;

类别:本此课程思政案例实现目标属于人文素养大类中人文积淀细别。

人文素养

人文积淀

古今中外人文领域传统文化和成果的智慧与精髓;人文思想中所蕴含的认识方法和实践方法。

人文情怀

以人为本,人的尊严和基本人权;人的生存、发展和幸福等。

审美感知

艺术知识对性格、情绪和品格的影响;文化艺术的多样性,发现、感知、欣赏、评价美的重要意义;健康的审美价值取向;生活中的艺术表达、艺术创意的重要性。

思政作业

1、 能力层面:

利用策略模式完成课堂案例:分析诸葛亮三个锦囊妙计选择问题的情境,完成类图设计和代码编写(技术层面);

1)评价方式:学生自评(文字)&教师评(分数)。

2)模板分享:

策略模式课堂作业

                                                班级:软件21005 姓名:张三

教师评:

分项

题目分析(1)

类图设计(2)

代码质量(2)

满分(5分)

分数

1

1

1

3

题目:

话说当年东吴孙权为刘备借走了荆州不还而耿耿于怀,却不料甘夫人去世,周郎顿时计上心来,让孙权将其妹嫁与刘备,骗刘备来东吴完婚。刘备又不是傻子,当然知道其中的猫腻,当即表态:打死也不去。诸葛亮却说无妨,给了赵云三个锦囊妙计,让他陪刘备去东吴完婚……最后的结果大家都知道,赵云在恰当的时候一一打开三个锦囊妙计,从而将危机一一化解。周瑜只落了个“周郎妙计安天下,赔了夫人又折兵”的笑柄。

分析:

诸葛亮一定是运用策略模式的高手,正确运用了策略模式做了三个锦囊,这样做的好处是,诸葛亮一个锦囊写一个妙计,思路清晰,不会让三个计策互相混乱,而策略的使用者赵云看妙计的时候也十分方便,如果诸葛亮为了省事将三个妙计写在一起做一个锦囊,就不能解决特定问题了。所以对照策略模式结构,赵云就是策略的使用者,诸葛亮完成了策略的封装,三个策略分别三个锦囊:“找乔国老走后门”、“求吴国太开绿灯”、“请孙夫人断后退兵”。赵云通过合适的时间选择合适的锦囊完成正确的目标。

类图:

代码:

public class Context{

private IStrategy strategy;

public Context(IStrategy strategy){

this. Strategy= strategy ;}

public void method(){

this.strategy.method();}}

public interface IStrategy{

public void method();}

pubic class BackDoor implements IStrategy{}

public class GivenGreenLight implements IStrategy{}

public class BlockEnemy implements ISTrategy{}

自评:

通过这个故事,我掌握了策略模式解决问题的思路,明白了不论是学习还是生活上为了更好的完成一个目标,可以在合适的时间选择合适的方式(策略),首先需要在场景中确定哪个对象是使用策略的角色,确定策略接口,明确要针对接口编程,而不是针对具体实现编程,接着要确定选择的方式(策略)有哪些,将他们当成独立的个体封装起来,供策略的使用者选择。

本题中,通过分析题目,确定了策略的使用者、抽象策略接口、具体策略三大模块,完成了该问题的类的设计。但是代码部分完成了一半,对测试类的掌握不到位,没有实现输出。

2、 素质层面

完成问题延伸思考

(1) 评价方式:提交到钉钉作业,学生互评(点赞/评论)

(2) 模板分享:

收藏本页