UML系统建模学习
什么是UML系统建模
UML系统建模是一种与面向对象软件开发密切相关的建模方法。通过建造模型可以验证建造事物的可行性。UML是一种统一建模语言,它的全称是(Unified Method Language)。它的官方网址是:www.uml.org,目前最新的版本是2.5。模型是用某种工具对某个系统的表达方式。模型从某一个建模观点出发,抓住事物最重要的方面而简化或忽略其它方面。软件系统的建模使用建模语言来表达(例如UML)。UML的目标是以面向对象各种相关图的方式来描述任何类型的系统。
注:1.分布式系统:分布在一组机器上运行的系统,数据很容易从一台机器传送到另一台机器,需要同步通信机制来确保数据完整性。
2.小型软件:一般5000行代码一下的软件是小型软件,5000行至5万行代码之间的是中型软件,5万行以上的是大型软件。
面向对象方法
大型的、复杂的软件系统的开发是一项工程,必须按照工程学的方法组织软件的生产与管理,必须经过分析、设计、实现、测试、维护等一系列软件生命周期阶段。编程仍然是重要的,但是更具有决定性意义的是系统建模,只有在分析和设计阶段建立了良好的系统模型,才有可能保证工程的正确实施。OOPL:面向对象的编程语言,OOD:面向对象设计,面向对象分析:OOA。
用计算机解决问题需要用程序设计语言开对问题进行求解加以描述(编程),实质上,软件是问题求解的一种表述形式。对象是要研究任何的事物,对象可以是一个物理实体也可以是无形的事物,对象(类)由数据(事物的属性)和作用于事物的操作(体现事物行为)构成一个独立的整体。从程序设计者的角度来看,对象是一个程序模块,从用户角度来看,对象为他们提供所希望的行为。对象的操作通常称为方法。
类是对象的模板,即类是对一组有相同数据和相同操作的对象的抽象定义一个类所包含的方法和数据描述一组对象的共同属性和行为。类是在对象之上的抽象,对象则是类的具体化,是类的实例。类可以有子类,也可以有父类,形成类层次结构。
面向对象特征:
封装性:封装是一种信息隐藏技术,它体现于类的说明,使数据更安全,是对象的重要特性。封装使数据和加工该数据的方法(函数)封装为一个整体,以实现独立性很强的模块,使用户只能看到对象的外部特性(对象能接收哪些消息,具有哪些处理能力),对对象的内部特性(保存内部状态的私有数据和实现加工能力的算法)对用户是隐蔽的。疯长的目的在于把对象的设计者和对象的使用者分开,使用者不必知晓行为的实现细节,只需用设计者提供的消息访问该对象。通过封装,可以把类作为软件中的基本复用单元,提高其内聚度,降低耦合度。
继承性:继承性是子类自动共享父类数据和方法的机制,它由类的派生功能体现。一个类直接继承其父类的全部描述,同时可修改和扩充。继承具有传递性,也就是平时说的多继承。
多态性:同一消息为不同的对象接收时可产生完全不同的行为,这种现象称为动态多态。在C++里动态多态是通过继承来支持的。利用继承层次,尽可能的吧具有通用功能的协议存放在类层次中尽可能高的地方,而将实现这一功能的不同方法置于较低的层次。
在面向对象方法中,对象和消息传递分别表现事物及事物间相互联系的概念。这种对象、类、消息和方法的程序设计范式的基本特点在于对象的封装性和继承性。通过封装能将对象的定义和调用分开,通过继承能体现类与类之间的关系。
抽象:抽象是指强调实体的本质,内在的属性,使用抽象可以尽可能避免过早的考虑一些细节。在系统开发中,抽象指的是首相考虑对象的意义和行为,然后决定如何实现对象。类事先了对对象的数据(状态)和行为的抽象。类是封装良好的模块,类定义将其说明(用户可见的外部接口)与实现(用户不可见的内部实现)显式的分开。
面向对象的开发过程
面向对象方法遵循一般的认知方法学的基本概念,建立面向对象方法基础。面向对象方法学认为客观世界是由各种“对象”所组成的,任何事物都是对象,每一个对象都有自己的运动规律和内部状态,每一个对象都数据某个“类”,都是该对象类的一个元素。复杂的对象可以是由相对比较简单的各种对象以某种方式而构成的。不同对象的组合以及相互作用就构成了所要研究、分析和构造的客观系统。面向对象方法主要是模拟了人类在认知进程中的有一般到特殊的演绎功能或有特殊到一般的归纳功能。遵照面向对象方法学的思想在进行开发时,有如下步骤:
现实对象-----(归纳概括)----->现实类-------(抽象模拟)------>软件类--------(实例化)----->软件对象-------(活动交互)------->程序
首先进行面向对象分析:了解问题域所涉及的对象,对象间的关系和作用(操作),然后构造问题的对象模型,争取该模型能真实的反应出所需要解决的实际问题。在这个过程中,抽象是最本质、最重要的方法,针对不同问题选择不同的抽象层次。接下来是面向对象设计:即设计软件的对象模型。根据应用的面向对象那个软件开发环境的功能强弱不等,在对问题的对象模型进行分析的基础上,可能要对它进行一定的改造,但应该以最少改变原问题域的对象模型为原则。然后在软件系统内设计各个对象、对象间的关系(如层次关系、继承关系等)、对象间的通信方式(如消息模式)等,总之是设计各个对象应该做些什么。最后是面向对象实现,即软件功能的编码实现:包括:每个对象的内部功能实现:确立对象哪些处理能力应在哪些类中进行描述,确定并实现系统的界面、输出形式及其他控制机理等。
UML系统建模学习的更多相关文章
- 想学设计模式、想搞架构设计,先学学UML系统建模吧您
UML系统建模 1 概述 1.1 课程概述 汇集UML及其相关的一些话题 回顾UML相关的符号与概念 以电商订单相关业务为例,借助UML完成系统建模 将UML变成提升建模效率,表达架构思想的工具 1. ...
- UML系统建模的分析和应用
一.基本信息 标题:UML系统建模的分析和应用 时间:2016 出版源:无线互联科技 领域分类:统一建模语言 二.研究背景 问题定义:统一建模语言的分析应用 难点:掌握和理解相关系统的业务环境,掌握良 ...
- uml 图学习记录
UML类图与类的关系详解 2011-04-21 来源:网络 在画类图的时候,理清类和类之间的关系是重点.类的关系有泛化(Generalization).实现(Realization).依赖(D ...
- UML图学习之二 类图
类图(ClassDiagrams)是根据系统中的类以及各类之间的关系描述系统的静态视图.类图不仅显示系统内信息的结构,还描述系统内这些信息的行为.类图的一个重要目的是为其他图(如顺序图.交互图)定义一 ...
- UML建模学习1:UML统一建模语言简单介绍
一什么是UML? Unified Modeling Language(UML又称为统一建模语言或标准建模语言)是国际对象管理组织OMG制定的一个通 用的.可视化建模语言标准.能够用来描写叙述(spec ...
- 3 学习UML图 学习DDD的基本概念
今天在学习DDD的过程中看到了大神 圣杰的博文 个人觉得非常经典 强烈推荐 在此提供url链接: UML类图10分钟快速入门 关于聚合 的理解 :一类没有紧密相关的东西聚在一起 ,分开了也可以独立存 ...
- UML精粹学习 - 订单类结构图
Order Class Diagram of Martin Fowler's UML Distilled
- UML图学习之三 状态图
状态图(Statechart Diagram)主要用于描述一个对象在其生存期间的动态行为,表现为一个对象所经历的状态序列,引起状态转移的事件(Event),以及因状态转移而伴随的动作(Action). ...
- UML入门学习
在UML类图中,常见的有以下几种关系: 泛化(Generalization), 实现(Realization),关联(Association),聚合(Aggregation),组合(Composit ...
随机推荐
- CodeForces 721B Journey (DP)
题意:给定一个有向图,你从1出发到n,走尽可能多的点,并且使总权值不大于t. 析:在比赛时,竟然看成有向图了,就想了好久,感觉dp,但是不会啊...如果是有向图就好做多了,枚举边,然后打印就好,dp[ ...
- patch用法 (转载)
转载:http://shenze60.blog.163.com/blog/static/315747722009724113026896/ 首先介绍一下diff和patch.在这里不会把man在线文档 ...
- win8 使用notepad++写C代码
1. 安装mingw,这里有个不错的教程 http://www.metsky.com/archives/588.html 2. 在notepad++里做设置, 安装nppexec: nppexec-& ...
- bzoj 3528 [Zjoi2014]星系调查【树链剖分+数学】
参考:https://www.cnblogs.com/zhuohan123/p/3698852.html 首先,根据点到直线距离公式 \[ d=\frac{kx_0-y_0+b}{\sqrt{k^{2 ...
- P3161 [CQOI2012]模拟工厂
传送门 先枚举选择哪些订单,然后转为判定是否可行 在能完成的情况下肯定是花越多时间提高生产力越优 我们设可以有\(x\)单位时间来提高生产力,那么如果当前离下一个订单的时间为\(T\)时,这个订单要\ ...
- Qt事件系统之三:键盘事件
QKeyEvent类用来描述一个键盘事件.当键盘按键被按下或者被释放时,键盘事件便会被发送给拥有键盘输人焦点的部件. QKeyEvent的key()函数可以获取具体的按键,对于Qt中给定的所有按键,可 ...
- _bzoj1007 [HNOI2008]水平可见直线【单调栈】
传送门:http://www.lydsy.com/JudgeOnline/problem.php?id=1007 按斜率排序,去掉斜率相同时,截距较小的直线(即只保留该斜率下截距最大的直线).若当前直 ...
- 暴力(判凸四边形) FZOJ 2148 Moon Game
题目传送门 题意:给了n个点的坐标,问能有几个凸四边形 分析:数据规模小,直接暴力枚举,每次四个点判断是否会是凹四边形,条件是有一个点在另外三个点的内部,那么问题转换成判断一个点d是否在三角形abc内 ...
- 牛客小白月赛5-J-时间(time) (简单模拟)
题目描述 Apojacsleam是一个喜欢特殊时刻的人. 他定义了一个时刻,若电子表显示ab:ba(24小时制),则该时刻为“回文时刻”(可以有前导零).例如00:00就是回文时刻. 给定一个时刻,求 ...
- Android上的进程通信(IPC)机制
Interprocess Communication Android offers a mechanism for interprocess communication (IPC) using rem ...