第6章 面向对象编程技术.ppt_第1页
第6章 面向对象编程技术.ppt_第2页
第6章 面向对象编程技术.ppt_第3页
第6章 面向对象编程技术.ppt_第4页
第6章 面向对象编程技术.ppt_第5页
已阅读5页,还剩37页未读 继续免费阅读

下载本文档

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

文档简介

第1章VisualC 概述第2章C 语法基础第3章顺序结构程序设计第4章选择结构程序设计第5章循环结构程序设计第6章面向对象编程技术第7章继承 第8章数组与自定义类型第9章菜单 工具栏与状态栏第10章鼠标键盘事件第11章ActiveX控件第12章数据库技术第13章开发Web应用程序第14章异常处理与部署应用程序 下一页 VisualC 2005程序设计 上一页 章节目录 上一页 下一页 第6章面向对象编程技术6 1类和对象6 1 1类和对象概述现实生活中的类是人们对客观对象不断认识而产生的抽象的概念 而对象则是现实生活中的一个个实体 面向对象程序设计的类概念从本质上和人们现实生活中的类概念是相同的 类是一种数据类型 在C 中 类分为两种 由系统提供的预先定义的 这些类在 NET框架类库中 用户定义数据类型 章节目录 上一页 下一页 在创建对象之前必须先定义该对象所属的类 然后由类声明对象 在VisualStudio集成环境中的 工具箱中的一个个控件 是被图形文字化的可视的类 而把这些控件添加到窗体设计器中后 窗体设计器中的控件则是对象 即由工具箱中的类创建的对象 在C 中 类以图标表示 普通对象以图标表示 章节目录 上一页 下一页 6 1 2类与对象的本质类是一种数据类型 这种数据类型将数据与对数据的操作作为一个统一的整体来定义 类的这种特点叫封装性 在C 中 类这种数据类型可以分为两种 一种是由系统提供的预先定义的 这些类在 NET框架类库中 一种是用户定义数据类型 在创建对象之前必须先定义该对象所属的类 然后由类声明对象 用基本数据类型可以声明变量 用类类型也可以声明变量 只不过类类型声明的变量叫类的对象或类的实例 章节目录 上一页 下一页 6 1 3类成员在类的定义中 包含有各种类成员 概括起来类的成员有两种 存储数据的成员与操作数据的成员 存储数据的成员叫 字段 操作数据成员又有很多种 本章仅介绍 属性 方法 与 构造函数 字段 是类定义中的数据 也叫类的变量 在C 中 字段以图标表示 属性 用于读取和写入 字段 值 在C 中 属性以图标表示 章节目录 上一页 下一页 方法 实质上就是函数 通常用于对字段进行计算和操作 即对类中的数据进行操作 以实现特定的功能 在C 中 方法以图标表示 事件方法以图标表示 构造函数 是在用类声明对象时 完成对象字段的初始化工作 章节目录 上一页 下一页 6 2类的字段与属性6 2 1类定义在类定义中需要使用关键字class 其简单的定义格式为 class类名 类体 类名 是一个合法的C 标识符 表示数据类型 类类型 名称 类体 以一对大括号开始和结束 在一对大括号后面可以跟一个分号 也可以省略分号 章节目录 上一页 下一页 例如 classCuboid 类名为Cuboid 声明字段privatedoublelength privatedoublewidth privatedoublehigh 声明属性publicdoubleLength get returnlength set length value publicdoubleWidth get returnwidth set width value publicdoubleHigh get returnhigh set high value 章节目录 上一页 下一页 1 声明字段字段的声明格式与普通变量的声明格式格式相同 在类体中 字段声明的位置没有特殊要求 习惯上将字段声明在类体中的最前面 以便于阅读 2 声明属性属性是类定义中的字段读写器 在类定义中声明属性的语法格式为 访问修饰符类型属性名 get set 在属性声明中 get与set叫属性访问器 get完成对数据值的读取 return用于返回读取的值 set完成对数据值的设置修改 value是一个关键字 表示要写入字段的值 章节目录 上一页 下一页 3 访问控制C 中最常用的访问修饰符及其意义public 公有 访问不受限制 可以被任何其他类访问private 私有 访问只限于含该成员的类 即只有该类的其他成员能访问protected 保护 访问只限于含该成员的类 及该类的派生类如果声明成员没有使用任何访问修饰符 则该成员被认为是私有的 private 如果成员被声明为private或protected 则不允许在类定义外使用点运算符访问 章节目录 上一页 下一页 6 2 3声明与使用对象1 声明对象声明对象的格式与声明基本数据类型的格式相同 其语法格式为 类名对象名 例如 Cuboidcubiod1 对象声明后 需用 new 关键字将对象实例化 实例化的语法格式 对象名 new类名 例如 cubiod1 newCuboid 章节目录 上一页 下一页 2 访问对象访问对象实质是访问对象成员 对对象变量成员的访问使用 运算符 例如 cubiod1 Length 5 cubiod1 Width 3 cubiod1 High 2 使用对象变量为另一对象变量整体赋值 例如 Cuboidcuboid2 cubiod2 cubiod1 或 Cuboidcuboid2 cubiod1 可以使用对象中的某一成员为变量赋值 例如 doubleiLength cubiod1 Length 章节目录 上一页 下一页 例6 1 创建一个Windows应用程序 定义一个长方体类 该类包含长 宽 高字段和属性 在窗体类定义中声明长方体类对象 通过文本框设置对象的值 通过标签框输出对象的值 章节目录 上一页 下一页 定义类代码如下 classCuboid 类名为Cuboid 声明字段privatedoublelength privatedoublewidth privatedoublehigh 声明属性publicdoubleLength get returnlength set length value publicdoubleWidth get returnwidth set width value publicdoubleHigh get returnhigh set high value 章节目录 上一页 下一页 在Form1类定义的类体中声明Cuboid类对象代码如下 Cuboidcubiod newCuboid 声明对象cubiod 设置对象值 按钮的Click事件代码为 privatevoidbutton1 Click objectsender EventArgse 转换文本框中的值doublel double Parse txtLength Text doublew double Parse txtWidth Text doubleh double Parse txtHigh Text 章节目录 上一页 下一页 设置对象值cubiod Length l cubiod Width w cubiod High h lblInfo Text 对象值设置完毕 输出设置完成信息 章节目录 上一页 下一页 显示对象值 的Click事件代码为 privatevoidbutton2 Click objectsender EventArgse 将对象各属性值加上说明信息显示在标签框中 访问对象 lblInfo Text 长方体的长 cubiod Length 宽 cubiod Width 高 cubiod High 章节目录 上一页 下一页 6 2 4值类型与引用类型1 值类型值类型变量直接包含其本身的数据 因此每个值类型变量本身就包含有赋给它的值 在C 中 内置数据类型除了字符串 string 类型与对象 object 类型外其余均为值类型 枚举类型与结构类型也是值类型 例如 intx 42 整型变量x就是值类型 2 引用类型与值类型不同 引用类型变量本身不包含数据 只是存储对数据的引用 数据保存在内存的其他位置 章节目录 上一页 下一页 假设有整型变量x与y 有文本框对象变量tB1 下面的代码将表现出值类型与引用类型的区别 x 15 y x 这时x与y的值均为15tB1 Text abcd TextBoxtB2 声明一个文本框变量 对象 tB2tB2 tB1 用tB1对tB2初始化 赋值 这时两个文本框变量的Text属性均为 abcd y 20 注意 这时x的值为15 y的值为20tB2 Text bcda 注意 这时tB1与tB2的Text属性值均为 bcda 章节目录 上一页 下一页 6 3类的方法方法是把一些相关的语句组织在一起 用于解决某一特定问题的语句块 方法必须放在类定义中 方法同样遵循先声明后使用的规则 C 语言中的方法相当于其他编程语言 如VB NET 中的通用过程 Sub过程 或函数过程 Function过程 C 中的方法必须放在类定义中声明 也就是说 方法必须是某一个类的方法 章节目录 上一页 下一页 6 3 1声明与调用方法方法的使用分声明与调用两个环节 1 声明方法声明方法最常用的语法格式为 访问修饰符返回类型方法名 参数列表 方法的访问修饰符通常是public 以保证在类定义外部能够调用该方法 方法的返回类型用于指定由该方法计算和返回的值的类型 可以是任何值类型或引用类型数据 如 int string及前面定义的Student类 如果方法不返回一个值 则它的返回类型为void 章节目录 上一页 下一页 方法名是一个合法的C 标识符 参数列表在一对圆括号中 指定调用该方法时需要使用的参数个数 各个参数的类型 参数之间以逗号分隔 实现特定功能的语句块放在一对大括号中 叫方法体 表示方法体的开始 表示方法体的结束 如果方法有返回值 则方法体中必须包含一个return语句 以指定返回值 其类型必须和方法的返回类型相同 如果方法无返回值 在方法体中可以不包含return语句 或包含一个不指定任何值的return语句 章节目录 上一页 下一页 2 调用方法从方法被调用的位置 可以分为在方法声明的类定义中调用该方法和在方法声明的类定义外部调用方法 在方法声明的类定义中调用该方法的语法格式为 方法名 参数列表 在方法声明的类定义中调用该方法 实际上是由类定义内部的其他方法成员调用该方法 在方法声明的类定义外部调用该方法实际上是通过类声明的对象调用该方法 其格式为 对象名 方法名 参数列表 章节目录 上一页 下一页 例6 2 创建一个Windows应用程序 分别实现Cubiod 长方体 类定义内调用求体积方法与类定义外调用求体积方法 章节目录 上一页 下一页 6 3 2参数传递在方法的声明与调用中 经常涉及方法参数 在方法声明中使用的参数叫形式参数 形参 在调用方法中使用的参数叫实际参数 实参 在调用方法时 参数传递就是将实参传递给形参的过程 例如 某类定义中声明方法时的形参如下 publicintIntMax inta intb 则声明对象classmax后调用方法时的实参如下 classmax IntMax x y 章节目录 上一页 下一页 1 按值传递参数按值的方式传递是指当把实参传递给形参时 是把实参的值复制 拷贝 给形参 实参和形参使用的是两个不同内存中的值 所以这种参数传递方式的特点是形参的值发生改变时 不会影响实参的值 从而保证了实参数据的安全 2 按引用传递按引用传递是指实参传递给形参时 不是将实参的值复制给形参 而是将实参的引用传递给形参 实参与形参使用的是一个内存中的值 这种参数传递方式的特点是形参的值发生改变时 同时也改变实参的值 章节目录 上一页 下一页 基本类型参数按引用传递时 实参与形参前均须使用关键字ref 例如Swap方法代码如下 publicvoidSwap refstrings1 refstrings2 strings3 s1 s1 s2 s2 s3 则调用该方法的语句代码如下 Swap refss1 refss2 在实参中增加ref关键字类对象参数总是按引用传递的 所以类对象参数传递不需要使用ref关键字 章节目录 上一页 下一页 6 3 3重载方法方法重载是声明两个以上的同名方法 实现对不同数据类型的相同处理 方法重载有两点要求 重载的方法名称必须相同 重载的方法 其形参个数或类型必须不同 否则将出现 已经定义了一个具有相同类型参数的方法成员 的编译错误 例如能同时处理整型与浮点型数据的重载方法 publicvoidSwap refinta refintb publicvoidSwap reffloata reffloatb 章节目录 上一页 下一页 6 4构造函数构造函数是一种特殊的方法成员 构造函数的主要作用是在创建对象 声明对象 时初始化对象 一个类定义必须且至少有一个构造函数 如果定义类时 没有声明构造函数 系统会提供一个默认的构造函数 如果声明了构造函数 系统将不再提供默认构造函数 章节目录 上一页 下一页 6 4 1声明构造函数声明构造函数与声明普通方法相比 有两个特别要求 一是构造函数不允许有返回类型包括void类型 二是构造函数的名称必须与类名相同 所以构造函数往往需要使用形参 例如创建一个长方体类对象时 需要给出长方体的长 宽 高 所以长方体类构造函数可以声明如下 publicCuboid doublel doublew doubleh length l width w high h 章节目录 上一页 下一页 由于声明了上述带参数的构造函数 所以系统不再提供默认构造函数 这样在创建对象时 必须按照声明的构造函数的参数要求给出实际参数 否则将产生编译错误 例如 Cuboidcu newCuboid 8 6 4 由上述创建对象的语句可知 new关键字后面实际是对构造函数的调用 章节目录 上一页 下一页 6 4 2重载构造函数例如 在创建一个Cuboid 长方体 对象时 可能需要创建一个长方体的特例正方体 这时仅需要给定一个棱长参数即可 因此需要一个只接受一个参数的构造函数 那么可以再声明一个含一个参数的构造函数 代码如下 publicCuboid doublel length l width l high l 如果在声明了带参数的构造函数后 还想保留默认构造函数 则必须显式声明一个默认构造函数 以Student类为例 声明默认构造函数如下 publicCuboid 显式声明默认构造函数 章节目录 上一页 下一页 例6 8 在Windows应用程序中创建Cuboid 长方体 类 声明长方体构造函数及正方体构造函数的重载 创建对象时 根据给定的参数个数将对象初始化为长方体或正方体 章节目录 上一页 下一页 6 5静态成员类可以具有静态成员 例如静态字段 静态方法等 静态成员与非静态成员的不同在于 静态成员属于类 而非静态成员则总是与特定的实例 对象 相联系 声明静态成员需要使用static修饰符 章节目录 上一页 下一页 6 5 1静态数据成员静态数据成员不属于任何一个特定的对象 而是属于类 或者说属于全体对象 是被全体对象共享的数据 章节目录 上一页 下一页 例如 classCuboid privatestaticintcubeNumber 静态字段 用于统计正方体对象privatestaticintcuboidNumber 静态字段 用于统计长方体对象privatedoublelength privatedoublewidth privatedoublehigh 章节目录 上一页 下一页 6 5 2静态方法静态方法同样使用修饰符static声明 静态方法属于类 只能使用类调用 不能使用对象调用 静态方法与非静态方法一样可以重载 章节目录 上一页 下一页 例6 9 创建一个Windows应用程序 在该程序中定义一个Cuboid 长方体 类 该类除包含非静态成员外

温馨提示

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

评论

0/150

提交评论