面向对象编程与设计
分享
课程详情
课程评价
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类图进行面向对象设计、Java面向对象规范化编程、面向对象设计模式3方面的知识水平。

2.   具有下述7方面的能力水平:

1)   根据需求完成类图设计和绘制;

2)   用Java实现类图,包括类、类与类之间关系的实现;

3)   用Java实现控制台和文件读写;

4)   用Java为系统开发界面;

5)   用Java接口和抽象类优化类图,并提供接口、抽象类实现;

6)   用集成开发环境Eclipse开发、调试Java程序,完成编程任务,例如扩展程序功能、提高程序性能、改正不符合需求的程序;

              7)实现指定行为的类。


课程大纲
预备知识

C语言或C++,

尤其是:

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

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

3、运算符等

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


参考资料

主要参考教材:

马春燕《面向对象思维、设计与项目实践》(工业和信息化部“十二五”规划教材)西北工业大学出版社   ISBN:9787561243732

其它参考教材:

1.   Beginning Java Objects From Concepts to Code, Second Edition,Jacquie barker.(设计,java面向对象编程)

2.   Java编程思想, 最新版, Bruce Eckel著,陈昊鹏 译,机械工业出版社(Java编程查阅)

3.   Effective Java, Joshua Bloch 著,潘爱民 译,机械工业出版社(Java编程查阅)

4.   Head First 设计模式 (中文版)   中国电力出版社  

5.   UML for Java Programmers,Robert Cecil Martin,Prentice Hall, Englewood Cliffs, New Jersey 07632(UML设计查阅)