《C程序设计语言》课程教学指导._第1页
《C程序设计语言》课程教学指导._第2页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、1C+程序设计语言课程教学指导(班级:200610587)编写:兰济昀测绘工程专业2006.82C+程序设计语言课程教学指导一、本课程的性质、目的面向对象程序设计是测绘工程专业的一门选修课程。 面向对象软件开发方法是吸收了软件工程领域有益概念和有效的方法而发展起来的一种软件开发方法。它集抽象性、 封装性、继承性和多态性于一体,可以帮助人们开发出模块化、数据抽象程度高的,体 现信息隐蔽、可复用、易修改、易扩大等特性的程序。本课程主要介绍面向对象程序设计的方法和C+语言的基本概念。以C+语 言中的面向对象机制为主。学习者在学习过程中可以通过大量的程序实例和相关练习, 逐步掌握C+的面向过程和面向对

2、象的功能, 从而掌握面向对象程序设计的基本知识 和基本技能。二、本课程的教学重点通过本课程的学习,可以使学生熟悉面向对象C+语言发展的历史、为什么要面向对 象、面向对象语言分类、C+中支持面向对象的特点及面向对象的软件开发环境Microsoft Visual C+,理解和掌握面向对象程序设计 (OOP)的基本思想及基本概念: 抽象、 继承、 封装、多态性,掌握使用C+语言进行面向对象编程的技术:函数重载、运算符重载、内 联函数、虚函数、友元函数,编写实现“继承”和“多态性”的C+程序, 初步认识VC+应用程序设计方法及过程。理论部分:本课程的教学应着重立足于:1、掌握C+程序设计语言的基本语法

3、与规则。 。2、灵活运用过程化编程方法,对一些简单的问题,能通过编程实现加以解决。3、基本把握各语法现象,重点把握函数、程序结构、指针、引用、类概念。对一 些简单的程序设计实例,会举一反三。4、了解结构化程序设计和面向对象程序设计方法之差别, 理解面向对象程序设计 的方法。5、能够分析面向对象程序的程序结构,阅读和理解面向对象的程序。6、能够简单模仿面向对象程序,并能上机实现之。实践部分:鉴于本课程具有很强的实践性, 本课程教学的另一个重点是应注重在计算机上的实 践,并辅之以课程作业和实验等实践性教学环节。三、本课程教学中应注意的问题1、理论教学环节与实践性教学环节的有效结合;2、 培养学生的

4、自主学习能力;33、 本课程有很多方法性的讲述,应多用教学案例与课程教学内容密切结合,增加 学生的可接受性和兴趣;四、本课程的教学目的通过本课程所有教学环节,应使学生全面了解C+语言的数据类型、语句及结构特点, 系统掌握程序设计方法, 培养良好的程序设计风格和习惯, 培养上机解题调试程序 的能力。五、本课程采用的教学方法本课程的主要理论、 技术和方法等主要内容可采用课堂讲授(多媒体) 方法, 实验采用 分别上机,统一指导的方式。六、课程教学资料教材:C+ +程序设计基础,张基温,高等教育出版社,2003年2月参考书:1C+程序设计语言教程,麦中凡,北京航空航天大学出版社。2.C+程序设计语言,

5、Bjarne Stroustrup蓍,麦中凡等译。3.C+语言程序设计,郑莉,傅仕星,清华大学出版社。七、成绩评定1、平时课程作业、实习报告占本课程考核总成绩的30%,考试占70%。2、根据西南科技大学学分制学籍管理暂行办法(西南科大发2001207号)第十二条规定:有下列情形之一者,取消考核资格,必须重修。1、学生(免修生除外)在一学期内, 无论何种原因, 累计缺课达教学时数的三分之一者; 或任课教师随机抽查缺课6次以 上者;2、有实验、作业等环节的课程,学生未按时完成实验、实验报告及作业等环节。抄 袭他人实验报告、作业的,当事人双方的实验报告、作业均按作弊处理,根据学生的认错态 度和补做情

