




已阅读5页,还剩43页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Java Programming Kangkang Zhang * 1 Java Programming Java面向对象编程 l面向对象基本概念 l Java面向对象编程 l Java语言基础 * 2 Java Programming 面向对象基本概念 l对象 l类 l封装 l继承 Date 3 Java Programming 面向对象 l难以精确定义 l从程序设计语言和编程技术开始,发展到软件 领域的各个分支,并超出,渗透到体系机构、 人工智能等非软件领域 l仅就软件领域来说 l思想精髓:从现实世界中客观存在的事物(即 对象)出发来构造软件系统,并在系统构造过 程中尽可能运用人类的自然思维方式 Date 4 Java Programming 面向对象方法 l面向对象方法是一种运用对象、类、继承 、封装、聚合、消息传递、多态性等概念 来构造系统的软件开发方法 Date 5 Java Programming 语言鸿沟 客观事物(问题域) 计算机 自然语言 语言的鸿沟 编程语言 程序的理解和 执行(机器) 对问题的认识(人) 语言的过渡(人) 编程(人) Date 6 Java Programming 计算机语言的发展使鸿沟变窄 客观事物(问题域) 计算机 自然语言 面向对象的语言 语言的鸿沟 过程语言 汇编语言 机器语言 Date 7 Java Programming 过程化方法 l系统是围绕着过程来组织的 l系统的运行通过过程间的数据传送来实现 l过程和数据清楚地分开 l重点分别集中在数据结构、算法和顺序步骤上 l过程非常难以重用 l缺乏强有力的可视化建模技术 l在分析和实现不同阶段的概念的差别很大 l需要进行概念上的转换 l造成了分析、设计和实现间的范畴移位 l设计模型离实现还有很长的一步 Date 8 Java Programming 面向对象方法 l系统是围绕着对象组织的 l系统的运行是通过对象间的消息传递而运行 l相关的数据和行为捆绑在对象中 l将问题域建模为对象使得在实现时非常自然地反应 现实问题 l易于重用,重用的粒度大(类) l可视化的模型表达能力非常强使得人们易于理解 l支持强有力的概念例如抽象、封装、继承、多态等 l可视化的问题模型可以演变为问题解决模型 l设计模型距离实现只有很小的一步 Date 9 Java Programming 利用面向对象开发的软件 l减少软件的复杂性 l可维护性 l可扩展性 l可重用性 l表述非常自然 l将数据和功能并在一起考虑 l分析和实现的隔阂变得非常小 Date 10 Java Programming 对象(Object) l一切概念上的存在,小至单个整型数或字 符串,大至由许多部件组成的系统均可称 作对象 l对象是系统中用来描述客观事物的一个实 体,它是构成系统的基本单位。 Date 11 Java Programming 对象的两个侧面 l对象具有主动侧面和被动侧面 l被动侧面指其相对静止侧面,由静态的属 性表示(数据) l而主动侧面指把对象看作主动机制,即动 态的行为(方法/服务/操作) l属性决定行为,行为可以改变属性 l对象是属性和行为的封装体 Date 12 Java Programming 对象的性质 l对象具有封装性(encapsulation) l信息隐藏(information hiding) l对象具有自治性(autonomy) l对象具有通信性 l对象具有被动性 Date 13 Java Programming 对象的特性(property) l对象的属性和方法称作对象的特性( property) l属性值即对象的状态 l方法即对象的行为 Date 14 Java Programming 对象标识(object identifier) l缩写为OID l是将一个对象和其它对象加以区别的标识符 l一个对象标识和对象永久结合在一起,不管 这个对象状态如何变化,一直到该对象消亡 为止 Date 15 Java Programming 面向对象程序设计语言中的 OID l强调对象标识的表达能力 l用变量名充当标识 l可寻址性和标识这两个概念做了混合 Date 16 Java Programming 类(Class) l对象按照不同的性质划分为不同的类 l同类对象在数据和操作性质方面具有共性 l把一组对象的共同特性加以抽象并存贮在 一个类中 l类是对象之上的抽象,有了类之后,对象 则是类的具体化,是类的实例 l类是静态概念,对象是动态概念 Date 17 Java Programming 类 l类是具有相同属性和行为的一组对象的集 合,它为属于该类的全部对象提供了统一 的抽象描述,其内部包括属性和行为两个 主要部分 Date 18 Java Programming 程序设计语言中的类 l类是一个独立的程序单位,程序由一个或 多个类组成 l类的作用是定义对象,在程序运行过程中 ,根据需要创建类的对象(即其实例) l有丰富的类库 Date 19 Java Programming 在程序设计语言种类的作用 l一是作为对象的描述机制,刻划一组对象 的公共属性和行为 l二是作为程序的基本单位,它是支持模块 化设计的设施,并且类上的分类关系是模 块划分的规范标准 Date 20 Java Programming 方法(Method) l定义于某一特定类上的操作与规则 l具有同类的对象才可为该类的方法所操作 l这组方法表达了该类对象的动态性质,而 对于其它类的对象可能无意义,乃至非法 l规则,说明了对象的其他特征之间是怎样 联系的,或者对象在什么条件下是可行的 l方法也称作行为(behavior) Date 21 Java Programming 类的实例 l属于某个类的对象称为该类的一个实例( instance) l类和对象间具有instance-of关系 l一个实例是从一个类创建而来的对象 l类描述了这个实例的行为(方法)及结构 (属性) Date 22 Java Programming 类的实例续 l每个实例具有一个对象标识 l许多不同的实例可以由某一个类所创造 l每个实例可由该类上定义的操作(方法) 来操纵 l不同的实例可以由不同的操作序列来操纵 ,结果是得到不同的状态 l如果这些实例严格地用同样的操作方法进 行操纵,必定得到相同的状态 Date 23 Java Programming 类及实例具有下面特征 l同一个类的不同实例具有相同的数据结构 ,承受的是同一方法集合所定义的操作, 因而具有相同的行为 l同一个类的不同实例可以持有不同的值, 因而可以有不同的状态 l实例的初始状态(初值)可以在实例化中 确定 Date 24 Java Programming 类对象 l类本身也是一个对象 l这个特殊的对象也有其属性和方法,我们 称之为类属性和类方法 l普通对象的属性和方法称作实例属性和实 例方法 Date 25 Java Programming 动态实例化和静态实例化 l实例化:创建一个对象的过程 l静态实例化:在编译时刻完成的实例化 l动态实例化:在运行时刻完成的实例化 lJava语言都是动态实例化 Date 26 Java Programming 动态联编(dynamic binding) l联编(binding)是把一个过程调用和响应 这个调用而需要将执行的代码加以结合的 过程 l联编在编译时刻进行的叫静态联编(static binding) l动态联编则是在运行时(run time)进行的 ,因此,一个给定的过程调用和代码的结 合直到调用发生时才得以进行,因而也叫 迟后联编(late binding) Date 27 Java Programming 封装(encapsulation) l所有信息都存贮在对象中 l即其数据及行为都封装在对象中 l影响对象的唯一方式是执行它所属的类的方法即 执行作用于其上的操作 l信息隐藏(information hiding) l将其内部结构从其环境中隐藏起来 l要是对对象的数据进行读写,必须将消息传递给相应对 象,得到消息的对象调用其相应的方法对其数据进行读 写 l当使用对象时,不必知道对象的属性及行为在内 部是如何表示和实现的,只须知道它提供了那些 方法(操作)即可 Date 28 Java Programming 可见性(visibility) l封装的副作用 l属性的读写方法 l分类 l纯OO:严格封装 l混合型 l全可见 l折衷方法:用户指定 Date 29 Java Programming 继承(inheritance) l继承是一种使用户得以在一个类的基础上建立新 的类的技术 l新的类自动继承旧类的属性和行为特征,并可具 备某些附加的特征或某些限制 l新类称作旧类的子类,旧类称作新类的超类 l继承机制的强有力之处还在于它允许程序设计人 员可重用一个未必完全符合要求的类,允许对该 类进行修改而不至于在该类的其它部分引起有害 的副作用 l是其它语言所没有的 Date 30 Java Programming 超类(superclass)和子类 (subclass) l已存在的类通常称作超类 l新的类通常称作子类 l子类不仅可以继承超类的方法,也可以继 承超类的属性 l如果超类中的某些方法不适合与子类,则 可以重置这些方法 Date 31 Java Programming 超类和子类的定义 l如果类C能使 用类B中的方 法及属性, 称B是C的超 类,C是B的 子类,也称 类C继承类B B C A B C IS-A联系 Date 32 Java Programming 继承的传递性 l直接超类 (子类) l间接超类 (子类) A BCD EFGH 图2-5 单继承 Date 33 Java Programming 单继承 l如果一个类只有 一个直接超类 l单继承构成类之 间的关系是一棵 树 A BCD EFGH 图2-5 单继承 Date 34 Java Programming 多继承 l如果一个类有 多于一个的直 接超类 l多继承构成的 类之间的关系 是一个网格 ABC EF D GH 图2-6 多继承 Date 35 Java Programming 继承的说明 l类间的共性 l共性在一个类中指出,另外的类可以继承这些 共性,可以重用这些共同的描述 Date 36 Java Programming 泛化和特化 l泛化generalization: 通过抽取及共享共同特 征,将这些共性抽取出作为超类放在继承层 次的上端 l抽取出的超类称作抽象类(abstract class) l抽象类一般没有实例 l特化(specialization):新类作为旧类的子类 Date 37 Java Programming 抽象类 l泛化(generalization) :通过将若干类的所 共享的公共特征抽取出来,形成一个新类 ,并且将这个类放到类继承层次的上端以 供更多的类所重用 l抽象类 l抽象类不能创建实例 l抽象类没有实例 lbird Date 38 Java Programming 替换原则 l指对于类A和类B,如果B是A的子类,那么 在任何情况下都可以用类B来替换类A Date 39 Java Programming 重置和重定义 l重置overriding:可以重新修正从超类继承下来的 属性及方法 l重置是修改利用已存在类的一种简单而灵活的方法 l但使得类层次不易理解 l继承便变得不具有可传递性了 l重定义redefination:操作的表示和操作的实现体将 都改变 l在重置中,只有操作的实现体被改变,而操作的 说明及表示仍与以前一样 Date 40 Java Programming 子类能否直接访问超类中的属 性 ? l可见性 lpublic、protected和 private Date 41 Java Programming 多态与重载 l当一问题领域中的元素可以有多种解释 l如果考虑的元素是名字,则多态的含义是一名多 用 l只用同一个方法名,可以有不同的语义及实现 l引入多态的概念是为了得到更为灵活的方式 使表示的形式尽可能与所表示的内容无关 l重载是多态的一种形式 Date 42 Java Programming 重载分类 l操作符重载(并不是新概念) l- 符号( c语言) l=(pascal语言,赋值,关系) l即席多态(操作名重载) l操作名重载指同一操作名可用于不同对象(或 同一对象)上并产生不同结果 l类属软件(generic software)的重用 Date 43 Java Programming Java面向对象编程 l类的定义 l对象的创建与使用 l可见性 l类的继承 l接口 l包 Date 44 Java Programming Java类的创建 lclass lextends lImplement
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年建筑工程类注册安全工程师安全生产专业实务(金属冶炼安全)-安全生产专业实务(道路运输安全)参考题库含答案解析
- 2025年物流经理中级面试实战指南与题库
- 2025年商业综合体精装修材料供应及施工总承包合同
- 2025年绿色环保酒店餐饮服务合同标准范本
- 2025年度腾讯QQ游戏平台软件授权与运营服务全面升级合同
- 2025年医药连锁企业药品销售员劳动合同与顾客满意度提升服务合同
- 2025年度跨境电商物流APP定制开发及全球供应链整合服务合同
- 2025年企业展会活动场地租赁及全程管理服务合同
- 2025年度租赁车辆深度保养与性能提升服务合同
- 2025年度金融数据信息库共享许可与数据安全保护协议
- 住院患儿实施院内转运临床实践指南2023版课件
- 停工期间安全保障措施方案
- 供水管网工程监理实施细则
- 2024-2025学年中职数学基础模块 下册高教版(2021·十四五)教学设计合集
- 医用高等数学智慧树知到答案2024年南方医科大学
- 2024年秋季学期人教版七年级上册历史全册教学课件(新版教材)
- 中医护理教案
- 创业大赛承办服务投标方案(技术方案)
- 庄毓敏-商业银行业务与经营-第6章
- JGJ/T235-2011建筑外墙防水工程技术规程
- 数据安全重要数据风险评估报告
评论
0/150
提交评论