面向对象编程与设计
分享
课程详情
课程评价
spContent=在实践中,面向对象设计、设计模式以及编程语言Java已成为软件系统设计和编程实现的主流。课程内容组织以软件需求分析、面向对象设计与Java编程实现过程为主线,强调理论与实践、面向对象设计与编程实现并重(首先根据需求,构建设计方案,然后根据设计方案,进行编程实现,最后再反思设计方案)。
—— 课程团队
课程概述

1. 为什么要学这门课?

面向对象设计、设计模式以及编程语言Java等已成为软件系统设计和编程实现的主流。本课程根据时代需求,设计教学内容,培养计算机科学和软件工程专业学生从需求出发,进行面向对象UML类图设计和Java面向对象编程的必备知识、技能。

2.这门课的主题是关于什么?

本课程主题为“需求分析-UML类图设计-Java编程实现”,以“精(UML面向对象建模和Java面向对象编程的理论知识集中在80%情况下应用的重点、核心内容的无冗余性),实(内容以项目的需求分析、面向对象设计和面向对象实现为线索的务实性),练(以实际项目为导向,以解决方案多样性进行引导的实践性),新(与产业发展和需求契合的先进性)”为教学目的,将面向对象UML类图设计与Java面向对象编程有机结合,培养学生用面向对象的思想进行软件设计(即UML类图)的能力、应用面向对象语言Java进行规范化开发的能力。

3. 学习这门课可以获得什么?

(1)知识目标

(a)培养学生用面向对象的思想进行设计的能力。

    掌握UML语言中类图的语法和语义,以及用UML类图进行面向对象设计的方法,对于现实生活中的实际需求,会运用UML进行面向对象类图的设计,给出自己设计该软件系统的设计方案,并会类、类与类之间的关系以及用户需求,分析该设计方案是否可以实现用户功能。

(b)培养学生应用Java面向对象机制进行规范化编程的能力。

    掌握Java面向对象的编程特征:类封装性、异常处理机制、类的创建和应用、类与类之间的继承、继承导致的多态性、抽象类、接口、输入/输出原理,以及Java界面开发框架和原理,会使用面向对象的编程特征编写Java程序,并使编写的Java程序代码符合工业代码规范(包括注释和编码规范),具备高质量专业代码风范。

(c)培养学生运用设计模式的能力。

    掌握两种设计模式(单一实例设计模式和策略模式)的熟练运用,会根据实际应用场景,复用两种设计模式以提升面向对象设计方案的质量。

(2)技能目标

(a)可以根据需求规格说明,用UML类图进行面向对象解决方案的设计。

(b)可以运用UML编辑器绘制UML类图。

(c) 可以在UML类图的设计方案中复用设计模式。

(d) 可以用Java编程实现一个类图,包括实现类图中的各个类,以及类与类之间的关系和继承关系。

(e)可以用Java实现控制台读写和文件读写的功能。

(f) 可以运用Java为系统开发界面。

(g) 可以运用Java中的接口和抽象类优化设计类图中的基类,并提供接口、抽象类的实现。

(h) 可以使用集成开发环境Eclipse对Java进行开发和调试,完成一些编程任务,例如扩展现存程序的功能、提高现存程序模块的性能、调试和改正不符合需求规格说明的程序。

(i)可以用Java实现指定行为的类。

4. 这门课有什么特色和亮点

1)   具备国际先进教学内容设计的理念,内容组织方式以迭代式“需求分析-设计-分点实现”为线索

在对学生的心理认知特点进行分析的基础上,以“需求分析-设计-分点实现”为线索的方式进行内容组织,使面向对象设计理念深入浅出,逐步实现,逐步扩展,螺旋上升。课程内容独特的编排方式将面向对象设计与面向对象编程语言并重,与各个模块分课程进行独立讲解相比,在重点突出、强化和培养学生对知识的灵活应用能力和软件开发能力等方面更具有优势。

2)   以“任务”驱动和“工程项目”导向的方式阐释课程内容

本课程保证教学任务的“实践性”和解决问题的“多样性”,将接近企业实践的大型、系统的案例(图书管系统等)融入教学内容的各个环节,贯穿到面向对象理论、技术和实践的各个阶段点上,突出强调其工程性、应用创新性以及问题解决方案的多样化;帮助学生深入掌握和灵活应用所学知识。在课程中工程项目和具体任务的辐射下,结合教学活动,要求学生参与动手实践活动,提出自己的解决方案,实现具有应用价值的工程项目产品,对充分发挥学生的学习兴趣,提高学生自觉学习的能力和创新能力都具有重要的意义。课程还强调对学生规范化软件开发和职业素养的培养,重视学生职业实战能力和高层次工程素质的培养。

3)   精益求精的综合性、系统性、内聚性大类课程