6、况,可以考虑是否给予取消考核资格。八、先修课程要求本课程学生应修完计算机基础课程。九、课程内容课时安排第一章 面向对象程序设计基本概念与发展2学时从传统编程的缺陷出发,介绍面向对象编程的发展历史与优势,介绍数据抽象、封装、可重用性、 继承和多态性等面向对象的概念, 引入了对象和成员函数的定义。 讲授时注意从 过程式到面向对象编程思想的过渡。41.1简介 。比较面向对象与传统编程的优劣。1.1.1面向对象方法。 现实世界中的一切都可以看作对象, 这样的定义过程最接近人类思维。1.1.2传统编程的缺陷。程序的复杂性、海量数据的处理、应用程序的维护、版本升级、跨 平台移植对传统编程都是极大的挑战。1

7、.1.3面向对象编程简介。 面向对象编程以最接近人类思维的方式将现实世界中的对象映射 为编程解决方案中的实体,把代码和数据有机地结合了起来。1.2基本的面向对象概念(重点) 重点讲述对象、类、封装、抽象和可重用性的概念。通过举例来说明数据隐藏和封装。1.2.1对象。对象是定义了边界的、与要解决的问题有关的概念或事物,能帮助理解现实世 界,并为计算机应用程序提供实用基础。1.2.2类 。类是拥有相同特性、共同的行为和共同的关系的一组对象。类本身具有属性和 方法。类是一种一般化的概念,具有普通性和灵活性。1.2.3抽象 。数据抽象是将与某个特定实体有关的特性和方法标识为与应用程序相关的过 程。例如

8、:将对象归为类的过程。1.2.4继承。继承是允许通过重用现有类来构建新类的特性。其中,现有类称为超类,新类 称为子类。1.2.5封装 。封装是允许有选择地隐藏类中的特性和方法的过程,可以有效地保护数据不 被破坏。1.2.6可重用性。可重用性表现在可以与应用程序共享信息、可以在版本升级和维护中重用 设计和代码。继承有助于可重用。1.2.7多态性 。多态性使同一函数在不同的类上具有不同的行为。多态性有助于封装。1.3类和结构的比较。类和结构很相似,但类不仅包括数据成员(默认私有) ,还包括函数 (默认公有) ,而结构只有数据元素(默认是公有的) 。要求: 了解面向对象程序设计的基本思想及基本概念,

9、面向对象语言的分类和类的特性。第二章。 面向对象的程序设计环境4学时2.1面向对象的软件开发环境。Visual C+开发工作台简述:F ile菜单;E dit等菜单2.2类库MFC。什么是MFC的结构层次;MFC分层概述;2.3应用程序框架及交互界面的开发。 控制类及其编程实现; 实现菜单和对话框控制; 文档 和视图;单文档界面;多文档界面。要求: 了解visual C+的消息机制,Visual C+的基本类库MFC。Visual C+应 用程序框架及交互界5面的开发的过程与步骤。第三章C+基本语句和程序结构6学时3.1 C+变量定义。介绍C+中相关数据类型,运算符,表达式。可重点介绍条件运算

10、符 与条件表达式,赋值运算符和赋值表达式,逗号运算符与逗号表达式。3.2 C+输入/输出语句 。介绍C+中常用输入/输出语句cin ,cout及输入输出格 式控制及处理方式。3.3 C+函数定义与程序基本结构 。介绍C+语言函数定义,重点是参数的引用传递和重 载函数,掌握C+程序编写基本结构及注意事项,遵循的原则。3.4函数重载。 函数重载即函数多态性, 它定义一组函数,他们具有相同的名称、 并执行基 本相同的操作,但使用不同的参数列表。它有助于轻松理解、调试、维护代码。3.5引用参数 。比较按值传递和按引用传递:按值传递会做一个参数的副本,函数对副本 所做的任何修改都不会影响原始变量;而按引

