类与对象I.pptVIP

  1. 1、本文档共27页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
类与对象I

程序设计实习 第十二讲 类与对象I 主讲教师:田永鸿 yhtian@ /cpp2008/tyh/tyh.htm /jiaoxue-CPP/cpp08.htm 2008年4月7日 内容提要 类、对象 对象的创建、存储与访问 类的构造函数、析构函数 对象成员的访问权限 类的特殊成员 static成员 const成员 结构化 vs. 面向对象 作业 从程序设计谈起 到现在为止,我们眼中的“程序”:一个数据的集合+一个算法。 数据的集合:程序中声明的变量 算法:程序中的可执行语句和函数调用 当其中一些数据的关系很紧密,分别表达某个概念中的不同方面时,我们用复合数据类型来刻画这种关系。 当算法比较复杂时,我们会根据算法中各个步骤之间的功能关系,进行功能分解。把关系密切的连续多个步骤作为一个函数,实现一个子功能。 定义复合数据类型的例子 表达一个时间,需要年、月、日、小时、分、秒共6个变量,我们可以定义一个结构类型 struct Time { int year; int month; //1..12 int day; //1..31 int hour; //0..23 int minute; //0..59 int second; //0..59 }; 使用函数的例子 在POJ1011(木棒问题)中,对每个案例,需要做两件事情 对各节木棒按长短进行排序。 按照某个假定的长度LEN,进行拼接,看能否拼接成功。 这两件事情都比较复杂,因此我们分别定义了两个函数 qsort:这个函数是C标准库实现的 concatenate:这个函数是我们自己实现的 重新分析我们的“程序” 程序:数据的集合+算法 在数据的集合中,我们把表达同一个概念中不同方面的那些变量组织成结构型变量:实现了数据的抽象。 有了一个叫做“TIME”的数据类型,表达时间 在算法中,我们把与某个功能相关的一组连续算法步骤定义成一个函数:实现了运算过程的封装。 有了一个叫做“qsort”的操作,它能够把一组数据从小到大进行排序 重新分析我们的“程序” 进一步分析,我们会发现:当程序中的变量比较多时,每个函数的一次调用只涉及整个数据集合中的一部分数据 例如有一个问题:需要计算一组几何形状的面积,并对这些几何形状按照面积大小进行排序、统计全部几何形状的总周长。有三角形、矩形、梯形、圆形和扇型等。对每种几何形状 定义一个复合类型的数据结构,在程序中表示该形状的几何体 定义一个函数,专用于该形状几何体的面积计算 定义一个函数,专用于该形状几何体的周长计算 我们把表示一个三角型的变量triangle、以及计算三角型面积的函数triangleArea、计算三角型周长的函数trianglePerimeter称作一个三角型对象 triangle的各个分量称为该对象的成员属性 triangleArea和trianglePerimeter称为该对象的成员方法 对象的概念 对象代表了我们需要解决的一个子问题,包括: 描述这个问题用到的数据:作为对象的成员属性 解决这个子问题用到的算法:作为对象的成员方法,也称成员服务、成员函数 对象的例子: 需要计算一组几何形状的面积,并对这些几何形状按照面积大小进行排序、统计全部几何形状的总周长。 一个子问题包括:计算一个几何形状的周长和面积。 因此,每个几何形状都是一个对象 对象以数据为中心 一旦确定了一个对象的成员属性后,在这些成员属性上执行的运算都应用作为该对象的成员方法。 计算一个几何形状的周长和面积可以分别作为一个子问题,但是描述一个几何形状的数据集是确定的,计算它的周长和面积都是在这个数据集上执行的 以这个数据集为中心,定义一个对象 在这个数据集上执行的每个操作分别作为该对象的一个成员方法 类的概念 类是对象的描述(想想:结构是复合类型数据的描述),规定一个对象有: 哪些成员属性,每个属性是什么类型的数据 哪些成员方法,每个方法的名称、参数的名称、参数和返回值的类型、方法的具体实现 各个成员属性和方法的可见性 例如:三角型 Class CTriangle { public: struct { float x, y; } points[3]; float area(); float perimeter(); }; 类的实例化:对象 定义了类后,在程序中就可以使用所定义的类声明对象和对象的指针(想想:定义了结构后,在程序中如何声明复合类型的数据、复合类型数据的指针),并访问对象的方法完成计算任务 例如: void main() { CTriangle a, *b; //声明一个CTriangle 对象a,一个CTriangle指针b float x, y; …… c

文档评论(0)

xcs88858 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档