从系统的思维模式出发建设教学内容,考虑该课程在软件工程学科的位置,以及该课程对学生职业生涯的影响,它的先修课程是C语言,后修课程有数据结构、网络编程、软件工程、J2EE架构与程序设计等,所以,该课程的内容设置与先修、后修课程应有很好的延续性、支撑性,避免重复,避免核心内容缺失,例如,与C语言重复的单词词法、运算符、表达式、控制流以及函数定义等相关语法细节,在本门课程中不再重复讲解;例如,对面向对象的类图设计,讲解的非常细致和完善,以支撑后续课程的学习。

以面向对象静态类图设计、类图的编程实现(Java面向对象机制)为主线的教学内容自成体系、有的放矢,教学内容是一个由面向对象基础设计、面向对象设计模式以及Java面向对象编程机制三个关联模块构成的系统,根据预先编排的教学顺序和组织对这3个模块进行内容设置,他们之间相互影响,互为基础,并体现理论与实践的关系、设计与实现的关系。

5)   与国内外同类课程的比较

国内大学针对软件专业,就面向对象技术方面开设的课程而言,主要涉及以下三类课程,相对应课程的授课学时约50-60学时不等,各软件工程相关专业一般开设下列课程中的2-3门。

a)    面向对象技术及其应用:主要讲解面向对象技术的基本概念、方法与当前的主要应用领域及发展方向等;

b)    面向对象分析与设计:主要讲解UML语法、UML静态建模和动态建模等;

c)    JAVA语言与面向对象程序设计:全面讲解Java的程序设计的基本概念、语法和相关技术;

上述课程一般分为三个学期,由不同的任课老师进行讲授,在国内面向对象的相关课程中,缺乏将面向对象设计和面向对象编程进行紧密结合的课程,更加缺乏大型、系统的案例对面向对象设计和编程内容进行全程贯穿的,这会导致学生学面向对象设计时不考虑编程实现,而集中于面向对象设计的语法或概念细节,学面向对象编程时不考虑面向对象软件的设计,而仅集中于编程语言的语法细节,这样非常不利于学生对面向对象思维、设计和实施进行系统地掌握和实践,软件工程专业的学生似乎“什么都会一些”,又不堪大用,无法主动完成创新型软件的研发,解决问题的能力弱,不能满足目前大型、国际化软件企业的高要求。

授课目标

课程目标1. 理解和掌握类和对象的概念,以及UML类图建模的含义具备寻求采用UML类图给出软件设计方案并对工程需求问题进行正确分析和建模的能力,掌握Java面向对象编程机制的原理,具备采用Java语言对类图进行编程实践的能力。(支撑毕业要求1-2)

课程目标2. 针对软件系统开发中的需求描述,能够采用面向对象分析技术和选择单一实例模式、策略设计模式,对工程需求问题进行分析,建立面向对象设计模型,能够分析该设计模型是否可以满足用户功能需求,并讨论设计方案的优缺点。(支撑毕业要求2-2)

课程目标3. 能够运用类、继承关系、关联关系、策略设计模式等面向对象设计元素,以及采用Java的类、接口、抽象类、容器、继承机制、输入输出、异常处理机制等编程原理,给出UML类图的编程实现方案,对选择的实现方案进行优化。(支撑毕业要求3-2)

课程大纲
预备知识

C语言或C++,

尤其是:

1、循环、分支等流程控制语句编程;

2、赋值、变量的作用域规则等

3、运算符等

4、变量的定义,函数的定义和调用等


证书要求

为积极响应国家低碳环保政策, 2021年秋季学期开始,中国大学MOOC平台将取消纸质版的认证证书,仅提供电子版的认证证书服务,证书申请方式和流程不变。

 

电子版认证证书支持查询验证,可通过扫描证书上的二维码进行有效性查询,或者访问 http://www.icourse163.org/verify,通过证书编号进行查询。学生可在“个人中心-证书-查看证书”页面自行下载、打印电子版认证证书。

 

完成课程教学内容学习和考核,成绩达到课程考核标准的学生(每门课程的考核标准不同,详见课程内的评分标准),具备申请认证证书资格,可在证书申请开放期间(以申请页面显示的时间为准),完成在线付费申请。

 

认证证书申请注意事项:

1. 根据国家相关法律法规要求,认证证书申请时要求进行实名认证,请保证所提交的实名认证信息真实完整有效。

2. 完成实名认证并支付后,系统将自动生成并发送电子版认证证书。电子版认证证书生成后不支持退费。


参考资料

主要参考教材:

马春燕《面向对象编程与设计》(第二版)(工业和信息化部“十二五”规划教材)西北工业大学出版社  2022年11月

常见问题

Q:哪些学生可以修这个课?

A:作为高等院校软件工程教育核心基础必修课程,也可作为计算机专业及相关专业的必修课程,以及软件开发人员的学习课程。


Q:这个课有什么特点?

A:以需求-设计-实现为线索,展开技术情节讲解,通过大量具体Java示例及贯穿全文的综合应用案例来阐述设计理念、编程技术和面向对象理论知识,具有较强的工程性和应用性。