人人都是领域专家-类图

/**

*  转载请注明作者longdick    http://longdick.iteye.com

*

*/

相关帖子:

1、人人都是领域专家-用例图

2、人人都是领域专家-活动图

3、人人都是领域专家-类图

4、人人都是领域专家-顺序图

5、人人都是领域专家-类图关系化

6、人人都是领域专家-类图关系说明

 

经过了领域专家的辛勤劳作,我们终于得到了精准的需求文档、形象的用例图和每个用例的活动图。

接下来轮到架构师出场,开始轰轰烈烈的分析阶段。

分析阶段最主要的产出是类图和顺序图。

 

为了简化问题,我们使用最后一次迭代的产出用例图(没有将用例进一步精化)。

 

如果使用敏捷迭代开发,一开始分析阶段倾向于选择风险最大的用例优先开发,这个风险的评估在架构人员拿到用例文档以后就可以开始了。在这个例子里,我们倾向于选择“购买商品”为风险最大用例,“登录”用例次之。so,接下来的分析阶段,我们只关注“登录”和“购买商品”这两个用例。

 

接下来分析这个用例图所有的参与者和用例,将实体识别出来添加到类图中。这往往是画类图的第一步,也是较简单的部分。既然UML主要用于面向对象语言建模,领域中的实体就是对应着语言里的对象。

 

我们分析过程如下:

  • 参与者是很明显的实体,因此会员,vip会员都是实体;
  • 购买商品用例明显涉及到商品实体;
  • 要购买商品肯定会生成一个订单实体;
  • 支付时还要涉及到账户实体;

先想到这么多,深入分析的话会发现用例中其实还有其他实体,但是,按照敏捷的思想,我们在第一个迭代中不用求全责备。况且,这个教程是用来说明方法过程,力求简单,并没有强求模型的完整性。

 

 

UML类图的最佳实践里包含三种久经考验的类类型:

  • 实体类(entity)
  • 控制类(control)
  • 边界类(boundary)

 

当然这只是模型意义上的类型,和语言的类没有关系。

实体类我们已经了解了,边界类是用户和控制类的媒介也就是用户接口,控制类是边界类和实体类的媒介。

OK,其实就是分层的概念了好吧。你可以理解成MVC差不多。

 

一个用例就可以抽取成为一个控制类,命名的方式可以是用例名+后缀。比如登录用例名是Login,我们可以用LoginWorkflow来描述登录控制类。后缀名可以任意取,比如Workflow,Controller,Service等等都可以,但至少在一个模型中要一致。

 

边界类也是如此,比如商品购买用例,我们采用用例名PurchaseStuffs+后缀的方式,后缀可以选择采用UI、View等等。

我们暂时只对登录和商品购买这两个用例进行建模。得到的类图如下。

 



类中的方法和属性可以在以后迭代中逐步补完。在这里先列出一些比较有可能用到的方法,属性可以慢慢来。

 

类图的改进和细化

 

到现在我们在类图上罗列了一堆游离的类,我们可以在已知的条件下改进这个类图比如说Member类和VIPMember类可以抽离出一个共有的接口或有默认实现的父类等等。这个类图的改进还包括描述清楚类之间的关系。先别急着加,我们可以等画顺序图的时候再来考虑类间的关系。

 


 

 

 

 

 

【无人机】基于改进粒子群算法的无人机路径规划研究[和遗传算法、粒子群算法进行比较](Matlab代码实现)内容概要:本文围绕基于改进粒子群算法的无人机路径规划展开研究,重点探讨了在复杂环境中利用改进粒子群算法(PSO)实现无人机三维路径规划的方法,并将其与遗传算法(GA)、标准粒子群算法等传统优化算法进行对比分析。研究内容涵盖路径规划的多目标优化、避障策略、航路点约束以及算法收敛性和寻优能力的评估,所有实验均通过Matlab代码实现,提供了完整的仿真验证流程。文章还提到了多种智能优化算法在无人机路径规划中的应用比较,突出了改进PSO在收敛速度和全局寻优方面的优势。; 适合人群:具备一定Matlab编程基础和优化算法知识的研究生、科研人员及从事无人机路径规划、智能优化算法研究的相关技术人员。; 使用场景及目标:①用于无人机在复杂地形或动态环境下的三维路径规划仿真研究;②比较不同智能优化算法(如PSO、GA、蚁群算法、RRT等)在路径规划中的性能差异;③为多目标优化问题提供算法选型和改进思路。; 阅读建议:建议读者结合文中提供的Matlab代码进行实践操作,重点关注算法的参数设置、适应度函数设计及路径约束处理方式,同时可参考文中提到的多种算法对比思路,拓展到其他智能优化算法的研究与改进中。
在软件工程中,(Class Diagram)是一种静态结构,属于统一建模语言(UML)的一部分。它用于描述系统中的的属性和方法以及之间的关系[^1]。通过,可以简化对系统的理解,并为系统分析、设计、编码和测试提供重要依据。 ### 的基本元素 1. **(Class)**:是面向对象编程的核心概念,表示具有相同属性、方法和关系的对象集合。 2. **属性(Attributes)**:的特征或数据成员。 3. **方法(Operations)**:的行为或功能。 4. **关系(Relationships)**:包括继承、关联、聚合、组合等。 ### 的常见关系 - **继承(Generalization)**:一个(子)继承另一个(父)的属性和方法。 - **关联(Association)**:两个之间的连接,可以是单向或双向。 - **聚合(Aggregation)**:一种特殊的关联,表示“整体-部分”关系。 - **组合(Composition)**:比聚合更强的关系,部分不能独立于整体存在。 - **依赖(Dependency)**:一个的变化影响另一个。 ### 绘制工具推荐 1. **StarUML**:一款开源的UML建模工具,支持、用例等多种UML。 2. **Visual Paradigm**:功能强大的UML工具,支持在线协作和多种型。 3. **Lucidchart**:基于Web的绘工具,支持UML设计。 4. **Draw.io (diagrams.net)**:免费且易于使用的在线绘工具,支持UML。 ### 实践教程示例 以下是一个简单的示例代码,使用PlantUML语法: ```plantuml @startuml class Animal { +String name +void eat() +void sleep() } class Dog { +void bark() } class Cat { +void meow() } Animal <|-- Dog Animal <|-- Cat @enduml ``` 该代码定义了一个`Animal`,并通过继承创建了`Dog`和`Cat`。可以通过PlantUML插件将其渲染为UML。 ### 学习资源推荐 1. **书籍** -UML精粹:标准建模语言简明指南》(UML Distilled: A Brief Guide to the Standard Object Modeling Language) - 《面向对象分析与设计(UML)》(Object-Oriented Analysis and Design with UML) 2. **在线教程** - [UML Class Diagram Tutorial](https://www.visual-paradigm.com/guide/uml-unified-modeling-language/uml-class-diagram-tutorial/) - [PlantUML官方文档](https://plantuml.com/class-diagram) 3. **视频课程** - Coursera上的《Software Engineering Principles》课程 - Udemy上的《UML Class Diagrams for Software Engineers》 ### 常见应用场景 - **需求分析阶段**:帮助识别系统中的核心和关系。 - **系统设计阶段**:作为架构设计的重要组成部分。 - **开发阶段**:指导程序员如何实现和接口[^3]。 ### 注意事项 - 在设计时,应保持简洁,避免过度复杂化。 - 遵循命名规范,确保名、属性名和方法名清晰易懂。 - 使用适当的工具进行版本控制和团队协作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值