think in UML(一)
从一开始上课老师就讲面向对象设计面向对象设计,然而对于什么是面向对象是什么没有什么具体的概念,相较于面向对象设计,面向对象又有什么什么优势。《大象》从一开始就交代了我最基础的知识欠缺,在书的第一部分就将两个概念形象的展现在我面前。
面向过程方法认为我们的世界是由一个个相互关联的小系统组成的,面向过程方法还认为每个小系统都有着明确的开始和明确的结束,开始和结束之间有着严谨的因果关系,只要我们将这个小系统的每一个步骤和影响这个小系统走向的所有因素都分析出来,我们就能定义这个系统的行为。
面向对象方法将世界看作是一个个相互独立的对象,相互之间并无因果关系,他们平时是“鸡犬之声相闻,老死不相往来”的。只有在某个外部力量的驱动下,对象之间才会依据某种规律相互传递信息。这些交互构成了这个生动世界的一个“过程”。在没有外力的情况下,对象则保持着“静止”的状态。这些独立的对象有着一系列奇妙的特性。例如:封装,聚合,继承,接口,多态,依赖,耦合,方法。又用汽车组装的例子形象的揭示了面向对象的另一个非常重要的特性:抽象层次。
当面向对象方法解决面向过程方法出现的问题时,自己本身也会存在一些困难。实际上,想要跨越这道鸿沟,我们需要:(1)一种把现实世界映射到对象世界的方法。(2)一种从对象世界描述现实世界的方法。(3)一种验证对象世界行为是否反映了现实世界的方法。
在实践中,人们很快发现了问题:编程序需要的对象不但不能够从设计中自然而然地推导出来,而且强调连续性和过程话的结构化设计与时间驱动型的离散对象结构之间有着难以调和的矛盾。为了解决这些困难,一些面向对象的设计方法开始出现。
UML是一种建模用的语言,用自然世界和计算机逻辑都能够理解的表达方法来说明现实世界。除了对语言的掌握功力之外更重要的是思想和理念。语言如果不能用于沟通,那语言就没有意义!最好的方法就是创造一种打架都认可的统一语言。UML统一建模预言帝额意义也正在于此,UML采用了“可视化”的图形方式来定义语言。
首先,由现实世界到业务模型,再从业务模型到概念模型,最后再到概念模型。
UML是一种语言,用来描述软件产生过程中要产生的文档,统一过程则是知道如何产生这些文档以及这些文档要讲述什么方法。虽然同意过程是知道UML的方法中最追命、应用最广、也可能最成功的一个,但是两者却不是完全不可以分开的。
实施统一过程一方面出于提高软件成熟度的需要;另一方面是出于提高软件科技水平和质量的需要;再一方面,统一过程适用于开发稳定的架构。
问题领域=抽象角度1+抽象角度2+......抽象角度n
抽象角度=问题领域边界之外的参与者的业务目标=业务用例
业务用例=特定场景1+特定场景2+......特定场景n
特定场景=静态事物+特定的条件+特定的动作
(或者:特定场景=静态事物+特定的规则+特定的行为)
用例驱动:用例视图,逻辑视图,进程视图,实施视图,部署试图。
抽象层次是面向对象方法中极其重要的。抽象有两种方法:一种是自顶向下,适用于让人们从头开始认识事物;一种是自底向上,适用于在实践中改进和提高认识。对象分析方法:一切都是对象,对象都是独立的,对象都具有原子性,对象都是可抽象的,对象都有层次性。
RUP和UML是可以分离的,采用哪种方法其实并不妨碍试用UML来做软件的分析和设计。
无论是面向对象还是UML统一建模语言,都是辅助我们最终达到更好的设计出性能良好的软件的工具,理论终是纸上谈兵,重在实践,考虑什么方面,采用什么样的结构,怎样封装类,有时说不出原因单凭经验。
think in UML(一)的更多相关文章
- UML课程复习重点
第一章 一.UML图示建模工具 二.UML--统一建模语言,以图形符号为基础,描述软件模型既简洁又清晰.它不是开发方法,是独立于任何开发方法之外的语言.它用于描述软件系统分析.设计和实施中的各种模型. ...
- UML图中经常用到几种的关系图例
学习这个东西挺奇怪的,时间一长就容易忘记,或者记不清楚.今天看到一些UML图的关系,发现有些出入了,索性就写下来,以后再忘记的时候过来看看. 在UML的类图中,常见的有以下几种关系: 继承(Gener ...
- UML类图(下):关联、聚合、组合、依赖
前言 上一篇文章UML类图(上):类.继承.实现,讲了UML类图中类.继承.实现三种关系及其在UML类图中的画法,本文将接着上文的内容,继续讲讲对象之间的其他几种关系,主要就是关联.聚合.组合.依赖, ...
- UML类图(上):类、继承和实现
面向对象设计 对于一个程序员来说,在工作的开始阶段通常都是别人把东西设计好,你来做.伴随着个人的成长,这个过程将慢慢变成自己设计一部分功能来实现,自己实现.如果要自己设计,无论是给自己看,还是给别人看 ...
- UML
UML:1.继承关系用空心三角形+实线来表示2.实现接口用空心三角形+虚线来表示3.关联关系用实线箭头来表示4.依赖关系用虚线箭头来表示5.聚合关系用空心菱形+实线箭头来表示6.组合关系用实心菱形+实 ...
- UML类图与面向对象设计原则
1. 引言 从大一开始学习编程,到如今也已经有两年了.从最初学习的Html,Js,JaveSe,再到JavaEE,Android,自己也能写一些玩具.学习过程中也无意识的了解了一些所谓的设计模 ...
- 浅谈UML的概念和模型之UML九种图
1.用例图(use case diagrams) [概念]描述用户需求,从用户的角度描述系统的功能 [描述方式]椭圆表示某个用例:人形符号表示角色 [目的]帮组开发团队以一种可视化的方式理解系统的功能 ...
- UML类图几种关系的总结
在UML类图中,常见的有以下几种关系: 泛化(Generalization), 实现(Realization),关联(Association),聚合(Aggregation),组合(Composit ...
- 我的敏捷、需求分析、UML、软件设计电子书 - 下载(持续更新中)
我将所有我的电子书汇总在一起,方便大家下载!(持续更新) 文档保存在我的网站——软件知识原创基地上(www.umlonline.org),请放心下载. 1)软件设计是怎样炼成的?(2014-4-1 发 ...
- UML类图关系全面剖析
UML的类图关系分为: 关联.聚合/组合.依赖.泛化(继承).而其中关联又分为双向关联.单向关联.自身关联:下面就让我们一起来看看这些关系究竟是什么,以及它们的区别在哪里. 1.关联 双向关联:C1- ...
随机推荐
- 【Ansible 文档】【译文】动态inventory
Dynamic Inventory 动态inventory 配置管理系统的用户经常想要保存inventory到不同的软件系统中.Ansible提供了一个基本的基于文本的系统,正如inventory中描 ...
- Volley源码分析(四)NetWork与ResponseDelivery工作原理
这篇文章主要分析网络请求和结果交付的过程. NetWork工作原理 之前已经说到通过mNetWork.performRequest()方法来得到NetResponse,看一下该方法具体的执行流程,pe ...
- AxisWebservice 发送多参数配置
1.在web.xml中配置代码如下 <servlet> <servlet-name>AxisServlet</servlet-name> <display-n ...
- css 字体、文本、padding的样式
一.字体的样式: 1)字体倾斜:font-style:italic 2)字体大小:font-size 一般为偶数. 3)行高:line-height 当行高为奇数的时候,是文字上面比文字下面的少一 ...
- kubernetes 的wen pod 无法连接 mysql 的pod
1.分析 查看源代码 既然无法建立连接,那先看下是如何建立连接的.登录到myweb的docker容器里面,查看index.jsp文件,主要内容如下: Class.forName("com.m ...
- static成员函数不能调用non-static成员函数
1 一般类静态成员函数不能调用非静态成员函数 2 static成员函数可以调用构造函数吗? 答案是肯定的,由于static成员函数没有this指针,所以一般static成员函数是不能访问non-sta ...
- RESTful API设计概要
一.简介 1. 什么是REST REST全称是Representational State Transfer,中文意思是表述(编者注:通常译为表征)性状态转移. 它首次出现在2000年Roy Fiel ...
- 使用Gzip压缩数据,加快页面访问速度
在返回的json数据量大时,启用Gzip压缩,可以提高传输效率.下面为Gzip压缩对json字符串压缩并输出到页面的代码. 一.代码 /** 向浏览器输出字符串响应数据,启用 ...
- C#基础之.NET环境下WebConfig的加密
在将ASP.NET项目部署到服务器上时,内网环境下Web.Config往往是直接复制过去.对于外网环境,则需要对Web.Config文件进行加密. .NET环境下一共提供了2种方式的加密功能,分别是D ...
- ILSVRC2016目标检测任务回顾——视频目标检测(VID)
转自知乎<深度学习大讲堂> 雷锋网(公众号:雷锋网)按:本文作者王斌,中科院计算所前瞻研究实验室跨媒体计算组博士生,导师张勇东研究员.2016年在唐胜副研究员的带领下,作为计算所MCG-I ...