zoukankan      html  css  js  c++  java
  • UML--对象的介绍

    UML
    相对于学习UML的符号含义而言,掌握它们背后的方法和思想是更为重要的。
    软件是一种实践知识,仅仅靠书本不可能成为高手。书本只能给出思路和知识点,而掌握和消化这些知识则必须在实践中去完成。

    如果我们要分析这个世界,并且用计算机模拟它,首要的工作是将这个过程描绘出来,把它们的因果关系都定义出来。通常,面向过程的分析方法是找到过程的起点,
    然后顺藤摸瓜,分析每一个部分,直至达到过程的终点。

    面向过程的困难,本质上是因为面向过程方法将世界看作是过程化的,一个个紧密相连的小系统,构成这个系统的
    各个部分之间有着密不可分的因果关系。这种分析方法在需求复杂度较低的时候非常管用。然而这个世界系统是如此的复杂
    ,预设的过程仅仅因为一只蝴蝶轻轻扇动了一下翅膀就从此被颠覆,变得面目全非了。(这也是面向过程的一大缺憾)

    这个时候就需要面向对象了:如果一次成型一辆汽车太过困难,我们可以将汽车分解为很多零件,分步制造,再依据预先设计好的接口把它们安装起来,形成最终的产品。
    这个时候逻辑就被分割了,分割到了具体的方法中,以及调用这些方法的逻辑中。

    面向对象方法将世界看作一个个相互独立的对象,相互之间并没有因果关系,它们平时是“鸡犬之声相闻,老死不相往来”的。
    只有某个外部力量的驱动下,对象之间才会依据某种规律相互传递信息。这些交互构成了这个世界的一个“过程”。

    从外部看来,对象内部就是一个黑匣子,什么也看不到,这被称为封装。
    对象可以繁育,产下的孩子将拥有父辈全部的本领,这称为继承。(现实世界不可能如此,老爸牛逼,孩子不一定牛逼。或者老爸不牛逼,孩子不一定不牛逼。)
    对象都是多面派,它会根据不同的要求展示其中的一个面,这就是接口。
    多个对象可能长着相同的脸,这张脸背后却有着不同的行为,这就是多态。

    抽象层次:站在汽车的抽象层次,我们会发现汽车是由变速器、发动机、底盘等部件组成的。
    站在发动机的抽象层次,我们会发现发动机是由气缸、活塞等零件组成的。
    而站在活塞的抽象层次上,我们还会发现活塞是由拉杆、曲轴等更小的零件组成的。

    抽象层次的好处是不论在哪一个层次上,我们都只需要面对有限的复杂度和有限的对象结构,从而可以专心地了解这个层次上的对象是如何工作的。
    抽象层次的另一个好处是低层次的零件更换不会影响高层次的功能。

    现实世界和对象世界之间存在着一道鸿沟,这道鸿沟的名字叫做抽象。抽象是面向对象的精髓所在,同时也是面向对象的困难所在。
    如何跨越这道鸿沟,我们需要:
    一种把现实世界映射到对象世界的方法。
    一种从对象世界描述现实世界的方法。
    一种验证对象世界行为是否正确反映现实世界的方法。
    UML,就是跨越这道鸿沟的桥梁。

  • 相关阅读:
    DevExpress 最最最基础踩坑(如何设置控件属性)
    Oracle如何创建数据库(使用图形化界面,顺便提一下UTF-8和ZB16GB字符集的问题)
    ElementUI el-dialog中嵌套子页面
    Oracle详细教程(触发器,事务,存储过程,锁,游标)
    和人事交谈下来的几点感悟
    Oracle Groupby分组缺少表达式解决方法
    leetcode973. 最接近原点的 K 个点(谈谈C#中的Icomparer,ComParer,IComparable)
    APP的闪退和无响应
    APP测试的主要内容
    python数据结构
  • 原文地址:https://www.cnblogs.com/jiqing9006/p/3366233.html
Copyright © 2011-2022 走看看