thinking in java ch2 notes

ch1 对象入门:

面向对象是一种抽象的进步。使得我们编程时候很多其它的是考虑问题本身。而非计算机的结构。面向对象的思想中。万物皆对象。都封装着各自的属性和行为。每一个程序都是一组对象的组合。他们之间可以相互调用对方的方法完毕协作,进而组合出各种强大的功能。每一个对象都属于一个类,而且每一个对象都可以接受从父类类型继承过来的的全部方法调用。
有双方面的原因促使我们控制对成员的訪问。第一个原因是防止程序猿接触他们不该接触的东西—— 一般是内部数据类型的设计思想。

若仅仅是为了解决特定的问题,用户仅仅需操作接口就可以,毋需明确这些信息。

我们 向用户提供的实际是一种服务,由于他们非常easy就可看出哪些对自己非常重要,以及哪些可忽略不计。 进行訪问控制的第二个原因是同意库设计人员改动内部结构。不用操心它会对客户程序猿造成什么影响。例如,我们最開始可能设计了一个形式简单的类,以便简化开发。

以后又决定进行改写,使其更快地执行。若接口与实现方法早已隔离开。并分别受到保护,就可放心做到这一点,仅仅要求用户又一次链接一下就可以。

编程中,应该尽量使用更加灵活的聚合关系而非继承关系,能够将成员对象设为私有的,这样就能够随意替换该成员变量,且对使用聚合后的对象的客户程序隐藏这个细节。
在继承关系中。子类既能够改善从父类得到的接口,这样就得到一种等价的关系:不论什么对父类的方法调用都相同适合于子类;也能够增添新的接口,这样就得到一种类似的关系:拥有父类类型的对象,并不能够调用子类新加入进去的接口,由于子类加入的接口并没有通知父类。不过子类继承了父类。而非父类继承了子类。

我们能够把须要的功能作为接口加入到父类中,然后全部的子类对象都当作父类对象来处理。这样,我们就能够仅仅与那一个父类对象打交道。统一了对全部子类对象的使用。这样,即使加入了新的子类。客户程序仍然能够以原来与父类打交道的方式继续正常执行,而不须要由于子类的变化而做改动訪问接口。因而程序具有了更好的灵活性。这样的子类当作父类来处理的方式称为“向上转型”。这时。当调用一个对象的方法时候。并不能够确定那个对象的准确类型,可是执行后却调用那个详细类型的方法。这就是多态。
设计程序的时候。或许我们只想抽取出来一系列方法,可是把详细实现放到他的子类中。这样我们就能够抽象出来的方法放在用abstract或者interface修饰的父类或者接口中。
当我们遍历集合中的元素时候。能够使用iterator接口隐藏不同集合的实现细节。进而能够使不同集合灵活的替换。
面向对象的分析设计步骤:需求分析和约束制定;uml图设计出全部对象及他们的相互关系;编码。维护


 

posted @ 2017-06-15 18:56  jzdwajue  阅读(84)  评论(0编辑  收藏  举报