Thinking in Java 第一讲.doc

  1. 1、本文档共8页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
对象导论 抽象过程 Alan Kay 总结出OOP五大特性: 万物接对象: 它能存储数据,可在自身上执行操作。理论上,可以抽取待求解问题的任何概念化构建(实体、服务等),将其表示为程序中的对象。 程序是对象的集合,它们通过发送消息来告知彼此所要做的: 要请求一个对象,就必须对该对象发送一条消息。其实消息就是对某个特定对象的方法的调用请求。(消息——对象方法的调用。) 每个对象都有自己的有其他对象所构成的存储: 对象可以用来构成其它对象的一部分,程序中可以构建复杂体系,同时将其复杂性隐藏在对象的简单性背后。 每个对象都拥有类: 每个对象都是某个类的实体。 某一特定类型的所有对象都可以接受同样的消息。这种可替代性(substitutability)是OOP中最强有力的概念之一。 每个对象都有一个接口 面向对象程序设计的挑战之一,就是在问题空间的元素和解空间的对象之间创建一对一的映射。 接口(对象方法的抽象)确定了对某一特定对象所能发出的请求。但是,在程序中必须有满足这些请求的代码,这些代码与隐藏的数据一起构成了实现(对象方法的调用)。 每个对象都提供服务 当正在试图开发或理解一个程序设计时,最好的方法之一就是将对象想象为“服务提供者(service provider)”。 程序本身将向用户提供服务,他将通过调用其他对象提供的服务来实现这一目的。 你的目标就是去创建(或者在现有库中寻找类来创建)能够提供理想的服务来解决问题的一系列对象。 将对象看作是服务提供者还有一个附加好处:它有助于提高对象的内聚性。高内聚性可以提高对象的复用性。 被抽象的具体实现 将程序开发人员按角色分为类创建者(构建类)和客户端程序员(用类和对象创建程序)。 访问控制的作用: 让客户端程序员无法触及他们不应触及的部分; 优点:减少BUG,并且让客户端程序员更专心 2)库设计者可以改变类内部结构而不用担心会影响到客户端程序员。 访问控制的方式: public、private、protected Java的默认访问权限——包访问权限:当没用到任何访问指定词时,它将发挥作用。在这种权限下,类可以访问在同一个包(库构建)中的其他成员,但是在包外,则不能访问。 复用具体实现 ?Association(关联): Uses the services of another class Aggregation ( 聚合 ): A class “owns” another class Composition(组合): A class is composed of another class; refers to an aggregation within which the component parts and the larger encompassing whole share a lifetime 聚合(aggregation):使用现有类(的对象)合成新类。生存周期互不影响。 组合(composition):也表示类之间整体和部分的关系,但是组合关系中部分和整体具有统一的生存期。一旦整体对象不存在,部分对象也将不存在。部分对象与整体对象之间具有共生死的关系。聚合和组合的区别在于:聚合关系是“has-a”关系,组合关系是“contains-a”关系;聚合关系表示整体与部分的关系比较弱,而组合比较强;聚合关系中代表部分事物的对象与代表聚合事物的对象的生存期无关,一旦删除了聚合对象不一定就删除了代表部分事物的对象。组合中一旦删除了组合对象,同时也就删除了代表部分事物的对象。 你和你的心脏之间是composition关系() 你和你买的书之间是aggregation关系() 你和你的朋友之间是association关系contains-a B class A 中 应该包含 class B 的对象本身,要创建calss A 的对象,就肯定创建了 class B的对象,A的对象从内存中撤销,则B的对象也跟着消失。 在程序设计时,应先考虑组合,后考虑继承。继承会使得程序变得复杂,而组合可以使程序更安全,复用性更高(通过将内容类的成员设置为私有)。 继承 左图中父类在上,子类在下。它们之间的继承关系用空心三角箭头来表示。 下面的图代表一个例子: is-a(是一个) 和 is-like-a(像是一个): 1) is-a :当继承为纯粹替代(替代原则)时,父类和子类之间的关系式is-a。 这种替代,子类只覆盖基类的方法,而不创建新的方法。它们具有完全相同的接口。 2) is-like-a :继承时会在子类中添加父类中没有的新方法。 伴随多态的可互换对象 多态的好处:用基类对象来表示子类对象,对所有不同子类对象可以进行统一处理。 在处理类型的层次结构时,经常想把一个

文档评论(0)

kehan123 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档