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- ...
随机推荐
- 1.js基础(以通俗易懂的语言解释JavaScript)
1.JavaScript组成: ECMAScript: 解释器.翻译 -->几乎没有兼容问题 DOM: Document Object Model -->有一些操作不兼容 BOM: Bro ...
- Git提交分支
Git提交分支操作 1.git add 命令告诉 Git 开始对这些文件进行跟踪 git add . 2.然后提交 git commit -m'这是注释信息' 3.git pull命令用于从另一个存储 ...
- BeanDefinition及其实现类
[转自 http://blog.csdn.net/u011179993 ] 目录(?)[+] 一. BeanDefinition及其实现类 BeanDefinition接口 这个接口描述bea ...
- 在Word2007,2010,2016中分栏但不换页的方法
解决方法: word2007:界面左上角的按钮->选择word选项->依次点击“高级”->“版式选项”->点开加号,“按word6.x/95/97的方式排放脚注”. Word2 ...
- Promise 模式解析:Promise模式与异步及声明式编程
一.构建流程 1.(异步)数据源(请求)的构建:Promise的构建并执行请求: 2.处理流程的构建:then将处理函数保存: 二.处理: 1.请求的响应返回: 2.调用后继处理流程. 三. 1.构建 ...
- JDBC中的SPI实现
DriverManger加载时候会调用如下方法: 关键代码:java.sql.DriverManager#loadInitialDrivers 然后 有时间整理一下
- UART串口通信
#include "sys.h" #include "delay.h" #include "usart.h" u8 rdata[]; UAR ...
- leetcode16—3 Sum Closet
Given an array nums of n integers and an integer target, find three integers in nums such that the s ...
- SpringBoot实用技巧札记
目录 如何手工设置SpringBoot内嵌的Tomcat启动端口号(port) 如何解决Eclipse.Properties中文乱码的问题 如何手工设置SpringBoot内嵌的Tomcat启动端口号 ...
- JAVA框架 Spring JDBC模板
一:引入jar包: 1.数据驱动jar包: dbcp依赖的包: spring的事务包和数据库包: IOC包AOP包.log4j的包: 所有的jar包: 编写测试类: 注入JdbcTemplate类,该 ...