11、用传递使函数能够访问调用程序中的实际变 量。按引用传递 (难点),从函数中返回引用, &号就是使一个函数返回引用变量的方法。3.6内联函数。 理解只有在少量经常重复使用某代码片段时需要定义内联函数,节约执行时间。3.7 C+编程环境简介。介绍VC+编程环境,以便让学生熟悉VC+开发工具。要求: 学生在学习程序设计基础上, 掌握C+语言的基本语法及基本语句, 尤其是C+对 比于C语言函数定义中增加的部分内容,熟悉VC+的编程环境和C+基本程序设计方 法。第四章 类与对象4学时介绍简单类的定义方法,成员与成员函数的定义形式。7.3类定义的语法结构7.4类的数据成员与成员函数 。介绍成员的公

12、有、保护、私有特性,掌握const、静态 数据成员、静态函数、内联成员函数换等几个重要的编程概念。7.5类定义的几种形式 。成员函数在类内定义; 成员函数在类外定义; 成员函数在另一文 件中定义。 类的作用域运算符(:)。为避免类定义变得过于庞大,使用类作用域运算符 在类外部定义成员函数。 全局变量和局部变量共享同一名称时, 使用类作用域运算符引用全 局变量。4.5定义对象 。声明类的实例:对象。声明一个对象,指向对象的指针,对象数组。对象 成员与成员函数的使用,使用保护成员与公有成员的方法。8.1动态内存分配。new和delete是C+的内置函数,用于动态内存分配。malloc()和free

13、()虽然在C+中可用,但不提倡使用。理解this指针的的含义。要求: 掌握类定义的几种形式及特点,掌握对象使用的方法,理解指向对象的指针概念及 访问形式(-)。6重点是理解域作用符(:)的使用。第五章 构造函数与析构函数4学时9.1构造函数 。构造函数是一种特殊的成员函数,能够自动初始化对象。它有以下特点:9.1.1)无论何时创建对象,它都将被执行9.1.2)与其所属的类同名9.1.3)没有任何返回类型9.1.4)构造函数可以重载9.1.5)一旦定义了一个构造函数,就必须定义默认构造函数。9.2.5复制构造函数。 复制构造函数包含一个对象作为其参数, 只有在: 类的对象被初始化为 同一类的另一

14、个对象时、 或对象被作为参数传递给一个函数市、 或函数返回一个对象时需要。 注意区分构造函数、复制构造函数、赋值运算符重载函数。9.2.5析构函数 。析构函数是在销毁对象时自动调用的成员函数。它有以下特点:不能从类 直接调用,与其所属的类同名,没有任何参数、任何返回类型。要求 :理解构造函数、析构函数的作用,掌握构造函数、析构函数定义的方式及特点。第六章 友元函数4学时友元函数。无论在面向对象的编程中数据隐藏和封装的策略如何,在需要对私有数据的访问时,必需友元函数。注意友元函数的特性:只能访问私有部分、不具有this指针、可放在类定义的任意位置、不需要类作用域运算符。友元类(难点)。当特定类的

15、所有函数或者大部分函数必须访问另一个类的私有部分时, 可以把这个类定义为友元类。但是友元关系不能传递、只是单向的。转换函数(难点)。介绍用户定义类型和基本数据类型之间以及不同的类对相间的转换。从基本数据类型到用户定义类型。从基本数据类型到用户定义类型需要在目标类中定 义构造函数从用户定义类型到基本数据类型。从用户定义类型到基本数据类型需要在源类中定义 转换函数不同类的对象之间的转换。不同类的对象之间的转换需要在目标类中定义构造函数或在 源类中定义转换函数。要求: 掌握如何使用友元函数访问私有数据。7第七章 运算符重载4学时运算符重载。运算符重载是 多态性的一种形式,它将现有运算符与成员函数相关

