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 ...
随机推荐
- 解决Linux主机上的 远程MySQL客户端无法连接的问题
无法连接到 MySQL 数据库可能的原因有: 1. PHP 无法连接 MySQL 可能是 PHP 配置不正确,没加上连接 MySQL 的功能. 2. MySQL 软件包升级,但没有升级数据库,或安装 ...
- Ruby Regexp类
正则表达(Regexp)类 更新:2017/06/18 改变[]集合的表格大小 80% ---> 100% 定义 正则表达: 和字符串匹配的模式(pattern)的写法 正则表达(Regexp ...
- python 面向对象十 __init__和__new__
一.__init__和__new__方法 __init__ 和 __new__ 最主要的区别在于:1.__init__ 通常用于初始化一个新实例,控制这个初始化的过程,比如添加一些属性, 做一些额外的 ...
- bzoj 2456: mode【瞎搞】
这题加个#include都会MLE-- 神思路,每个数抵消宇哥和它不同的数,最后剩下的就是众数 #include<cstdio> int n,la,x,tot; int main() { ...
- 程序3-3 Palindromes
刘大婶说这个比较难,哈哈,我感觉自己写的代码还是比较简单的. #include<stdio.h> #include<string.h> #include<math.h&g ...
- pycharm快捷键及一些常用设置(转载)
转载于:http://blog.csdn.net/wangtong95/article/details/51100872 在PyCharm /opt/pycharm-3.4.1/help目录下可以找到 ...
- HDU 5558 后缀数组
思路: 这是一个错误的思路, 因为数据水才过= = 首先求出来后缀数组 把rank插到set里 每回差i两边离i近的rank值,更新 如果LCP相同,暴力左(右)继续更新sa的最小值 //By Sir ...
- 四大开源协议比较:BSD、Apache、GPL、LGPL【转载】
四大开源协议原文链接 本文参考文献:http://www.fsf.org/licensing/licenses/ 现今存在的开源协议很多,而经过Open Source Initiative组织通过批准 ...
- http缓存之lastModified和etag
1.cache-control 访问资源 首次访问页面时间:2018.2.1 9:56 (当前时间=GMT时间+8h) 缓存时长max-age:1 day Expire缓存失效时间:2018.2. ...
- AngularJS ng-repeat下使用ng-model
1 2 3 blue:<input type="radio" value="1" ng-model="selectValue"/> ...