• java编程思想之对象导论


    一、抽象过程

    程序员必须建立起在机器模型和实际待解决问题的模型之间的关联

    抽象的本质应该是建立在具体的问题上,而不应该是基于计算机的结构上的。

    第一个成功的面向对象的语言是:Smalltalk,那么他的五个基本特征是

    1).万物皆为对象。理论上讲,你可以抽取待解决问题的任何概念化构件将其表示为程序中的对象;它可以存储数据,除此之外它还可以执行自身的操作。

    2).程序是对象的集合,它们通过发送消息来告知彼此所要做的。通过消息进行调用对象的执行

    3).每个对象都有自己的由其他对象所构成的存储。

    4).每个对象都拥有其类型。每个对象都是一个类的实例

    5).某一特定类型的所有对象都可以接收同样的消息。

    对象的描述:对象具有状态、行为、标识。这意味着每一个对象都拥有内部数据和方法,并且每一个对象都可以唯一的与其他的对象区分开来,具体的说就是对象在内存中都拥有一个唯一的地址。

    二、每个对象都有一个接口

      类的由来:在程序执行过程中具有不同的状态而其他方面都相似的对象会被分组到对象的类中。

      因为类描述了具有相同特性和行为的对象的集合,所以一个类实际上是一个数据类型,在计算机看来,它和内置的对象如浮点类型的数据类似,系统都会欣然接受他的存在,并且象对待内置对象那样对它进行内存的分配和类型检查。它们唯一的区别在于:程序员通过定义类来适应问题,而不用再为了适应系统使用系统提供的表示机器中的存储单元的数据类型。

      对象是用来执行任务的,所以当有请求过来时,定义的对象需要满足这些请求,这些请求由对象的接口定义产生,并且在程序中由具体的方法的实现。从这里可以解决的问题是:一个请求对应一个方法,当向对象请求时与之对应的方法会被调用,然后执行相对应的代码程序。

    总结一下:通俗的讲,这里的一个对象都有一个接口的意思是每一个对象都是要执行一系列的请求的,这些请求的产生是在接口中定义的(这里所说的请求指的就是方法),当然还需要有实现接口中定义的方法的代码。

    三、每个对象都提供服务

      每个对象都提供一定的服务,我们的目标就是能够提供理想的服务来解决问题的一系列的对象

      同时将对象称为“服务提供者”还可以很好的提高代码的内聚性,因为每个对象都有自己需要完成的任务,当一个对象中需要完成的任务如果过多的话就会出现这个对象特别的庞杂,所以一般情况下是每一个对象都可以很好的完成一项任务,他不尝试做更多的事,这是一种很好的代码风格,同时也提高了代码的可复用性。

    四、被隐藏的具体实现

      java中存在一种保护机制,隐藏实现细节,对外只提供访问的接口,即存在访问控制。

      访问控制的原因有二:其一,访问控制可以保证数据内部的安全性,不能有任何人去随意改变他们不可以修改的地方;其二,当内部实现修改时,只要对外提供的接口不改变时,就不会产生什么影响(前提是你的实现和接口是分离的)。

      java提供了三种关键字来实现访问控制,private(类内部)、protected(继承关系内部可以访问)、public(所有的想访问的都可以访问),  还有一种是省略的包访问控制。

    五、复用具体实现

      面向对象的一大优点是实现代码的复用,简单的复用一个类的方式就是使用该类的对象,另外,我们还可以将某个对象内置于某个类中,称为该类的一个成员变量。新的类中可以由任意数量、任意类型的其他的对象组成,这样的使用现有的类合成新的类的方式被称为组合。组合是'has-a'关系。如果组合是动态生成的那么称为聚合。

      组合在uml图中的表示方式是实心的菱形加一个箭头。如果在相同的情况下我们使用组合和继承都能达到代码复用的效果,那么我们最好还是使用组合,继承存在一定的不安全性。

    六、继承

      

      

  • 相关阅读:
    elasticsearch restful api 关于PUT与POST
    elasticsearch关于 PUT /index/type/id
    Windows性能计数器相关基础(一)
    打了断点但VS2010断点无效
    使程序以管理员权限运行(C++)
    CListCtrl控件使用方法总结 --很详细(一)
    AdjustTokenPrivileges(进程权限)
    四种方法实现VC枚举系统当前进程
    MFC个人笔记--创建属性表,并通过文件操作,保存属性表中用户的选择 的步骤
    学习笔记--MFC在滚动条窗口如何使所图的图形不产生偏移
  • 原文地址:https://www.cnblogs.com/future-liu1121/p/7702037.html
Copyright © 2020-2023  润新知