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

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

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

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

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

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

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

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

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

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

  • 相关阅读:
    Two strings CodeForces
    Dasha and Photos CodeForces
    Largest Beautiful Number CodeForces
    Timetable CodeForces
    Financiers Game CodeForces
    AC日记——整理药名 openjudge 1.7 15
    AC日记——大小写字母互换 openjudge 1.7 14
    AC日记——将字符串中的小写字母换成大写字母 openjudge 1.7 13
    AC日记——加密的病历单 openjudge 1.7 12
    AC日记——潜伏着 openjudge 1.7 11
  • 原文地址:https://www.cnblogs.com/jiqing9006/p/3366233.html
Copyright © 2011-2022 走看看