OOP导论系列---抽象过程

所有编程语言都提供抽象机制。可以认为,人们所能解决的问题的复杂性直接取决于抽象的类型和质量。所谓“类型”是指“所抽象的是什么?”你可以抽取待求解问题的任何概念化构件,如:天空、海洋、山脉、草地、建筑、树木、银行、出纳、取款、交易、服务、几何、圆形、三角形、长方形、正方形等。。。

面向对象程序设计的特性:

  1. 万物皆为对象。将对象视为奇特的变量,她可以存储数据(域:对象里的字段),除此之外你还可以要求她在自身上执行操作(行为:对象的方法)。
  2. 程序是对象的集合,她们通过发送消息来告知彼此所要做的。要想请求一个对象,就必须对该对象发送一条消息,可以想象为对某个对象和方法的调用请求。
  3. 每个对象都有自己的由其她对象所构成的存储。换句话说,你可以通过创建包含现有对象的包的方式来创建新类型对象。因此,可以在程序中构建复杂的体系,同时将其复杂性隐藏在对象的简单性背后。
  4. 每个对象都拥有其类型。“每个对象都是某个类(class)的一个实例(instance)”,这里“类”就是“类型”的同义词。每个类最重要的区别于其她类的特性就是“可以发送什么样的消息给她”。
  5. 某一特定类型的所有对象都可以接收同样的消息。因为“圆形”类型的对象同时也是“几何”类型的对象,所以一个“圆形”对象必定能接受发送给“几何”对象的消息。这意味着可以编写与“几何”交互并自动处理所有与几何形性质相关的事物的代码。这种可替代性(substitutability)是OOP中最强有力的概念之一。

案例展示:

抽取构件:

  1. Geometry:几何
  2. Square:正方形
  3. Rectangle:长方形
  4. Triangle:三角形

说明:2,3,4都是抽象类型,都有自己的行为(周长、面积),并且都属于几何系列。

客户端程序员使用工具:

解说:抽象了客户端程序员使用工具构件,工具构件里的行为是静态的,方便调用,并持有对“几何”构件的引用,客户端程序员可以给此工具传入“正方形、长方形、三角形”等构件,从而调用相关构件的行为。

总结:上面的概念和内容是Java核心中的核心思想,大家要不断的反思,反思,再反思,争取悟出里面的全部思想,并转化为自己的“内功”,为以后设计或研读开源框架源码打下坚实基础!

如果同学们有疑问或者想获取更多资源,可以加“张无忌”老师微信(17091005779),找老师获取。

最新文章

  1. 获取文本的编码类型(from logparse)
  2. 获取APK签名
  3. android属性之excludeFromRecents -- clearTaskOnLaunch 隐身意图 启动activity
  4. 锋利的jQuery-7--$.extend()
  5. (转)C# 使用BackgroundWorker
  6. 计算CRC校验值(CRC16和CRC32)(网络传输检验)
  7. 【开源项目之路】jquery的build问题
  8. cocos2dx 手势识别
  9. [ES7] Exploring ES2016 Decorators
  10. django中间件templates写法
  11. JS于string 和 json互转对象
  12. centos6.5配置uwsgi与nginx支持django
  13. C++类中的Static关键字
  14. Git学习笔记01-安装Git
  15. python 一些方法函数
  16. MyBatis从入门到放弃二:传参
  17. 不要以为字段以transient修饰的话就一定不会被序列化
  18. struts2 jsp ueditor 上传图片失败,获取不到值,解决方法
  19. 通过Jersey客户端API调用REST风格的Web服务
  20. Oracle 补丁体系 及 opatch 工具 介绍

热门文章

  1. JS判断请求来自Android手机还是iPhone手机
  2. HTML学习笔记《二》 ----HTML部分标签应用
  3. easyui grid 里的可编辑text 加清空图标
  4. JavaScript中实现DI的原理(二)
  5. Android 自定义ScrollView(具有反弹效果的ScrollView,能够兼容横向的滑动)
  6. idea智能提示 不管用 问题
  7. 3.获取git仓库
  8. Mysql 启动失败常见错误
  9. lvm 相关
  10. c# 命名空间之System.IO(继承关系)