16、联, 并且与其类对象一起用作操作数。 但不能改变运算符的基本功能、 不应改变其自然含义、 只 能重载已经存在的运算符且仅对类对象适用。注意书写的标准格式。一元运算符 。一元运算符重载应用于一个类对象, 可以返回: 显式临时类对象或匿名 类对象或this指针,特别指出定义一元后缀运算符重载要使用哑元参数。二元运算符。二元运算符可以通过:成员函数包含一个形参的方式进行重载(即obj1.operator+(Sampleobj2) , 或含有两个参数的友元函数的方式进行重载 (即operator+ (Sampleobj1,Sampleobj2),一定要明确两个类对象在重载中的实际位置。重载赋值运算符(

17、难点)默认赋值运算符 (即一般的赋值运算) 仅将源对象逐字节复制到目的对象; 而重载赋值运算 符解决了空指针赋值的难题, 注意在形参列表中和返回类型中使用了引用, 大量地节省了内 存空间。不能重载的运算符列出不能重载的运算符。要求: 利用重载的典型案例讲述一元、二元运算符重载、赋值运算符重载,并介绍复制构 造函数、 转换函数,对于难点部分应该重点讲解, 使学生学会编写重载运算符函数和数据类 型转换函数。第八章 继承4学时425-9ba8-3a8b8c0bf7cd-Numbered_72f1d15f-c93e-4485-ae单继承 。单继承是从现有的一个基类创建新类的过程,继承使得代码可以重用。

18、425-9ba8-3a8b8c0bf7cd-Numbered_72f1d15f-c93e-4485-ae基类和派生类 。派生类继承基类的属性和方法,同时可以有自己的特性。类可以多 级继承,因此有直接基类和间接基类之分。425-9ba8-3a8b8c0bf7cd-Numbered_72f1d15f-c93e-4485-ae访问基类成员 。基类成员的访问规则的理解。重点讲解类指针的使用:指向派生类 的指针可以赋给指向基类的指针类型变量,使学员能够灵活使用这一特性。425-9ba8-3a8b8c0bf7cd-Numbered_72f1d15f-c93e-4485-ae继承的类型 。深刻理解从公有派生

19、类、私有派生类或保护性的派生类对基类成员的 可访问性,说明多级继承对可访问性的影响。425-9ba8-3a8b8c0bf7cd-Numbered_72f1d15f-c93e-4485-ae继承下的构造函数和析构函数。 构造顺序为:基类构造函数-派生类构造函数, 析构顺序为:派生类析构函数-基类析构函数,注意派生的书写格8式。425-9ba8-3a8b8c0bf7cd-Numbered_72f1d15f-c93e-4485-ae调用成员函数 。如果派生类的成员函数要调用同名称的基类成员函数,则必须使用 类作用域运算符。425-9ba8-3a8b8c0bf7cd-Numbered_72f1d15f

20、-c93e-4485-ae容器类。 继承是“是”的关系, 而容器类是“包含”、“有”的关系。要求: 通过掌握OOP的继承和容器类概念, 熟练掌握基类和派生类的成员函数、 构造和析 构的顺序,理解容器类与继承的不同。第九章 多重继承和多态性4学时a8-9081-d35164e38b83-Numbered_ed285c11-a4f7-4bae-85b4-2a%521f1fd777d-Numbered_ed23cd80-a5d7-4ea5-83e多重继承。 多重继承是从多个基类中创建一个新类的过程, 它在多个基类的成员使用 相同名称时导致的多义性将使用作用域运算符解决。攀 愀挀 攀愀攀 一甀洀戀攀爀

21、攀搀开戀攀 愀 昀 %24833 昀 攀攀搀愀攀戀 一甀洀戀攀爀攀搀开搀搀搀 挀 攀攀愀攀昀 一甀洀戀攀爀攀搀开戀挀 搀戀 戀挀愀攀攀戀 一甀洀戀攀爀攀搀开愀重继承下的构造函数。 理解多重继承的派生类实例对象化时的调用顺序是: 基础 类按照在基类列表中的顺序构造: 基类1、基类2,, 对象本身使用其自身的构造函数 代码;多重继承的派生类对象析构时顺序正好相反。攀 愀挀 攀愀攀 一甀洀戀攀爀攀搀开戀攀 愀 昀 %24833 昀 攀攀搀愀攀戀 一甀洀戀攀爀攀搀开搀搀搀 挀 攀攀愀攀昀 一甀洀戀攀爀攀搀开戀挀 搀戀 戀挀愀攀攀戀 一甀洀戀攀爀攀搀开愀重继承中的多义性。多个基类使用相同的函数或数据成员

22、名称时的多义性问题需 要:使用作用域运算符解决,派生类重写产生该多义性的函数。攀 愀挀 攀愀攀 一甀洀戀攀爀攀搀开戀攀 愀 昀 %24833 昀 攀攀搀愀攀戀 一甀洀戀攀爀攀搀开搀搀搀 挀 攀攀愀攀昀 一甀洀戀攀爀攀搀开戀挀 搀戀 戀挀愀攀攀戀 一甀洀戀攀爀攀搀开愀用公共基类的多重继承 。使用公共基类的多重继承引出虚基类的使用。a8-9081-d35164e38b83-Numbered_ed285c11-a4f7-4bae-85b4-2a%521f1fd777d-Numbered_ed23cd80-a5d7-4ea5-83e虚基类(难点) 。多重继承下的公共基类导致了子对象的多个副本,因此有必

23、要使用 虚基类的概念。构造函数和析构函数 。虚基类的出现将导致对象实例化的顺序为:按照继承图中的 多个虚基类的位置从上到下、 从左到右实例化, 基类初始化, 成员对象的构造, 类构造函数; 析构顺序正好相反。a8-9081-d35164e38b83-Numbered_ed285c11-a4f7-4bae-85b4-2a%521f1fd777d-Numbered_ed23cd80-a5d7-4ea5-83e指向对象的指针 。指向对象的指针可以通过箭头运算符访问成员函数。a8-9081-d35164e38b83-Numbered_ed285c11-a4f7-4bae-85b4-2a%521f1fd

24、777d-Numbered_ed23cd80-a5d7-4ea5-83e虚9函数。讲解为达到编译器在运行时从正确的派生类中选择函数必须使用 虚函数;在派 生类层次结构中,必须在最高层上声明虚函数,而且必须在派生类中重新定义虚函数,并与虚函数准确匹 配。a8-9081-d35164e38b83-Numbered_ed285c11-a4f7-4bae-85b4-2a%521f1fd777d-Numbered_ed23cd80-a5d7-4ea5-83e多态性。 多态性是将不同类的许多对象定义为一组, 并使用不同函数调用来执行对象 操作的过程,如:运算符重载、函数重载等等。a8-9081-d3516

25、4e38b83-Numbered_ed285c11-a4f7-4bae-85b4-2a%521f1fd777d-Numbered_ed23cd80-a5d7-4ea5-83e动态绑定 。编译时按照普通方式选择函数即为静态绑定,编译器会使用静态类型指 针来决定成员函数的调用是否合法; 而动态绑定是在成员函数的调用中, 根据运行时的动态 类型,可能在最后时刻决定代码地址。如虚函数,灵活性高但会增加系统开销。a8-9081-d35164e38b83-Numbered_ed285c11-a4f7-4bae-85b4-2a%521f1fd777d-Numbered_ed23cd80-a5d7-4ea5-

26、83e纯虚函数。 纯虚函数是一种函数类型, 只有函数声明, 因此无法创建包含纯虚函数的 对象,只能对该包含纯虚函数的类进行派生从而实现。a8-9081-d35164e38b83-Numbered_ed285c11-a4f7-4bae-85b4-2a%521f1fd777d-Numbered_ed23cd80-a5d7-4ea5-83e抽象类。 讲解凡是包含纯虚函数的类都成为抽象类, 抽象类的派生类必须重新定义抽 象类中的所有方法,抽象类就是用于多层结构体系的中间件。a8-9081-d35164e38b83-Numbered_ed285c11-a4f7-4bae-85b4-2a%521f1fd777d

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论