UML--对象的介绍
UML
相对于学习UML的符号含义而言,掌握它们背后的方法和思想是更为重要的。
软件是一种实践知识,仅仅靠书本不可能成为高手。书本只能给出思路和知识点,而掌握和消化这些知识则必须在实践中去完成。
如果我们要分析这个世界,并且用计算机模拟它,首要的工作是将这个过程描绘出来,把它们的因果关系都定义出来。通常,面向过程的分析方法是找到过程的起点,
然后顺藤摸瓜,分析每一个部分,直至达到过程的终点。
面向过程的困难,本质上是因为面向过程方法将世界看作是过程化的,一个个紧密相连的小系统,构成这个系统的
各个部分之间有着密不可分的因果关系。这种分析方法在需求复杂度较低的时候非常管用。然而这个世界系统是如此的复杂
,预设的过程仅仅因为一只蝴蝶轻轻扇动了一下翅膀就从此被颠覆,变得面目全非了。(这也是面向过程的一大缺憾)
这个时候就需要面向对象了:如果一次成型一辆汽车太过困难,我们可以将汽车分解为很多零件,分步制造,再依据预先设计好的接口把它们安装起来,形成最终的产品。
这个时候逻辑就被分割了,分割到了具体的方法中,以及调用这些方法的逻辑中。
面向对象方法将世界看作一个个相互独立的对象,相互之间并没有因果关系,它们平时是“鸡犬之声相闻,老死不相往来”的。
只有某个外部力量的驱动下,对象之间才会依据某种规律相互传递信息。这些交互构成了这个世界的一个“过程”。
从外部看来,对象内部就是一个黑匣子,什么也看不到,这被称为封装。
对象可以繁育,产下的孩子将拥有父辈全部的本领,这称为继承。(现实世界不可能如此,老爸牛逼,孩子不一定牛逼。或者老爸不牛逼,孩子不一定不牛逼。)
对象都是多面派,它会根据不同的要求展示其中的一个面,这就是接口。
多个对象可能长着相同的脸,这张脸背后却有着不同的行为,这就是多态。
抽象层次:站在汽车的抽象层次,我们会发现汽车是由变速器、发动机、底盘等部件组成的。
站在发动机的抽象层次,我们会发现发动机是由气缸、活塞等零件组成的。
而站在活塞的抽象层次上,我们还会发现活塞是由拉杆、曲轴等更小的零件组成的。
抽象层次的好处是不论在哪一个层次上,我们都只需要面对有限的复杂度和有限的对象结构,从而可以专心地了解这个层次上的对象是如何工作的。
抽象层次的另一个好处是低层次的零件更换不会影响高层次的功能。
现实世界和对象世界之间存在着一道鸿沟,这道鸿沟的名字叫做抽象。抽象是面向对象的精髓所在,同时也是面向对象的困难所在。
如何跨越这道鸿沟,我们需要:
一种把现实世界映射到对象世界的方法。
一种从对象世界描述现实世界的方法。
一种验证对象世界行为是否正确反映现实世界的方法。
UML,就是跨越这道鸿沟的桥梁。
UML--对象的介绍的更多相关文章
- 北风设计模式课程---20、UML类图介绍
北风设计模式课程---20.UML类图介绍 一.总结 一句话总结: 不仅要通过视频学,还要看别的博客里面的介绍,搜讲解,搜作用,搜实例 设计模式都是对生活的抽象,比如用户获得装备,我可以先装备工厂先生 ...
- UML 类图介绍
UML 类图介绍 一. UML 简介 UML ( Unified Modeling Language )即统一建模语言,是 OMG ( Object Management Group )发表的图标式软 ...
- 数据传输对象(DTO)介绍及各类型实体比较
数据传输对象(DTO)介绍及各类型实体比较 本文将介绍DDD分层架构中广泛使用的数据传输对象Dto,并且与领域实体Entity,查询实体QueryObject,视图实体ViewModel等几种实体进行 ...
- DDD分层架构之值对象(介绍篇)
DDD分层架构之值对象(介绍篇) 前面介绍了DDD分层架构的实体,并完成了实体层超类型的开发,同时提供了验证方面的支持.本篇将介绍另一个重要的构造块——值对象,它是聚合中的主要成分. 如果说你已经在使 ...
- 从零开始学习前端JAVASCRIPT — 4、JavaScript基础Math和Date对象的介绍
Math对象的介绍 1:Math对象 Math 对象用于执行数学任务.并不像 Date 和 String 那样是对象的类,因此没有构造函数 Math().您无需创建它,通过把 Math 作为对象使用就 ...
- js中关于Blob对象的介绍与使用
js中关于Blob对象的介绍与使用 blob对象介绍 一个 Blob对象表示一个不可变的, 原始数据的类似文件对象.Blob表示的数据不一定是一个JavaScript原生格式 blob对象本质上是 ...
- FormData js对象的介绍和使用
FormData js对象的介绍和使用 FormData对象,可以把所有表单元素的name与value组成一个queryString,提交到后台. 在使用ajax提交时,使用FormData对象可以减 ...
- 多线程的基本概念和Delphi线程对象Tthread介绍
多线程的基本概念和Delphi线程对象Tthread介绍 作者:xiaoru WIN 98/NT/2000/XP是个多任务操作系统,也就是:一个进程可以划分为多个线程,每个线程轮流占用CPU运行 ...
- UML类图介绍&类的六大关系
UML类图介绍&类的六大关系 官方定义 UML(统一建模语言),是一种用于软件系统分析和设计的语言工具,用于帮助软件开发人员进行思考和记录思路的方式 UML 图形化的语言 基本介绍 UML图: ...
- UML类图介绍以及PlantUML使用方法
类的UML表示方法 UML介绍 类图,是UML(统一建模语言)中用于描述"类"以及"类与类"之间的示意图.它形象的描述出了系统的结构,帮助人们理解系统. 类图是 ...
随机推荐
- NOI2014题解
起床困难综合症(BZOJ 3668) 送分题,直接从高位向低位贪心. 魔法森林(BZOJ 3669) 一个容易想到的办法就是枚举A的最大值,以B作为权值求最小生成树.暴力的话要T的.如果从小到大枚举A ...
- webpack之基础学习
webpack工作原理: 通过一个入口文件,main.js开始找到你的项目的所有依赖文件,使用loaders处理它们,最后打包为一个浏览器可识别的JavaScript文件. Webpack的核心原理 ...
- 设计模式16---设计模式之组合模式(Composite)(行为型)
1.场景模拟 使用软件模拟大树的根节点和树枝节点和叶子节点 抽象为两类,容器节点和叶子节点 2.不用模式的解决方案 package demo14.composite.example1; import ...
- resin4 简单学习
1.Resin 4.0.26 Resin是CAUCHO公司的产品,是一个非常流行的application server,对servlet和JSP提供了良好的支持,性能也比较优良,resin自身采用JA ...
- POJ 2455Secret Milking Machine(二分+网络流之最大流)
题目地址:POJ2455 手残真浪费时间啊..又拖到了今天才找出了错误..每晚两道题不知不觉又变回了每晚一道题...sad.. 第一次在isap中忘记调用bfs,第二次则是遍历的时候竟然是从1開始遍历 ...
- i春秋30强挑战赛pwn解题过程
80pts: 栈溢出,gdb调试发现发送29控制eip,nx:disabled,所以布置好shellcode后getshell from pwn import * #p=process('./tc1' ...
- 【转】使用 Eclipse 调试 Java 程序的 10 个技巧
你应该看过一些如<关于调试的N件事>这类很流行的帖子 .假设我每天花费1小时在调试我的应用程序上的话,那累积起来的话也是很大量的时间.由于这个原因,用这些时间来重视并了解所有使我们调试更方 ...
- UIViewController的生命周期(图解)
当一个视图控制器被创建,并在屏幕上显示的时候. 代码的执行顺序1. alloc 创建对象,分配空间2.init (initWithNibName ...
- GDI相关基础知识
原文链接:http://blog.csdn.net/poem_qianmo/article/details/7333886 GDI(Graphics Device Interface) 图形设备接口, ...
- 贪心 CF 332 C 好题 赞
题目链接: http://codeforces.com/problemset/problem/332/C 题目意思: 有n个命令,要通过p个,某主席要在通过的p个中选择k个接受. 每个任务有两个值ai ...