C面向对象程序设计.ppt_第1页
C面向对象程序设计.ppt_第2页
C面向对象程序设计.ppt_第3页
C面向对象程序设计.ppt_第4页
C面向对象程序设计.ppt_第5页
已阅读5页,还剩46页未读 继续免费阅读

下载本文档

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

文档简介

学习情景7 VisualC 面向对象程序设计 面向对象的软件开发技术是当今计算机技术发展的重要成果和趋势之一 C 是完全面向对象的程序设计语言 封装性 继承性和多态性是面向对象的特点 2020 3 27 2 C 程序设计实用教程 7 1类和对象 7 1类和对象 类 是一种抽象的数据类型 它是所有具有一定共性的对象的抽象 本质上可以认为是对对象的描述 是创建对象的 模板 类的某一个对象则被称为是类的一个实例 是类的实例化结果 课堂讨论 先有对象还是先有类 应该先定义类才可以从类的定义声明对象 7 3类的定义 格式为 类修饰符 class类名 基类类名 类体 关键字 合法的标识符 字段 成员变量 方法 1 声明字段 成员变量 与普通变量的声明格式相同 在类体中 字段声明的位置没有特殊要求 习惯上将字段声明在类体中的最前面 以便于阅读 7 3类的定义 定义简单的学生类 包含姓名和年龄两项学生信息 并能输出 classStudent 字段声明publicstringstrName publicintnAge 方法publicvoidpri Console Write 姓名为 0 年龄为 1 strName nAge 添加构造方法 完成字段初始化 例7 1 7 3类的定义 在哪儿书写类的代码 与你的源代码文件在一块 同一个命名空间 namespace 下 C 允许在一个类中嵌套另一个类的定义 建议 将类书写在另外一个 cs文件中 7 3类的定义 创建类的对象 在C 中 我们使用new运算符来创建类的对象 定义Student类的对象Studentstu newStudent 类名对象名 new类名 实例化对象 引用对象成员变量的语法形式为 对象名 成员变量名 成员方法 例如 stu strName stu nAge stu pri 访问对象成员 7 2 创建对象 classStudent 字段publicstringstrName publicintnAge publicvoidPintInfo Console Write 姓名为 0 的学生年龄为 1 strName nAge classtest staticvoidMain string args Studentstu newStudent stu strName 张三 stu nAge 19 stu PintInfo 编写一个矩形类Rect 包含 2个成员变量 长 宽2个方法 面积方法area 周长方法cir 分别用于计算矩形的面积和周长 创建一个长4 宽5的矩形对象 并分别计算矩形的面积和周长 练习 编写一个课程类Cource 包含 3个成员变量 课程编号 cNumber 课程名 cName 和学分数 cUnit 1个方法 printCourceInfo 用于输出课程的相关信息 创建一个Cource的对象C 其中课程编号为 030517 课程名 C 程序设计 学分为6 输出该课程信息 练习 7 3类的定义 classstudent publicstringname 姓名privateintage 年龄privatestringidNumber 身份证号 staticvoidMain string args studentmyStudent newstudent myStudent name 张三 myStudent age 20 私有成员 公有成员 实例化一个对象 可以访问 无法访问编译错误 表7 1类访问修饰符 表7 2成员访问修饰符 7 3类的定义 7 4类的方法 方法的定义 语法 访问修饰符 可选 默认情况下为private 访问修饰符 返回类型 参数列表 方法主体 如果不需要返回任何值 方法可能返回void数据类型 方法是类或对象的行为对象需要做某些事情 在类中添加方法方法的定义 合法的标识符 不能加 用逗号隔开变量定义 通过return返回值 如果返回类型是void 方法是否需要返回值 例5 9 方法的定义 classMotorcycle publicvoidStartEngine publicvoidAddGas intgallons publicintDrive intmiles intspeed return0 2020 3 27 18 C 程序设计实用教程 7 4类的方法 2 调用方法从方法被调用的位置 可以分为在方法声明的类内部调用该方法和在类外部调用方法 内部调用语法格式为 方法名 参数列表 在方法声明的类定义外部调用该方法实际上是通过类声明的对象调用该方法 其格式为 对象名 方法名 参数列表 例如 组件事件方法的调用 7 4类的方法 方法的参数1 值参数 简单数据类型的参数为值参数 它表明实参与形参之间按值传递 当这个方法被调用时 编译器为值参数分配存储单元 然后将对应的实参的值拷贝到形参中 这种传递方式的好处是在方法中对形参的修改不会影响外部的实参 2020 3 27 20 C 程序设计实用教程 5 4 2方法的参数 例5 14 使用值参数 usingSystem namespaceValueParameters classMyClass publicvoidSwap intx inty intk k x x y y k 2020 3 27 21 C 程序设计实用教程 classTest staticvoidMain inta 8 b 10 Console WriteLine a 0 b 1 a b MyClassmycls newMyClass mycls Swap a b Console WriteLine a 0 b 1 a b 程序的运行结果为 a 8 b 10a 8 b 10 练习 7 4类的方法 方法的参数 2 引用参数用ref修饰符声明的简单数据类型参数为引用参数 引用数据类型作为参数引用参数并不创建新存储单元 它与实参变量同处一个存储单元 因此 对形参的修改就是对实参变量的修改 基本类型参数按引用传递时 实参与形参前均须使用关键字ref 2020 3 27 22 C 程序设计实用教程 7 4类的方法 方法的参数 例5 15 使用引用参数 usingSystem namespaceReferenceParameters classMyClass publicvoidSwap refintx refinty intk k x x y y k 2020 3 27 23 C 程序设计实用教程 classTest staticvoidMain inta 8 b 10 Console WriteLine a 0 b 1 a b MyClassmycls newMyClass mycls Swap refa refb Console WriteLine a 0 b 1 a b 程序的运行结果为 a 8 b 10a 10 b 8 2020 3 27 24 C 程序设计实用教程 练习 7 5构造函数 构造函数是类的一种特殊方法 每次创建类的实例都会调用它 访问修饰符 参数列表 构造函数的主体 语法 声明构造方法有两个特别要求 一是构造方法不允许有返回类型包括void类型二是构造方法的名称必须与类名相同 有以下几点特殊性 构造方法在创建对象时被自动调用 构造方法的方法名与类名相同 没有返回类型和返回值 构造方法可以重载 通常用public修饰 7 5构造函数 7 5构造函数 例5 5 通过构造函数 实现在产生一个学生对象时为其完成起名工作 usingSystem publicclassStudent publicstringstrName 字段publicStudent string strName this strName strName 2020 3 27 27 C 程序设计实用教程 7 5构造函数 classClass1 staticvoidMain string args Students newStudent 张三 Console WriteLine s strName 2020 3 27 28 C 程序设计实用教程 7 5构造函数 练习 为例7 2添加构造方法 完成姓名与年龄的初始化 析构函数 是用于执行清除操作的特殊方法 0 析构函数的主体 语法 Student 示例 7 6类和类的成员 属性 classStudent privatestaticstringstrName privatestaticintnAge publicvoidSetAge int nAge this nAge nAge publicintGetAge returnthis nAge 方法SetAge Value 和GetAge 分别读取和写入学生Age Students s SetAge 20 intStuAge s GetAge 每次都调用GetId 和SetId 方法会很繁琐 属性 7 6类和类的成员 属性 classStudent publicstringstrName privateintnAge publicintAge get returnnAge set nAge value 读取nAge时调用 将值赋给nAge时调用 试一试 创建Student对象 调用属性 属性的语法格式为 访问修饰符 属性名 get 读访问器 执行体return 执行体可任写 但须有return语句 set 写访问器 执行体 value 执行体可任写 但须有value值给某字段语句 7 6类和类的成员 属性 7 6类和类的成员 属性 访问修饰符 数据类型属性名 get 只读属性 只能检索值 7 6类和类的成员 属性 访问修饰符 数据类型属性名 set 只写属性 只能赋值 什么是属性 classStudent 姓名privatestringname publicstringName get returnname set name value 返回name get用于获取相应字段的值 set用于设置字段的值 只有get时 只读属性 只有set时 只写属性 get和set都存在 读写属性 属性的类型和字段类型必须一致 给name赋值 7 6类和类的成员 属性 属性是 聪明 的字段 特殊 的方法定义属性类似于定义一个方法 但使用属性时如同使用一个字段 classstudent privatestringname privateintage staticvoidMain students1 newstudent s age 13 错误 7 6类和类的成员 属性 privateintage 年龄publicintAge get returnage set if value 0 myStudent Age 20 打印myStudent Age 40 打印 没有访问age 公开Age 录入非法数据 打印私有变量age 不公开age 通过公有Age访问和约束私有字段age 属性的特点 privateintage 年龄publicintAge get returnage set if value 0 控制私有字段的可访问性 保护内部数据的安全 建议类内部敏感字段使用属性来控制访问 类型可以是各种数据类型 如 对象 数组等等 7 6类和类的成员 属性 publicclassStudent intage 26 姓名privatestringname publicstringName get returnname set name value 信息输出publicvoidpr 类的成员 字段 属性 方法 类名 7 6类和类的成员 属性 如果只提供了get 没有set 这样的属性为只读属性如果只提供了set 没有get 只写属性优点 属性在使用时类似于类的字段 简单属性在实现时类似于方法 可以编写代码控制用户对数据的存 取 增加安全性检查可以设置只读或只写属性 编写学生管理系统中的Student类包含的属性年龄 0 100 不符合的设为18姓名 只读属性 爱好 读写 给属性赋值并打印出来 练习 课本25页 编写学生类实例 7 7方法重载 7 7 1成员方法重载方法可以重载 即两个或两个以上方法有相同的名称 重载后的方法被调用时 可根据方法的参数个数 类型来区分应该调用哪个方法 例如能同时处理整型与浮点型数据的重载方法 publicvoidmax inta intb publicvoidmax floata floatb publicvoidmax inta intb intc 为什么要重载 publicintSum intpara1 intpara2 returnpara1 para2 整形参数 返回值整型 如果想让两个string型 两个double型相加 怎么做 编写两个不同名字的方法 根据参数的不同调用相应不同的方法 方法的重载 同一个类中添加几个名字相同 参数与返回值不同的方法 publicstringSum stringpara1 stringpara2 returnpara1 para2 publicdoubleSum doublepara1 doublepara2 returnpara1 para2 重载的方式 classAdd publicstringSum stringpara1 stringpara2 publicintSum intpara1 intpara2 基于不同类型参数的重载 classAdd publicint

温馨提示

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

评论

0/150

提交评论