统一建模语言
统一建模语言(英语:Unified Modeling Language,缩写 UML)是非专利的第三代建模和规约语言。UML是一种开发的方法,用于说明、可视化、构建和编写一个正在开发的、面向对象的、软件密集系统的制品的开放方法。UML展现了一系列最佳工程实践,这些最佳实践在对大规模,复杂系统进行建模方面,特别是在软件架构层次已经被验证有效。
现在来解释上面那段话是什么意思。在我们一开始开发软件的时候,因为软件结构还是比较简单,所以我们比不需要去分析软件的结构是什么样子。需要先写哪些类,哪些类里面具体实现哪些方法,这些都是直接存大脑里的。但是随着软件变得足够的复杂,过去这种原始的开发方式就显得力不从心。
系统变得越来越大,代码越写越多,这时候先前因为没有做规划的弊端就暴露无遗。UML主要就是为了解决软件开发人员做规划时,通过画图的方式直观地架构这个系统的结构——类与类之间的关系。这也就是UML的作用。
模型
功能模型:就是从用户的角度出发,描述程序都有哪些功能的模型图。
对象模型:就是从程序设计的角度出发,描述一个程序的组织结构。图中有类、接口、属性、抽象类,各个属性之间的继承关系等。我们就可以逻辑清晰地编写代码。
动态模型:就是表现出程序当中的内部行为。
使用
往往很多教材一下就会给我们介绍还有多少种UML模型,具体每一个模型又代表了什么意思。但是我的教程里UML和Github一样是我认为你最先应该了解到的两个基础的编程工具,UML可以帮你理清程序的结构,Github可以让你去了解大牛们的代码从中学习经验。
接下来,让我们通过具体的Java代码来了解UML图中的对象模型。
类图的结构
如下图所示,我们建造了一个Person类的结构图。图中包括这几点信息:
类的名称
类的成员属性
类的成员方法
属性的表示方式如下所示:
可见性 名称:类型[=缺省值]
可见性:public、private和protected,在类图中分别用+、-和#表示。
名称:属性的名称。
类型:属性的数据类型,可以是基本数据类型,也可以是用户自定义的类型。
缺省值:可选项,表示属性的初始值。
person
public class Person { private String name; private int age; public void run(){ …… } }
类图关系
关联
。双向关联:你中有我,我中有你双向关联
。单向关联:我中有你,你中没我
单项关联
。多重关联:一个餐厅里有许多服务员
多重关联
聚合:发动机可以独立于汽车存在,也可以按到汽车中
聚合
public class Car { private Engine engine; public Car(Engine engine) { this.engine = engine; } public void setEngine(Engine engine){ this.engine = engine; } }
组合:嘴必须在脸上
组合
public class Head { private Mouth mouth; public Head() { mouth = new Mouth(); } }
依赖:司机必须得有车
依赖
public class Driver{ private void driverCar( ){ Car car = new Car(); car.move(); } }
继承:老师和孩子都是人类,他们有相同的属性
继承
public class Teacher extends Person { …… }public class Children extends Person { …… }
接口与实现:小船和车都需要动起来
接口
public class Ship implements Vehicle{ …… }public class Car implements Vehicle{ …… }
作者:快乐的工程师
链接:https://www.jianshu.com/p/81df484324af
共同学习,写下你的评论
评论加载中...
作者其他优质文章