手机百度网站建设,网站开发知识付费,建设摩托车官网商城踏板,网站建设评估体系和大多数朋友一样#xff0c;Jeffrey 在一开始的时候也十分的厌烦软件工程的一系列东西#xff0c;对工程化工具十分厌恶#xff0c;觉得它繁琐#xff0c;需要记忆很多没有意思的东西。 但是之所以#xff0c;肯定有是因为。对工程化工具的不理解和不认可主要是基于两个逻… 和大多数朋友一样Jeffrey 在一开始的时候也十分的厌烦软件工程的一系列东西对工程化工具十分厌恶觉得它繁琐需要记忆很多没有意思的东西。 但是之所以肯定有是因为。对工程化工具的不理解和不认可主要是基于两个逻辑点1对于当下的任务来说学习成本高但是收效比较小即收益小 2即使学习了利用空间不足即应用少 如果要给出能说服自己学习软件工程的原因【也是一开始说服我自己的原因】 1逐渐接触更大体积的代码尤其是从零开始接触整体中的一部分业务代码类的命名方式和方法变量的命名和自己习惯不同等等导致理解成本高花费的时间成本高这个时候软件工程可以派上大用场降低理解成本 2很多前辈和跟我们说代码要先想好再写因为这样可以从全局概览的角度去思考算法和数据存储方式。说的好但是实现比较难这个时候就可以通过一些软件工程工具形象化的整理系统结构和算法步骤 1.换个角度
找了很多UML绘制的工具但是发现这些工具会增加很大的学习成本而且对于强迫症的我来说每次画图都需要把线放的对齐笔直性格原因又增加了我的使用成本进而降低了我的使用效率最终让我与一开始便利书写代码的初衷相违背进而我选择了使用plantUML一种十分简单的符号语言的方式来绘制UML学习成本低上手简单
2.UML 类图 使用类图的目的是为了形象化的得到系统中各个类/方法/接口/变量 之间的关系图 2.1类图中的基本元素
不要从学习图的角度去思考类图应该怎么画从代码的角度出发去思考类图中应该有什么。
对于我的Java系统来说从语法角度我需要在类图中体现类和它内部实例变量/方法静态变量/方法我还要体现类之间的继承和实现接口的关系这些都应该是我的类图里面需要的。
那么作为一个类图的发明者来说我就需要把这些东西都用符号表示出来。
首先表示一个类Class animal这个图我要把它的变量和方法分开这样方便我去看 对于我的变量来说它有类型对于我的方法来说它有参数有返回值有返回值的类型和数据的类型这些我都要体现出来 我的变量和方法还有访问修饰符的限制这些我也得表示出来 但是一般情况下取决于UML 的绘制工具不同我们用简单的键盘符号来表示访问修饰符
publicprivateprotecteddefault-#~
最后有的时候我想把一些类归类进而体现它的包所以我需要把包也体现出来 最后当然你可以通过手绘制的形式来画UML而这里我们通过在idea 中plantUML插件的形式来完成相信优秀的你肯定会插件的下载就叫这个名这时候你会发现你的idea 的右边的一列上有plantUml点开它。 然后找个文件夹new个txt文件然后输入以下代码你就能看到上图啦
startuml
package Entity{class animal{isAlive: boolean#gender: int-age: int~race: Stringbreath(): void}class birdclass dogclass cat
}
enduml2.2类图中的关系元素 6个三组
这一块就一个字麻烦但是也不麻烦用几个表我们简单说明一下这个地方需要一点点的耐心和记忆力。类类之间的关系从Java的角度来说是什么继承还有一种呢对于接口的实现。
这是第一组继承和实现也是最好理解的一组
继承/泛化实现一个类是另一个类的具体一个类是另一个类的实现实现要实现所有方法空心实线箭头空心虚线箭头plantUml1class bird extends animal 2bird --| animalplantUmlbird …| fly
第二组聚合和组合需要注意两点两个关系都代表部分和整体的关系但是组合的程度更深如果整体不存在则部分也不存在而聚合则是整体不存在部分可以单独存在。比如头和人就是组合关系帽子和人就是聚合关系
组合聚合部分指向整体相同生命周期部分指向整体部分可以单独存在实心菱形线空心菱形线plantUmlhead --* birdplantUmlhat --o bird
第三组关联和依赖关系
这两个是比较不容易区分的但是通常来说关联关系就是一个类的一个实例变量是另一个类而依赖关系是一个类的某个方法使用另一个类对象作为参数但是这里要注意的是关联关系里面有双向关联单向关联自关联多重性关联怎么说多重性关联就是一对多一对1 多对多min对Max当然其他的关系里面也可以这样表示
关联依赖一个类的一个实例变量是另一个类一个类的某个方法使用另一个类对象作为参数实线实心箭头虚线实心箭头plantUml1gender -- Student2workhouse “1” –“n” bookplantUml空气 …新陈代谢
以上的内容一定要牢记多看几遍记下来就好了
2.3补充语法
如果只有上面的这些内容其实已经够我们去完成基本UML类图的绘制了已经搭建起来了基本的类图和用plantUML语言来绘制类图的框架但是为了方便我们的使用补充一部分plantUML语言的语法来使得绘制更加完善
2.3.1 枚举类
enum Gender{MALE,FEMALE
}2.3.2 关系上的注释/ 标签
Student --| human : 继承2.3.3 其他方式的注释
note left of Student : 这个学生不一般note right of Student : 这个学生不二般note top of Student : 这个学生不三般note bottom of Student : 这个学生不四般class Student{int gender
}
note left of Student::gender这是性别
end note2.3.4 标题
title
这是学生系统类图
end title2.3.5 加粗/斜体
可以使用Markdown 语法来实现一些文字的变化
title
__这是学生系统类图__
**类图使用2**
end title但是plantuml 用的是一个只有基本功能的Creole 引擎
2.3.6 图注
caption 图13.上手实践
完成了上面的这部分可以尝试根据图把下面这个图的代码写出来 先写再看
startuml
Class 动物{有生命 : boolean繁衍() : void新陈代谢(空气,水) : void
}关系上的标签
动物 .. 水:依赖
动物 .. 空气:依赖class 鸟{翅膀下蛋()
}
鸟 --| 动物:继承
鸟 1 *-- 2 翅膀:组合
鸟 .. 翅膀: 依赖interface 飞翔{飞()
}
class 大雁 {飞翔()下蛋()
}
大雁 --| 鸟
大雁 ..| 飞翔class 鸭{下蛋()
}
鸭 --| 鸟
class 企鹅{下蛋()
}
企鹅 --| 鸟
企鹅 -- 气候class 大雁群{人字飞()一字飞()
}
大雁群 o-- 大雁唐老鸭 --| 鸭
enduml本篇关键字从设计者的角度图的关系上手实践