对象导论之抽象过程

来源:互联网 发布:mac系统文件夹 编辑:程序博客网 时间:2024/05/22 12:11

背景

平时都是在用Python, Java一直只是知道一些基本语法,现在重新读《Java编程思想》,希望能扎实的掌握Java。

第一章主要是介绍OOP (Object-oriented Programming, 面向对象编程) 背景性和补充性的材料。

1.1 抽象过程

所有编程语言都提供抽象机制,汇编语言是对底层机器的轻微抽象,“命令式”语言(FORTRAN、BASIC、C)是对汇编语言的抽象。但是这些抽象只是要求在解决问题的时候是的基于计算机结构而不是基于所要解决的问题的结构来考虑。因此,程序员必须建立起机器模型和实际解决问题的模型之间的关联。通俗的说,就是要把实际的业务问题用机器语言去描述。



于是出现了针对问题建模的编程语言:

  • LISP 所有问题最终都是列表
  • APL 所有问题都是算法形式的
  • PROLOG 所有问题都转换成决策链
  • ……

OOP出场

将问题空间中的元素及其在解空间中的表示称为“对象”。问题空间是对应现实世界的一个问题,一个问题包含多个元素,在计算机里(解空间)通过“对象”进行描述。

Alan Kay 总结了Java所基于的语言Smalltalk的五大特性:

  • 万物皆对象

    对象是奇特的变量,可以存储数据,还可以在自身上执行操作,理论上,可以抽象待求解问题的任何概念化构件,将其表示成程序中的对象。

  • 程序是对象的集合,它们通过发送消息告知彼此所要做的

    想要请求对象,就必须对对象发送一个消息

  • 每个对象都有自己的由其他对象所构成的存储

    可以通过创建包含对现有对象的包的方式来创建新的类型的对象

  • 每个对象都有其类型

    每个对象都是某个类(class)的一个实例(instance)

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

    特定类型的对象,就好像一类人,他们的属性和行为是相似的,所以可以接收同样的“思想”

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

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

0 0
原创粉丝点击