第1、2章--C和VC++语言概述

VC 面向对象程序设计 E mail heyue 13857582695 642695 学习目标与要求开设本课程的目的是使学生掌握使用面向对象程序设计语言 VC 进行应用程序设计的基本方法和技能 注重培养学生编程能力 分析问题和解决问题的能力 本课程的任务是使学生在复习C C 语言基本内容的基础上 进一步掌握VC 面向对象程序设计的基本概念 原理和方法 特别是 类和对象 继承与派生 多态性与虚函数 运算符重载等内容必须完全掌握 同时 全面了解和掌握在可视化环境中VC 的编程方法和技巧 学习方法 本课程的讲授是按章顺序进行 课前请做好预习 上课认真听讲 积极思考 仔细阅读教材中的大量例题 从而体会并最终掌握其中的编程方法和技巧 认真 独立 按时完成并提交作业 加强交流 多讨论 多阅读参考书 多请教 多提问 及时答疑解惑 重视上机实践 有效利用宝贵的上机时间 只有通过上机才能加深对概念的理解和认识 才能掌握编程方法和技巧 教材 VC 面向对象程序设计教程与实验 第二版 温秀梅等 清华大学出版社 2009 4参考教材 面向对象程序设计教程 冷英男李文超 电子工业出版社 2007 6 C 面向对象程序设计教程 陈维兴 陈昕 林小茶 清华大学出版社 2009 6 面向对象程序设计教程 Java版 C ThomasWu 机械工业出版社 2007 VisualC NET面向对象程序设计教程 赵卫伟 机械工业出版社 2011 8 教学环节 总学时 60学时 课堂教学 30学时上机实验 30学时 要求完成实验大纲中的7个实验自学 第九 十 十一 十二章作业 每章中间 结束后布置作业实验 每个实验后交实验报告 写在实验报告纸上 考核成绩 平时 10 上机实验 20 期末考 70 注 期末考试采用闭卷形式 内容安排 第1章绪论2学时 第2章C 对C语言的扩充4 4学时 第3章类和对象4 4学时 第4章友元4 4学时 第5章继承与派生6 6学时 第6章多态性和虚函数4 6学时 第7章输入输出流库4 4学时 第8章异常处理2 2学时 第9章MFC编程基础 第10章对话框和控制 第11章菜单和文档 视图结构 第12章图形设备接口 第一章C VC 语言概述 数理信息学院2009 8 面向对象技术概述 程序书写规范 数据类型 运算符和表达式 基本语句 函数 指针和引用 作用域和存储类型 本章主要内容 本章要点 掌握C VC 与C语言不同之处 掌握new delete 引用 内联函数和函数重载的意义和作用 掌握C VC 程序的基本结构 面向对象方法的起源 进入80年代 由于一系列高新技术的研究 使得软件设计人员的负担越来越重 软件的实现越来越庞大 传统的结构化程序设计思想已无法满足这一要求 为此 人们就开始寻求一种更能反映人类解决问题的自然方法 这就是 面向对象 技术 自80年代以来 出现了多种面向对象程序设计语言 简称为OOPL ObjectOrientedProgrammingLanguage 如Ada Smalltalk C 和当前使用在Internet上的平台无关语言Java等 由于OOPL的对象 类具有高度的抽象性 所以它能很好地表达任何复杂的数据类型 也允许程序员灵活地定义自己所需要的数据类型 类本身具有很完整的封装性 可以使用它作为编程中的模块单元 满足模块独立自治的需求 再加上继承性和多态性 更有助于简化大型软件和大量重复定义的模块 增强了模块的可重用性 提高了软件的可靠性 缩短了软件的开发周期 面向对象的认识观 天堂 客观世界 将客观世界中的事务抽象为对象 面向对象方法的本质 面向对象方法的本质 就是强调从客观世界中固有的事物出发来构造系统 用人类在现实生活中常用的思维方式来认识 理解和描述客观事物 突出最终建立的系统使之能够映射问题域 面向对象技术的基本概念 面向对象技术是一种以对象为基础 以事件或消息来驱动对象执行处理的程序设计技术 面向对象程序设计从所处理的数据入手 以数据为中心而不是以功能为中心来描述系统 因为数据相对于功能而言具有更强的稳定性 面向对象程序的主要结构特点 第一 程序一般由类的定义和类的使用两部分组成 在主程序中定义各对象并规定它们之间传递消息的规律 第二 程序中的一切操作都是通过向对象发送消息来实现的 对象接到消息后 启动有关函数完成相应的操作 面向对象的基本概念 对象 object 客观世界中的实体或者概念 可以将对象理解为事物 类 class 具有相似特点的一组对象 群体 对象由类统一描述 面向对象 object oriented 研究对象的属性和行为 对象间的关系以及对象间的活动 面向对象程序由类定义和对象的使用构成 对象的概念 一 面向对象技术认为客观世界是由各种各样的对象组成 每种对象都有各自的内部状态和运动规律 不同对象间的相互作用和联系就构成了各种不同的系统 构成了客观世界 对象是组成一个系统的基本逻辑单元 是一个有组织形式的含有信息的实体 对象既可以表示一个抽象的概念 也可以表示一个具体的模块 既可以表示软件 也可以表示硬件 对象的概念 二 对象 Object 由属性 Attribute 和行为 Action 两部分组成 属性是用来描述对象静态特征的一个数据项 行为是用来描述对象动态特征和行为的一个操作 对象是包含客观世界物体特征的抽象实体 是属性和行为的封装体 例 建立一个复数对象模型 类的确定 一 类 Class 是一个抽象的概念 用来描述具有相同属性和行为的一组对象的集合 类为属于它的全部对象提供了统一的抽象描述 类的内部包括属性和行为两个主要部分 类是对象集合的再抽象 划分原则 寻求一个大系统中事物的共性 将具有共性的系统成分确定为一个类 类的确定 二 确定某事物是一个类的步骤包括 第一步 要判断该事物是否有一个以上的实例 如果有 则它是一个类 第二步 要判断类的实例中有没有绝对的不同点 如果没有 则它是一个类 因为类的每一个实例是相似的 具有相同属性和行为类别结构 不能把一组函数组合在一起构成类 面向对象vs面向过程 消息和事件 事件 Event 用户或系统中发生的任何活动 消息 Message 是描述事件发生的信息 消息是对象之间发出的行为请求 多个消息构成一个事件 注 封装使对象成为一个相对独立的实体 其内部状态不因外界的干扰而改变 也不会涉及到其他对象 而消息机制为它们提供了一个相互间动态联系的途径 通过消息机制 把对象之间动态连接在一起 使它们的行为能互相配合 构成一个有机的运行系统 面向对象技术的基本特征 抽象性抽象就是忽略事物中与当前目标无关的非本质特征 更充分地注意与当前目标有关的本质特征 封装性封装就是把对象的属性和行为结合成一个独立的单位 并尽可能隐蔽对象的内部细节 继承性继承是一种联结类与类的层次模型 继承性是指特殊类的对象拥有其一般类的全部属性和行为的特性 多态性多态是指类中同一函数名对应多个具有相似功能的不同函数 多态性是指可以使用相同的调用方式来调用这些具有不同功能的同名函数的特性 结构化程序设计 面向过程的语言 设计思路 自顶向下 逐步求精程序结构 由模块形成的树形结构 强调的是功能抽象和模块化 基本组成结构 顺序 选择 循环程序 数据结构 算法 程序设计语言 语言环境 程序设计方法的发展 面向对象的方法设计思路 对客观事物的抽象程序特点 对类 对象的存在形式 进行结构化程序设计 强调的是功能抽象和数据抽象 类提供简单的对外接口C 在C语言基础上扩充的 C语言的超集支持OOP的最主要代表语言 程序 对象 对象 对象对象 算法 数据结构 程序设计语言 语言环境 面向对象程序设计优于传统的结构化程序设计 其优越性表现在 它有希望解决软件工程的两个主要的问题 软件复杂性控制和软件生产率的提高 此外它还符合人类的思维习惯 能够自然地表现现实世界的实体和问题 20世纪60年代 Simula语言就具有了类和对象的概念 70年代初 美国XeroxPaloAlto研究中心推出了Smalltalk 它完整地体现并进一步丰富了面向对象的概念 混合型面向对象程序设计语言 如C 这类语言一般是在传统的过程化语言中加入了各种面向对象的语言机制 它所强调的是运行效率 纯面向对象程序设计语言 如Java语言 面向对象程序设计语言 Visualc 的发展 1989年TurboCBorland 1991年TurboC 1 01Borland 1992年BorlandC C 3 0Borland 1995年VisualC 1 0Microsoft 1998年VisualC 6 0Microsoft 2001年VisualC netMicrosoft 一个简单的C 程序 C 程序的基本结构 includevoidmain doubler area 声明变量cout r 从键盘上输入变量r的值area 3 14159 r r 计算面积cout 圆的面积为 area n 输出面积 该程序经编译 连接 运行后 屏幕上显示 输入圆的半径 10 Enter 圆的面积为 314 159 问题 输入圆的半径 求圆的周长和面积 数据描述 半径 周长 面积均用实型数表示数据处理 输入半径r 计算周长 2 r 计算面积 pi r2 输出半径 周长 面积 一个简单的C 程序 例1 1方法一 用结构化方法编程 求圆的周长和面积 countthegirthandareaofcircle includevoidmain doubler girth area constdoublepi 3 1415 cout r girth 2 pi r area pi r r cout radius r endl cout girth girth endl cout area area endl 例1 1方法一 用结构化方法编程 求圆的周长和面积 countthegirthandareaofcircle includevoidmain doubler girth area constdoublepi 3 1415 cout r girth 2 pi r area pi r r cout radius r endl cout girth girth endl cout area area endl 数据描述 半径 r 周长 girth 面积 area 例1 1方法一 用结构化方法编程 求圆的周长和面积 countthegirthandareaofcircle includevoidmain doubler girth area constdoublepi 3 1415 cout r girth 2 pi r area pi r r cout radius r endl cout girth girth endl cout area area endl 数据处理 例1 1方法一 用结构化方法编程 求圆的周长和面积 countthegirthandareaofcircle includevoidmain doubler girth area constdoublepi 3 1415 cout r girth 2 pi r area pi r r cout radius r endl cout girth girth endl cout area area endl 输入数据 例1 1方法一 用结构化方法编程 求圆的周长和面积 countthegirthandareaofcircle includevoidmain doubler girth area constdoublepi 3 1415 cout r girth 2 pi r area pi r r cout radius r endl cout girth girth endl cout area area endl 计算周长和面积 例1 1方法一 用结构化方法编程 求圆的周长和面积 countthegirthandareaofcircle includevoidmain d