抽象的进步

为机器建模的另一个方法是为要解决的问题制作模型。

Alan Kay总结了Smalltalk的五大基本特征。这是第一种成功的面向对象程序设计语言,也是Java的基础语言。通过这些特征,我们可理解“纯粹”的面向对象程序设计方法是什么样的:

  • 所有的都东西都是对象,可将对象想象成一种的新型的变量,它保存这数据,但可以要求它对自己进行操作,理论上讲,可从 要解决问题的身上提出所有概念性的组件,然后在程序中将其表达为一个对象。
  • 程序是一大堆对象的组合,通过消息传递,各对象知道自己该做什么,为了向对象发出请求,需要那个对象发出一条“消息”。更具体的讲可将消息想象为一个调用请求,它调用的是从目标对象的一个子例程或函数。
  • 每个对象都有自己的存储空间,可容纳其它对象,或者说,通过封装现有对象,可以制造出新型对象,所以尽管对象的概念非常简单,但在程序中却可以达到任意高的复杂度。
  • 每个对象都是一种类型。根据语法,每个对象都是某个“类”的一个“实例”,其中,“类”(Class)是“类型”(Type)的同义词。一个类最重要的特征就是“能将什么消息发给它?”。
  • 同一类所有对象都能接收相同的消息。这实际是别有含义的一种说法,大家不久便能理解。由于类型为“圆”(Circle)的一个对象也属于类型为“形状”(Shape)的一个对象,所以一个圆完全能接收形状消息。这意味着可让程序代码统一指挥“形状”,令其自动控制所有符合“形状”描述的对象,其中自然包括“圆”。这一特性称为对象的“可替换性”,是OOP最重要的概念之一。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,699评论 19 139
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 175,776评论 25 709
  • 第一次在简书上写东西。就弄了一个这么看似很沉重的话题。因为今天,我一直关注的江歌案宣判。在办公室就和同事探...
    阳光猫_1576阅读 1,410评论 1 0
  • “他应该对我好!” 我不知道有多少人在婚姻中固守着这个信念。 我也是,直到昨天。 我一直觉得,在这个世界上,除了他...
    眼里有光的洺姐阅读 4,527评论 0 12
  • 6月18日,星期天,晴天 今天中午抽空看完了,感触很深,锁定自己的目标,决不放弃,在別人眼里看的永远是结果,不可能...
    张于阅读 1,007评论 0 0