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. 前端之body标签中相关标签(一)

    一 字体标签   字体标签包含:h1~h6.<font>.<u>.<b>.<strong><em>.<sup>.<sub& ...

  2. linux下nginx的安装及配置

    一.安装nginx前,我们首先要确保系统安装了g++.gcc.openssl-devel.pcre-devel和zlib-devel软件,可通过如图所示命令进行检测,如果以安装我们可以通过图二所示卸载 ...

  3. 纯css模仿天猫首页

    <style> *{margin:0;padding:0} li{list-style:none} a{text-decoration:none} #wrapper{font: 12px/ ...

  4. linux php多版本

    ecshop还非php5.2 解压 gzip -cd php-5.2.14-fpm-0.5.14.diff.gz | patch -d php-5.2.14 -p1 打上php-fpm补丁再安装php ...

  5. springboot 使用webflux响应式开发教程(一)

    什么是webFlux 左侧是传统的基于Servlet的Spring Web MVC框架,右侧是5.0版本新引入的基于Reactive Streams的Spring WebFlux框架,从上到下依次是R ...

  6. java 从网上下载文件的几种方式

    package com.github.pandafang.tool; import java.io.BufferedOutputStream; import java.io.File; import ...

  7. Mysql存储Emoji表情[为何utf8不能存储以及如何使Mysql能够存储Emoji表情]

    https://segmentfault.com/a/1190000008533577

  8. python 文件目录操作

    在Python程序中执行目录和文件的操作 Python内置的os模块可以直接调用操作系统提供的接口函数 Python交互式命令行 >>> import os>>> ...

  9. Windows 10 X64 ISO 专业版&家庭版下载与永久激活

    好久没有更新博客,算算时间,已经有4年了,好吧,今天突发奇想,想把今天安装Windows 10的过程给记录下来. 2015年的时候,微软就发布了Windows 10,当时正版的Win7.Win8都可以 ...

  10. Hibernate缓存策略

    Hibernate的一级缓存又称为Session缓存,其适用范围是在当前的会话之中,其生命周期和Session相同,随着Session的销毁,一级缓存也会随之销毁.一级缓存是不能取消的,Hiberna ...