• 《大象Think in UML》阅读笔记之二


                                                                                Think in UML阅读笔记(二)

         上一次读到面向对象和面向过程的区别和各自的优势,结合实例分析了面向过程在面对大数据的时候,已经不足以满足人们的需求,所以引入了面向对象,面向对象的方法把世界看做一个个独立的对象,并且对象之间相互没有因果关系,只有在一些外部力量的驱使下,这些对象之间才会根据某种规律相互传递信息,而这些对象之间的互动促成了这个世界的一个“过程”,面向对象的方法只需要研究“一个对象”,不会像面向过程那样遭遇大数据的问题,“这个对象”的复杂度和结构是有限的,彼此是相互独立的。

          在上一个组装汽车的例子中,对象是按照一定的规则组装出了一辆汽车,在这个例子中,我们可以发现一些问题,例如:零件是如何产生的???这种符合“规则”的标准零件是如何被设计制造出的???等等......这些问题的产生提醒了我们一件事,那就是“现实世界和对象世界是不一样的”。因此我们需要解决的问题有三个:Why(为什么?)、How(怎么做?)、What(是什么?)。在面对一个问题的时候,我们进行设计的时候设计的类的个数、方法的个数为什么是这么多个???我们没有一种固定的方法来确定这些东西,有经验的设计师根据经验,没有经验的我们只能通过不断的测试来证明我们设计出来的那些类实现了我们的某些需求,但是如果你设计的类不能满足我们的需求,我们就可能需要重新设计,这样花费的成本是难以估量的,而且我们有时候还不能真正确定我们设计的类已经满足了我们的需求,我现在是一名大三的学生,我们现在正在学习《软件设计模式》这门课,,正在学习GOF,里面有很多的类设计的模式和开始的原则来实现类的高低聚、低耦合。但是我们总是不太明白我们写的程序为什么是这样子的,其中的类是什么意思?为什么是这样?探究其本质,不过是因为现实世界和对象世界之间有着一道鸿沟,它叫“抽象”。抽象是面向对象的精髓所在,为了理解这种“抽象”,我们需要(1)一种把现实世界映射到对象世界的方法;(2)一种从对象世界描述现实世界的方法;(3)一种验证对象世界行为是否正确反映了现实世界的方法;要理解这些,我们引出了UML,UML背后所代表的面向对象分析设计方法。UML是一种建模用的语言,而所有的语言都是由基本词汇和语法两个部分构成的,UML定义了一些建立模型所需要的、表达某种特定含义的基本元素;这些元素称为元模型,相当于语言中的基本词汇,例如用例、类等。另外,UML还定义了这些元模型互相之间关系的规则,以及如何用这些元素和规则绘制图形以建立模型来映射现实世界;这些规则和图形称为表示法或试图(View),相当于语言中的语法。UML这种语言是用来写说明文的,用自然世界和计算机路基都能够理解的表达方式来说明现实世界。

          不论什么年代、什么领域,统一一词已经不只是一个简简单单的词汇,而是一个可以让不同的人或物理解同一种东西,统一的目的就是形成标准;在软件工程这个行业里面,任何一种组件化开发模式背后都有一个标准在规范和指导,可以说没有标准就没有现代工业化。随着软件工程的不断承受,软件行业的需求、分析、设计、开发这些过程也被分离开来并专业化了。

          可视化,从字面上来看,所谓可视化就是肉眼可见的,但是在这里可视化的含义是指,UML通过他的元模型和表示法,把那些通过文字或其他表达方式很难表达清楚的,隐晦的潜台词用简单直观的图形表达和暴露出来,准确而直观地描述复杂的含义,把文字变成图形,这就是UML可视化的真正含义。

          我们通过软件建立模型来对客观事物建立一种抽象的方法,要建立模型的前提是知道如何抽象现实世界,我们站在很高的抽象的层次,以高度归纳的视角来看这个世界的运作,就会发现现实世界不管多复杂,无论是哪个行业、无论做什么业务、其本质无非是由人、事、物和规则组成的。其中人是中心,随着人的动作的开始,就会使用一些东西产生一些,而人的动作要遵循一定的规则。人驱动系统,事体现工程,物记录结果,规则是控制。建立模型的关键就是弄明白有什么人,什么人做什么事,什么事产生什么物,中间有什么规则,再把人、事、物之间的关系定义出来,一个模型就出来了。

  • 相关阅读:
    字符串作为map的key
    类成员函数模板特化
    函数模板特化
    linux 下第一个Libevent代码学习
    linux下libevent安装
    随笔
    SELECT INTO 和 INSERT INTO SELECT 两种表复制语句
    字符串处理总结之一(C#String类)
    XPath语法 在C#中使用XPath示例
    C#代码实现邮箱验证C#中及一些常用的正则表达式
  • 原文地址:https://www.cnblogs.com/chenjie00/p/4867566.html
Copyright © 2020-2023  润新知