Java编程思想之对象导论

来源:互联网 发布:淘宝联盟余额提现时间 编辑:程序博客网 时间:2024/05/19 02:21

这是关于Java编程思想的第一章对象导论的知识点。


1.1  抽象过程

   ①人们所能解决问题的复杂性取决于抽象的类型和质量。

   ②将问题空间中的元素及其在解空间中的表示称为“对象”。 程序可以通过添加新类型的对象使自身适用于某个特定问题。

   ③五个基本特性:

        万物皆为对象       程序是对象的集合,它们通过发送消息来告诉彼此所要做的  每个对象都有自己的由其他对象所构成的存储   每个对象都拥有其类型   某一特定类型的所有对象都可以接受同样的类型(多态,向上转型等)

    ④对象具有状态、行为和标识。

1..2 每个对象都有一个接口

  ①所有的对象都是唯一的,但同时也是具有相同的特性和行为的对象所归属的类的一部分。

      每一个对象都属于定义了特性和行为的某个特定的类。

     类描述了具有相同特性(数据元素)和行为(功能)的对象集合,所以一个类实际上就是一个数据类型。

  ②接口确定了对某一特定对象所能发出的请求。

1.3 每个对象都提供服务

  ①将对象想象为“服务提供者”。程序本身向用户提供服务,它将通过调用其他对象提供的服务来实现这一目的。

  ②在良好的面向对象设计中,每个对象都可以很好地完成一项任务,但是它并不试图做更多的事。我猜这里指的就是设计模式中单一职责原则。

1.4 被隐藏的具体实现

  ①将程序开发人员按照角色分为类创建者(那些创建新数据类型的程序员)和客户端程序员(那些在应用中使用数据类型的类消费者)。

  ②类创建者可以任意修改被隐藏的部分,而不用担心对其他人造成影响。

     访问控制的原因:让客户端程序员无法触及他们不应该触及的部分;

                                   允许库设计者可以改变类内部的工作方式而不用担心会影响到客户端程序员。

1.5 复用具体实现

 
  ①新的类可以由任意数量、任意类型的其它对象以任意可以实现新的类中想要的功能的方式所组成。

        因为是在使用现有的类组成新的类,所以这种概念被称为“组合”,如果组合是动态发生的,那么它通常被称为聚合。组合经常被视为“has-a"(拥有)关系。

1.6 继承

  ①类型不仅仅只是描述了作用于一个对象集合上的约束条件,同时还有与其他类型之间的关系。

  ②继承使用基类型和导出类型的概念表示了这种类型之间的相似性。一个基类型包含其所有导出类型所共享的特性和行为。

      可以创建一个基类型来表示系统中某些对象的核心概念。

  ③导出类复制了基类的接口,也就是说,所有可以发送给基类对象的消息同时也可以发送给导出类对象。

     通过发送给类的消息的类型可知类的类型,所以这也就意味着导出类和基类具有相同的类型。

  ④使导出类与基类产生差异:

            在导出类中添加新方法;                           改变现有基类的方法的行为,这被称之为覆盖。

  ⑤导出类与基类之间的关系称为is-a(是一个)或者is-like-a(像是一个,由于拓展了接口)关系。

1.7 伴随多态的可互换对象

 

  ①在处理类型的层次结构时,经常想把一个对象不当作它所属的特定类型来对待,而是将其当作其基类的对象来对待。这样便可以编写出不依赖于特定类型的代码。

  ②OOP使用了后期绑定的概念,当向对象发送消息时,被调用的代码直到运行时才能确定。编译器确保被调用方法的存在,并对调用参数和返回值执行类型检查。

  ③把将导出类看作是它的基类的过程称为向上转型。


1.8 单根继承结构

  在单根继承结构中的所有对象都具有一个共用接口,所以它们归根到底都是相同的基本类型。,这使得参数传递、垃圾回收等变得容易。

1.9 容器

  从设计的观点来看,真正被需要的只是一个被操作,从而解决问题的序列。

  不同容器提供了不同类型的接口和外部行为 ;                        不同的容器对于某些操作具有不同的效率。

  ①参数化类型:编译器可以自动定制作用于特定类型上的类(泛型)。为了解决容器知道自己所保存的对象的类型,从而不需要向下转型以及消除犯错误的可能。

1.10 对象的创建和生命周期

  ①为了追求最大的执行速度,对象的存储空间和生命周期可以在编写程序时确定,这可以通过将对象置于堆栈或静态存储区域来实现。牺牲了灵活性,因为必须在编写程序时,知道对象确切的数量、生命周期和类型。

  ②在被称为堆(heap)的内存池中动态地创建对象。如果需要一个新对象,可以在需要的时刻直接在堆中创建。

 Java完全采用了动态内存分配方式。

1.11 异常处理

  异常是一种对象。异常不能被忽略。异常提供了一种从错误状况进行可靠恢复的途径。


1.12 并发编程

  同一时刻处理多个任务的思想。

  ①把问题切分成多个可独立运行的部分,从而提高程序的响应能力。在程序中,这些彼此独立运行的部分称之为线程,上述概念被称为并发。

  ②安全隐患:共享资源。某个任务锁定某项资源,完成其任务,然后释放资源锁,使其它任务可以使用这项资源。





































原创粉丝点击