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

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

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

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

案例展示:

抽取构件:

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

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

客户端程序员使用工具:

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

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

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

OOP导论系列---抽象过程的更多相关文章

  1. Spring源深和六系列 CreateBean过程

    blog宗旨:用图说话. 这一章的图讲述了createBean的过程.到这里spring容器就能够完毕IOC的整个过程,拿到我们须要的对象. 下一章我们接着来看一看AOP完毕的过程. 附:文件夹 Sp ...

  2. Java设计模式系列-抽象工厂模式

    原创文章,转载请标注出处:https://www.cnblogs.com/V1haoge/p/10755412.html 一.概述 抽象工厂模式是对工厂方法模式的再升级,但是二者面对的场景稍显差别. ...

  3. Java九阳真经论述及愿景

    Java九阳真经论述及愿景 “他强由他强,清风拂山冈,他横由他横,明月照大江.” <倚天屠龙记>中张无忌被玄冥二老的玄冥神掌打伤后,体寒难耐,到处求解决之法.一次被韦蝠王打下山谷后,偶遇一 ...

  4. Java编程思想 学习笔记1

    一.对象导论 1.抽象过程 Alan Kay曾经总结了第一个成功的面向对象语言.同时也是Java所基于的语言之一的Smalltalk的五个基本特性,这些特性表现了纯粹的面向对象程序设计方式 1)万物皆 ...

  5. SICP— 第一章 构造过程抽象

    SICP  Structure And Interpretation Of Computer Programs 中文第2版 分两部分  S 和 I 第一章 构造过程抽象 1,程序设计的基本元素 2,过 ...

  6. Java编程思想读书笔记(一)【对象导论】

    2018年1月7日15:45:58 前言 作为学习Java语言的经典之作<Java编程思想>,常常被人提起.虽然这本书出版十年有余,但是内容还是很给力的.很多人说这本书不是很适合初学者,我 ...

  7. 《Java编程思想》读书笔记-对象导论

    计算机是头脑延伸的工具,是一种不同类型的表达媒体.本文以背景性的和补充性的材料,介绍包括开发方法概述在内的面向对象程序设计(Object-oriented Programming,OOP)的基本概念. ...

  8. LUA OOP编程实现方法

    lua原生不支持OOP特性 确实如此, 同时可以采用其它lua代码的方式实现OOP的特性. OOP四大特性 抽象 封装 继承 多态 http://www.cnblogs.com/xiaosongluf ...

  9. iOS 抽象工厂模式

    iOS 抽象工厂模式 什么是抽象工厂模式 简单了解一下 按照惯例,我们先了解一下什么是抽象工厂模式.抽象工厂模式和工厂方法模式很相似,但是抽象工厂模式将抽象发挥的更加极致,是三种工厂模式中最抽象的一种 ...

随机推荐

  1. MySQL基础数据类型

    一 介绍 存储引擎决定了表的类型,而表内存放的数据也要有不同的类型,每种数据类型都有自己的宽度,但宽度是可选的 详细参考: http://www.runoob.com/mysql/mysql-data ...

  2. C#基础拾遗系列之二:使用ILSpy探索C#7.0新增功能点

    C#基础拾遗系列之二:使用ILSpy探索C#7.0新增功能点   第一部分: C#是一种通用的,类型安全的,面向对象的编程语言.有如下特点: (1)面向对象:c# 是面向对象的范例的一个丰富实现, 它 ...

  3. QQ 聊天机器人小薇 1.0.1 发布!

    本次发布主要解决了消息丢失(Api返回码[1202])问题,并改进了改进了一些细节. 简介 XiaoV(小薇)是一个用 Java 写的 QQ 聊天机器人 Web 服务,可以用于社群互动: 监听多个 Q ...

  4. .NET开源工作流RoadFlow-流程运行-工作委托

    如果某一个人某一段时间不在单位,则可以将自己的工作委托给他人代为处理. 在 流程处理-->工作委托 中可以管理自己的委托,管理员也可以在 流程管理-->工作委托 中管理所有人的委托: 委托 ...

  5. CSS浮动并清除浮动(造成的影响)

    一.浮动 CSS浮动    CSS float浮动的深入研究.详解及拓展(一)    CSS浮动属性Float详解 块级元素独占一行 块级元素,在页面中独占一行,自上而下排列,也就是传说中的流. 可以 ...

  6. Http重要知识点

  7. shp文件导入mysql5.6.15

    百度了一下 方法大致相同,就是提供的资源都缺斤短两还在细节上有差异.所以上传一份正确的. 0.将cygwin1.dll拷贝到system32目录下面1.将shp以及shp的相关文件和DOShere的d ...

  8. SQL Server ->> Enable Instant File Initialization(开启文件及时初始化)

    我们在安装SQL Server的时候会在指定SQL Server各个服务的运行启动账户的账户的时候看到底下有一个选项写着“Grant Perform Volume Maintenance Task p ...

  9. c#编程指南(三) 泛型委托(Generic Delegate)

    泛型委托实际上就是一个.NET Framework预定义的委托,基本涵盖了所有常用的委托,所以一般不用用户重新声明啦. 很简单,看下面简单的小例子: //void method(); Action t ...

  10. [问题记录]cocos的lua绑定安装pyyaml报错

    描述:按照readme中的文档操作报错,提示python2.7没有安装,但是确实已经安装了,而且也设置环境变量成功了. 解决: 在D盘新建register.py的文件,内容如下: # # script ...