《面向对象程序设计》教学大纲(Object-orientedProgramming)课程代码:11010070学位课程/非学位课程:学位课程学时/学分:68/4.5(实验20学时)先修课程:《计算机基础》、《C语言程序设计》一、课程在人才培养中的地位和作用面向对象软件开发方法是吸收了软件工程领域有益的概念和有效的方法而发展起来的一种软件开发方法。它集抽象性、封装性、继承性和多态性于一体,可以帮助人们开发出模块化、数据抽象程度高的,体现信息隐蔽、可复用、易修改、易扩充等特性的程序。这种方法和思想一出现即引起计算机界、软件界的极大关注,已成为软件项目开发中广泛使用的基本思想与方法,更是软件工程从事人员必须具体的一种基本素质与能力。本课程是软件工程、网络工程专业本科生的一门重要的专业必修课程,也是软件工程专业的学位课程。作为研究工程方法与技术层次的学科,本课程以阐述面向对象程序设计方法为中心,结合VisualC++集成环境中面向对象程序设计实践,逐步揭示面向对象程序设计的本质特性,树立对软件所要处理问题域的正确认识,并能把这种认识正确描述出来。为今后进行软件设计打下良好的技术与方法基础。二、课程教学目标本课程教学主要目标:通过对《面向对象程序设计》的方法和《c++语言》的基本概念的介绍,让学生了解面向对象的基本概念和使用面向对象技术进行程序设计的基本思想。学习使用c++语言进行一般面向对象的程序设计,初步掌握面向对象编程环境visualc++的使用,为大型应用软件设计与开发打下良好的理论和实践基础。(一)知识目标通过本课程的学习,应使学生全面了解面向对象方法的发展状态,掌握《C++程序设计》的基础知识,理解与对象的基本概念、定义,理解利用类来解决实际问题的方法,理解并掌握类的封装、继承、派生、多态四个特性的实质及实现方法,掌握C++中数组、指针及字符串的基本操作,理解模板的概念,掌握模板使用方法,了解群体数据的组织方式及泛型编程意义,了解MFC和Windows程序开发的基本知识。(二)能力目标通过《面向对象程序设计》课程的教学,应注意培养学生以下能力:(1)独立获取知识的能力——逐步掌握科学的学习方法,阅读并理解与面向对象程序设计方法与开发技术相关的教材、参考书和科技文献,不断地扩展知识面,增强独立思考的能力,更新知识结构;能够写出条理清晰的读书笔记、小结或小论文。(2)科学观察和思维的能力——运用《面向对象程序设计》的基本理论和基本观点,通过观察、分析、综合、演绎、归纳、科学抽象、类比联想、实验等方法培养学生发现问题和提出问题的能力,并对所涉问题有一定深度的理解,能判断研究结果的合理性。(3)分析问题和解决问题的能力——根据软件工程实际问题的特征、性质以及实际情况,抓住主要矛盾,进行合理的简化,建立相应的逻辑实体模型,并用形式语言和程序设计语言进行描述,运用所学的面向对象程序设计研究方法进行问题分析和研究。(三)素质目标通过《面向对象程序设计》课程教学,应注重培养学生以下素质:(1)求实精神——通过《面向对象程序设计》课程的教学,培养学生追求真理的勇气、严谨求实的科学态度和刻苦钻研的作风。(2)创新意识——通过学习《面向对象程序设计》的研究方法、面向对象程序设计的发展历史以及实际问题分析应用等,引导学生树立科学的世界观,激发学生的求知热情、探索精神、创新欲望,以及敢于向旧观念挑战的精神。(3)科学美感——引导学生认识面向对象程序设计所具有的明快简洁、均衡对称、奇异相对、和谐统一等美学特征,培养学生的科学审美观,使学生学会用美学的观点欣赏和发掘科学的内在规律,逐步增强认识和掌握自然科学规律的自主能力。三、课程教学内容(一)课程的知识体系知识领域1:C++语言基础(CB)知识单元CB1:C++运行环境介绍(1学时)知识单元CB2:C++程序结构(3学时)知识单元CB3:C++函数(5学时)知识领域2:面向对象技术实现(OOD)知识单元OOP1:类与对象概念(6学时)知识单元OOP2:类封装与数据共享(6学时)知识单元00P3:复合类与对象操作(6学时)知识单元OOP4:类的继承与派生(7学时)知识单元OOP5:类的多态性(8学时)知识领域3:边界操作与调试(IOD)知识单元IOD1:流类库与输入输出(3学时)知识单元IOD2:异常处理(1学时)知识领域4:面向对象技术扩展(OOE)知识单元OOE:API与MFC程序设计(2学时)(二)课程涵盖的知识单元序号知识领域核心知识单元(参考学时)选修知识单元(参考学时)1C++语言基础CB1(1),CB2(3),CB3(4)2面向对象技术实现OOP1(6),OOP2(6),OOP3(6),OOP4(6),OOP5(6)3边界操作与调试IOD1(3),IOD2(1)4面向对象技术扩展OOE(2)(三)知识单元的描述知识单元CB1:C++运行环境介绍参考学时:1学时知识点:面向对象设计概念VisualC++环境安装与配置VisualC++程序开发流程学习目标:1.了解面向对象的基本概念;2.掌握VisualC++菜单与工具栏使用;3.掌握VisualC++中程序开发流程;4.掌握基本的调试技巧。知识单元CB2:C++程序结构(核心)参考学时:3学时知识点:简单数据类型与表达式数据的输入输出基本控制结构自定义数据类型学习目标:1.理解基本数据类型的定义、范围;2.掌握运算符和表达式的使用;3.掌握基本的输入和输出函数;4.理解程序基本结构;5.理解自定义数据类型。知识单元CB3:C++函数(核心)参考学时:5学时知识点:函数定义与使用内联函数带默认值函数函数重载使用C++系统函数学习目标:1.理解函数基本结构与关系;2.理解内联函数、函数重载的概念;3.掌握内联函数使用方法;4.掌握带默认值函数的使用方法;5.掌握函数重载的使用方法;6.掌握C++系统函数的调用方法。知识单元OOP1:类与对象概念(核心)参考学时:6学时知识点:面向对象程序设计特点类与对象的声明与定义构造函数与析构函数类的组合UML图形标识(类与对象)学习目标:1.理解面向对象的设计方法;2.理解类与对象的概念;3.掌握C++中类与对象的创建方法;4.掌握组合类的使用技术;5.了解UML图像标识的含义;6.掌握UML类图、对象图的绘制。知识单元OOP2:类封装与数据共享(核心)参考学时:6学时知识点:作用域与可见性概念对象的生存期类的静态成员类的友元与共享数据保存多文件结构与编译预处理学习目标:1.理解作用域、可视性、生存期的基本概念;2.掌握不同作用域的设置;3.掌握类的静态成员的使用方法;4.掌握类的友元使用方法;5.掌握多文件结构及编译预处理的设置。知识单元00P3:复合类与对象操作(核心)参考学时:6学时知识点:数组的声明与使用指针的声明与使用动态内存分配、深拷贝与浅拷贝字符串操作学习目标:1.理解数组、指针及动态内存分配的基本概念;2.掌握数组的使用方法;3.掌握不同类型指针的使用方法;4.掌握动态内存分配技术的使用;5.了解C++语言中的字符串操作的特殊性。知识单元OOP4:类的继承与派生(核心)参考学时:7学时知识点:类的继承与派生定义访问控制与兼容规则派生类的构造和析构函数派生类成员的标识与访问学习目标:1.理解类的继承与派生关系、访问控制与兼容规则;2.掌握派生类的设计方法;3.掌握类族对象数据传递方法。知识单元OOP5:类的多态性(核心)参考学时:8学时知识点:多态性类型与实现运算符重载虚函数与抽象类函数模板与类模板学习目标:1.理解各种多态性的意义;2.理解虚函数、抽象类的概念;3.理解模板的意义与基本概念;3.掌握运算符重载的实现方法;4.掌握虚函数与抽象类的设计方法;5.掌握函数模板与类模板的设计与使用方法。知识单元IOD1:流类库与输入输出参考学时:3学时知识点:I/O流的概念及流类库结构输入/输出流异常处理思想C++异常处理的实现异常处理中的构造与析构学习目标:1.理解I/O类的概念与流类库的结构;2.掌握输入/输出流的使用方法;3.理解异常处理思想;4.掌握C++中异常处理的设计方法。知识单元IOD2:异常处理参考学时:1学时知识点:异常处理思想C++异常处理的实现异常处理中的构造与析构学习目标:1.理解异常处理思想;2.掌握C++中异常处理的设计方法。知识单元OOE:API与MFC程序设计参考学时:2学时知识点:Windows的编程模式MFC简介Windows程序开发步骤学习目标:1.理解windows的编程模式;2.了解MFC体系结构;3.初步掌握windows图形界面程序开发过程。四、教学方法与手段1.教学方法和教学手段教学方法——采采用启发式、讨论式等多种行之有效的教学方法,加强师生之间、学生之间的交流,引导学生独立思考,强化科学思维的训练。习题课、讨论课是启迪学生思维,培养学生提出、分析、解决问题能力的重要教学环节,应在教师引导下以讨论、交流为主,学时数应不少于总学时的10%,争取做到不少于15%。鼓励通过网络资源、专题讲座、探索性实践、小课题研究等多种方式开展探究式学习,因材施教,激发学生的智力和潜能,调动学生学习的主动性和积极性。教学手段--应发挥好课堂教学主渠道的作用,教学手段应服务于教学目的,提倡有效利用多媒体技术。应积极创造条件,充分利用计算机辅助教学、网络教学等现代化教育技术的优势,扩大教学信息量,提高教学质量和效率。2.课程主要教学方式的学时分配表学时讲授讨论课习题课实验C++运行环境介绍11C++程序结构33C++函数541类与对象概念6411类封装与数据共享6411复合类与对象操作651类的继承与派生7511类的多态性8611流类库与输入输出33异常处理11API与MFC程序设计22实验2020合计(45)68385520教学环方式学时教学内容3.课程实验项目与学时分配表序号实验项目名称实验编号必(选)修学时实验类型1实验一VC++开发环境应用入门1101007001必修122实验二C++简单程序设计1101007002必修123实验三函数的应用1101007003必修224实验四类与对象1101007004必修225实验五C++程序的结构1101007005必修226实验六数组、指针与字符串1101007006必修227实验七继承与派生1101007007必修228实验八多态性1101007008必修229实验九模板函数与模板类1101007009必修2210实验十创建面向对象程序1101007010必修43注:实验类型:填写代码:1—演示性;2—验证性;3—综合性;4—设计研究;5—其它五、作业要求1.课外作业:本课程计划约每6学时布置一次作业,可使用教材上的习题,也可自行编制习题集。另外布置专题小论文和读书笔记及课外阅读等丰富课外作业内容。2.课外阅读与自学:提供:MSDN主页(中国-简体中文)编程论坛://程序设计等相关技术的宝贵资料。可以丰富学生的学习内容。自主学习:通过提供的这些网络学习平台,学生在线答疑、实验、交流,另外,学生也可以利用网络课堂、图书馆的图书资料、及院(系)资料室中的专业书籍进行自学、复习、个性化学习。六、教材和主要参考书(一)教材【1】郑莉等.《C++语言程序设计》(第3版).清华大学出版社,2006年.(二)主要参考书1.入门阶段的书籍【1】《EssentialC++中文版》非常适合初学【2】《数据结构算法与应用C++语言描述》提供了很多实际的例子2.提高阶段的书籍【1】《C++编程思想》【2】《EffectiveC++中文版2ndEdition》【3】《MoreEffectiveC++中文版》3.优化方法的书籍【1】《设计模式--可复用面向对象软件的基础》