第三讲面向对象程序设计方案思想——类和封装.docVIP

第三讲面向对象程序设计方案思想——类和封装.doc

  1. 1、本文档共10页,可阅读全部内容。
  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文档。上传文档
查看更多
第三章 面向对象程序设计思想(1) ——类和封装 3.1面向对象设计方法的由来 (1)提高软件的可维护性和可复用性 如何同时提高软件的可维护性和可复用性是现代软件工程的核心问题 一个好的软件设计,必须能够允许新的设计要求以较为容易和平和的方式加入到已有的系统中去,从而使这个系统能够不断的焕发青春。 复用的重要性:提高生产效率、提高软件质量、改善软件可维护性 传统的复用方法:代码粘贴、算法复用、数据结构复用 (2)问题抽象的进步 所有编程语言都是对目标问题的“抽象”。 汇编语言用机器的思维去考虑问题,是面向机器的抽象 高级语言以接近自然语言的思维去考虑问题,是面向问题的抽象 面向对象语言以自然界“物质”的思维去考虑问题,认为程序是由一堆对象相互作用的结果 (3)机器性能的提高 思维的抽象越来越接近自然,也就意味着要用越来越多的“额外”代码来做支撑。 软件执行速度和复用型、可维护性常常是一对矛盾 3.2“纯粹”的面向对象程序设计方法是什么样的 (1)所有东西都是对象 可将对象想象成一种新的类型; 同一类的对象具有相同的属性名称和方法; (2)程序是一堆对象相互作用的结果。它们通过相互发送消息来彼此作用 为了告诉对象做什么,需向那个对象“发送一条消息”。具体地讲,可将消息想象为一个调用,它调用的是从属于目标对象的一个子例程或函数。 (3)每个对象是独立的,也就是拥有独立的存储空间 (4)每个对象都有一种类型 (5)同一类型的各个对象,它们能接收的消息是相同的 (6)程序通过引用访问对象 3.3对象和类 3.3.1类 人们对事物的抽象描述,概括出该事物所具有的属性和方法,并将其进行封装,以供使用。 用class定义类,声明类的形式为: [附加声明] [访问修饰符] class 类名称[extends [基类] { [属性] [方法] } 例3.1 每位学生每学期最多有15门课程,课程有考试课和考查课两种。课程成绩的原始分按正常考试/考查实际得分计算。考试课的原始分使用百分制形式,考查课的原始分采用等第形式(优秀、良好、中等、及格、不及格)。在进行测评成绩计算时,考查课程成绩中的优秀、良好、中等、及格、不及格的,分别换算成为95、85、75、65和50分。测评计算公式为: 分析: 从上面描述中可以得到以下有效关键字:学生、课程、考试课、考查课、原始分、评测成绩、学分 因此,得到下面几个类:学生类、课程类、考试课类、考查课类。 进一步考虑,我们可以发现,考试课类和考查课类都是课程类的子类型。这种现象在面向对象的设计中称为“继承”,在UML的类图中使用空心三角的箭头()表示继承,箭头指向父类。我们可以把相同的东西合并到父类里。 注意,为了“统一”起见,我们将考试课的原始分也定义为了String类型(字符串),这样,考试课的“转换成绩”要做的事是将字符串的数值还原成百分制(具体的实现后面会讲到),而考查课的“转换成绩”要做的事是将等第进行转换。 于是,我们就可以写出这四个类的结构: (1)学生类 class 学生类 { public String 姓名; public String 学号; public 课程类[] 课程列表; public void 添加课程(课程类 课程) { //将课程添加到课程列表中 } public double 计算评测成绩() { return 0.0; } } 说明: public关键字是用来设定访问权限的,表示任何程序都能够访问。与它相对应还有protected(保护)、private(私有); 课程列表我们使用了数组。关于数组,我们要过一段时间再介绍。 (2)课程类 class 课程类 { public String 课程名; public String 原始分; public double 学分; public double 转换成绩() { return 0.0; } } (3)考试课类 class 考试课类 extends 课程类 { public double 转换成绩() { //将数值型的字符串转换为百分制 return 0.0 } } 说明: extends关键字表示继承,这说明考试课类是课程类的子类,它继承考试类中的内容。 (4)考查课类 class 考试课类 extends 课程类 { public double 转换成绩() { //将等第转换为百分制 return 0.0; } } 3.3.2对象 对象(实例):类的实例化。客观的。 对象在建立时分配了内存,创建对象实际上作了两个方面的工作: (1)使用new关键字分配内存; (2)使用构造函数初始化数据(构造函数是与类名同名的函数) 。 学生类

文档评论(0)

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

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

1亿VIP精品文档

相关文档