Java语言中面向对象特性.ppt_第1页
Java语言中面向对象特性.ppt_第2页
Java语言中面向对象特性.ppt_第3页
Java语言中面向对象特性.ppt_第4页
Java语言中面向对象特性.ppt_第5页
已阅读5页,还剩36页未读 继续免费阅读

下载本文档

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

文档简介

Java 语言中面向对 象特性 TA: 栗志果 Email: n一切皆对象 think in java 面向对象编程的基本概念和 特征 l什么是oop? l为什么要oop? l Oop的一些基本概念 lOop的一些准则 n1 例子:栈 n1) 非面向对象方案 nstruct Stack n int top; n int bufferSTACK_SIZE; n ; nvoid init(Stack n nbool push(Stack n if (s.top = STACK_SIZE-1) n cout “Stack is overflow.n”; n return false; n n nelse n s.top+; ns.buffers.top = i; n return true; n n nbool pop(Stack n return false; n n nelse n i = s.buffers.top; ns.top-; n return true; n n n nStack st; nint x; ninit(st); npush(st,12); npop(st,x); n2) 面向对象方案 nclass Stack n nPrivate: n int top; n int bufferSTACK_SIZE; n public: nStack() top = -1; n bool push(int i); n if (top = STACK_SIZE-1) n cout “Stack is overflow.n”; n return false; n n else n top+; nbuffertop = i; n return true; n n n nbool pop(int n if (top = -1) n cout “Stack is empty.n”; n return false; n n else n i = buffertop; n top-; n return true; n n n; nStack st; nint x; nst.push(12); nst.pop(x); nst.top = -1; /error nst.top+; /error nst.bufferst.top = 12; /error n3)两种方案的简单比较 n方案1)中对栈的操作可以通过提供的函数来实现 ,也可以直接在栈的数据表示上直接进行;方 案2)中只能通过提供的函数来操作栈。 n直接操作数据的弊病在于: n不安全,易产生错误,并且定位错误较为困难 。 n一旦数据表示发生变化,将影响所有的操作。 n方案1)需要显式地对栈进行初始化,方案2)则否 。 n2 定义 n面向对象程序设计是把程序构造成由若 干对象组成,每个对象由一些数据和对这 些数据所实施的操作构成;对数据的操作 是通过向包含数据的对象发送消息来实现 (调用对象的操作);对象的特性(数据与操 作)由(对象)类来描述,一个类的特性可以 从其它的类继承。 n n上述的定义包含了下面的基本概念: n对象:对象式计算的基本单位,由:接口, 数据,操作构成。 n通信:引起对象式计算的唯一方式。 n类:对象特性的描述。 n继承:复用机制。 为什么要oop? n一个好的软件开发方法或技术的评价标准 :开发效率和软件质量保证。 n开发效率指方法使用的难易程度和方法缩 短开发周期的程度等。 n软件质量包括:外部质量和内部质量。 n外部质量:软件中与用户有关的质量因素, 这里的用户包括最终用户和二次开发用户。 包括:正确性(Correctness)、效率(Efficiency) 、健壮性或鲁棒性(Robustness)、可靠性 (Reliability)、可用性(Usability)和可复用性 (Reusability)等方面。 n内部质量:软件中与软件开发人员有关的质 量因素。包括:可读性(Readability)和可维护 性(maintainability)等。 n外部质量靠内部质量来保证。 n下面就能够保证软件质量的几个程序设计 机制来说明面向对象程序设计的优势: n1 抽象(Abstraction) 处理大而复杂问题的重要手段是抽象:强 调事物本质的东西。对程序抽象而言,一 个语言结构的抽象强调的是该结构外部可 观察到的行为,与该结构的内部实现无关 。 n过程抽象(Procedural Abstraction) 结构化程序设计是其典型代表。 把子程序的接口和实现分开,使用者只需要知道子程序 的接口(功能和参数)而不需要关心其内部实现,适合于 基于功能分解的逐步精化(Step-wise)程序设计。 过程抽象的不足之处在于: p数据与操作的描述分离。 p数据缺乏保护。 p不能适应需求的改变。 n数据抽象(Data Abstraction) 以数据为中心,把数据及其操作作为一个整体 (对象)来进行描述,对数据的操作由包含数 据的对象来提供。 面向对象程序设计强调的是数据抽象,一 方面加强了数据保护,另一方面实现了对 现实世界活动的直接模拟,能较好地适应 需求的变化。不足之处在于:对系统的整 体功能缺乏清楚的描述。 n 2 封装(Encapsulation) 把一个语言结构的具体实现细节作为一个黑匣 子对该结构的使用者隐藏起来的一种机制,从 而符合信息隐藏(Information Hiding)原则。 封装考虑的是内部实现,抽象考虑的是外部行为 。 n过程封装 n实现了操作的封装,而数据是公开的。 n数据封装 n实现了数据及其操作的封装。 n面向对象程序设计强调的是数据封装。 面向对象的基本概念 n1 对象与类(Object public class Property public static void main(String args) System.out.println(new Date(); Properties p = System.getProperties(); p.list(System.out); System.out.println(“- Memory Usage:“); Runtime rt

温馨提示

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

评论

0/150

提交评论