OOP导论系列---抽象过程
OOP导论系列---抽象过程
所有编程语言都提供抽象机制。可以认为,人们所能解决的问题的复杂性直接取决于抽象的类型和质量。所谓“类型”是指“所抽象的是什么?”你可以抽取待求解问题的任何概念化构件,如:天空、海洋、山脉、草地、建筑、树木、银行、出纳、取款、交易、服务、几何、圆形、三角形、长方形、正方形等。。。
面向对象程序设计的特性:
- 万物皆为对象。将对象视为奇特的变量,她可以存储数据(域:对象里的字段),除此之外你还可以要求她在自身上执行操作(行为:对象的方法)。
- 程序是对象的集合,她们通过发送消息来告知彼此所要做的。要想请求一个对象,就必须对该对象发送一条消息,可以想象为对某个对象和方法的调用请求。
- 每个对象都有自己的由其她对象所构成的存储。换句话说,你可以通过创建包含现有对象的包的方式来创建新类型对象。因此,可以在程序中构建复杂的体系,同时将其复杂性隐藏在对象的简单性背后。
- 每个对象都拥有其类型。“每个对象都是某个类(class)的一个实例(instance)”,这里“类”就是“类型”的同义词。每个类最重要的区别于其她类的特性就是“可以发送什么样的消息给她”。
- 某一特定类型的所有对象都可以接收同样的消息。因为“圆形”类型的对象同时也是“几何”类型的对象,所以一个“圆形”对象必定能接受发送给“几何”对象的消息。这意味着可以编写与“几何”交互并自动处理所有与几何形性质相关的事物的代码。这种可替代性(substitutability)是OOP中最强有力的概念之一。
案例展示:

抽取构件:
- Geometry:几何
- Square:正方形
- Rectangle:长方形
- Triangle:三角形
说明:2,3,4都是抽象类型,都有自己的行为(周长、面积),并且都属于几何系列。
客户端程序员使用工具:
解说:抽象了客户端程序员使用工具构件,工具构件里的行为是静态的,方便调用,并持有对“几何”构件的引用,客户端程序员可以给此工具传入“正方形、长方形、三角形”等构件,从而调用相关构件的行为。
总结:上面的概念和内容是Java核心中的核心思想,大家要不断的反思,反思,再反思,争取悟出里面的全部思想,并转化为自己的“内功”,为以后设计或研读开源框架源码打下坚实基础!
如果同学们有疑问或者想获取更多资源,可以加“张无忌”老师微信(17091005779),找老师获取。
OOP导论系列---抽象过程的更多相关文章
- Spring源深和六系列 CreateBean过程
blog宗旨:用图说话. 这一章的图讲述了createBean的过程.到这里spring容器就能够完毕IOC的整个过程,拿到我们须要的对象. 下一章我们接着来看一看AOP完毕的过程. 附:文件夹 Sp ...
- Java设计模式系列-抽象工厂模式
原创文章,转载请标注出处:https://www.cnblogs.com/V1haoge/p/10755412.html 一.概述 抽象工厂模式是对工厂方法模式的再升级,但是二者面对的场景稍显差别. ...
- Java九阳真经论述及愿景
Java九阳真经论述及愿景 “他强由他强,清风拂山冈,他横由他横,明月照大江.” <倚天屠龙记>中张无忌被玄冥二老的玄冥神掌打伤后,体寒难耐,到处求解决之法.一次被韦蝠王打下山谷后,偶遇一 ...
- Java编程思想 学习笔记1
一.对象导论 1.抽象过程 Alan Kay曾经总结了第一个成功的面向对象语言.同时也是Java所基于的语言之一的Smalltalk的五个基本特性,这些特性表现了纯粹的面向对象程序设计方式 1)万物皆 ...
- SICP— 第一章 构造过程抽象
SICP Structure And Interpretation Of Computer Programs 中文第2版 分两部分 S 和 I 第一章 构造过程抽象 1,程序设计的基本元素 2,过 ...
- Java编程思想读书笔记(一)【对象导论】
2018年1月7日15:45:58 前言 作为学习Java语言的经典之作<Java编程思想>,常常被人提起.虽然这本书出版十年有余,但是内容还是很给力的.很多人说这本书不是很适合初学者,我 ...
- 《Java编程思想》读书笔记-对象导论
计算机是头脑延伸的工具,是一种不同类型的表达媒体.本文以背景性的和补充性的材料,介绍包括开发方法概述在内的面向对象程序设计(Object-oriented Programming,OOP)的基本概念. ...
- LUA OOP编程实现方法
lua原生不支持OOP特性 确实如此, 同时可以采用其它lua代码的方式实现OOP的特性. OOP四大特性 抽象 封装 继承 多态 http://www.cnblogs.com/xiaosongluf ...
- iOS 抽象工厂模式
iOS 抽象工厂模式 什么是抽象工厂模式 简单了解一下 按照惯例,我们先了解一下什么是抽象工厂模式.抽象工厂模式和工厂方法模式很相似,但是抽象工厂模式将抽象发挥的更加极致,是三种工厂模式中最抽象的一种 ...
随机推荐
- 移动web中的幻灯片切换效果
百度或者谷歌下类似的插件有很多,原理都差不多,关键适合自己的项目,如果移动端要引入jquery这么大的插件,只能呵呵了.... 下面是工作中针对webkit内核的浏览器写的,html很简单: < ...
- pv-date-handle
pv-date-handle 这是一个时间格式化转换的小工具,简单易用 ## 快速开始 安装`npm install pv-date-handle -S` ```js import formateDa ...
- python 多进程数据交互及共享
多线程和多进程最大的不同在于,多进程中,同一个变量,各自有一份拷贝存在于每个进程中,互不影响,而多线程中,所有变量都由所有线程共享,所以,任何一个变量都可以被任何一个线程修改,因此,线程之间共享数据最 ...
- Android Studio 2.3.2 下载 - 百度网盘
Android Studio是一个为Android平台开发程序的集成开发环境,其包含用于构建Android应用所需的所有工具. Android Studio 2.3.2为最新的稳定版(截止到2017年 ...
- MySQL半同步复制的搭建和配置原理
半同步复制: 什么是半同步复制?我们知道在默认情况下,MySQL的复制是异步的,这意味着主服务器及其从服务器是独立的.异步复制可以提供最佳的性能,因为主服务器在将更新的数据写入它的二进制日志(Binl ...
- Struts2学习-struts+spring
学习帮助网址:http://www.cnblogs.com/S-E-P/archive/2012/01/18/2325253.html http://blog.csdn.net/ad921012/ar ...
- 在Windows 10上部署Apache PredictionIO开发环境
Windows在初研究人员的探索下,研究出了一套更为精简的环境配置,极大的缩短了开发时间与效率,在此总结以供后来者参阅. 1.部署环境的配置 Windows10 64 home IntelliJ ID ...
- 用jquery实现的简单数据双向绑定
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- [原]Android打包之Eclipse打多渠道包
Android自动打包流程详细图: 步骤一和步骤二参考:[原]Android打包之Eclipse打包 步骤三:编写build.xml <?xml version="1.0" ...
- tomcat 8 startup.bat启动乱码问题
修改Tomcat bin目录下startup.bat文件 将call "%EXECUTABLE%" start %CMD_LINE_ARGS% 改为 call "%EX ...