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. 原生js、jQuery实现选项卡功能

    在大家在网上平常浏览网页的时候,想必各位都会看到选项卡功能,在这里给大家详解一下用原生js.jQuery如何来写一些基本的选项卡 话不多说,先给各位看一下功能图:              好了,下边 ...

  2. 文本类型的HTML

    <b>文本</b>加粗<i>倾斜<strong>加粗语气 工作里尽量使用strong<em>倾斜语气 工作里尽量使用em<u>下 ...

  3. eclipse 内存溢出

    2011年02月22日 星期二 11:14 eclipse.exe -vmargs -Xms128M -Xmx512M -XX:PermSize=64M -XX:MaxPermSize=128M ec ...

  4. 【Python】面向对象编程思想

    概念 "笔"作为一个抽象的概念,可以被看成是一个类.而一支实实在在的笔,则是"笔"这种类型的对象. 一个类可以有属于它的函数,这种函数被称为类的"方法 ...

  5. python numpy+mkl+scipy win64 安装

    用pip在windows下安装numpy,scipy等库时一般来说都不会很顺利比较好的方式是自己下载对应的whl文件pip install 话不多说上链接 http://www.lfd.uci.edu ...

  6. 命令行模式(CMD)下mysql查询中文显示乱码问题

    mysql的默认编码已经设置为utf-8,用其他工具(代码,mysql workbench)写入或读出时显示正常,但用cmd查询时显示为乱码. 2.原因:mysql的客户端根本无法以utf-8的形式返 ...

  7. 导出IIS Log列表,导出站点下虚拟目录列表

    Add-Type -AssemblyName System.Web import-module webadministration $ip = (gwmi Win32_NetworkAdapterCo ...

  8. 架设Git服务器

    架设Git服务器项目 Git Candy:http://github.com/Aimeast/GitCandy/ AE大神的作品, Git Candy© 是一个基于ASP.NET MVC的Git分布式 ...

  9. linux中进入mysql时报错Access denied for user 'root'@'localhost' (using password: YES)解决方案

    之前在linux中装完mysql后直接在命令行窗口输入mysql就会进入数据库了,但是今天输入mysql命令后直接报错,如下图: 之后输入:mysql -uroot -p 提示输入密码:***** 还 ...

  10. 你所不知道的C和C++运行库 标签: vc 2017-05-26 10:33 41人阅读 评论(0) 收藏

    在使用vs2013调用vc2005编译出的dll时出现错误,遂将源程序用vs2013编译出dll,再用vs2013调用错误消失,不解.寻找原因时有人说"VC库版本不一样",故查找C ...