ChatGPT也能画图?教你一键生成时序图、类图、流程图、状态图以及用例图 |
您所在的位置:网站首页 › 画uml工具 › ChatGPT也能画图?教你一键生成时序图、类图、流程图、状态图以及用例图 |
作为一个文本模型,ChatGPT是无法直接输出图像的,除非借助其他的第三方插件或库。 但是,得益于前期接受了海量不同格式文本的预训练,ChatGPT可以轻松生成各种类型的结构化输出,例如表格,代码,数学公式等等。 这其中还包括一类「基于文本的图形描述语言」,它允许我们通过编写文本指令或代码来构建包含特定元素、关系以及布局的图形,而无需依赖图形编辑工具。 那么,我们是否可以改由让ChatGPT生成对应的文本指令或代码,然后再通过特定的解析器与渲染引擎,转换为可视化的图形或图表呢? 这不禁让我想起了一个很有意思的工具:PlantUML。 PlantUML是什么?PlantUML提供了一种用文本描述来绘制UML图的方式,可以绘制类图、时序图、用例图等等。 用PlantUML来创建图表有很多好处,包括: 使用人类可读的文本描述,上手容易 免费开源 智能布局,无需手动调整 快速创建和更新 高度可定制的外观接下来,我们将在《使用ChatGPT提高研发生产力的10个正确姿势》一文中的「代码解释器」基础上,进一步展示如何使用ChatGPT为指定代码生成合适的UML图。 (所用到的Prompt和工具地址在文末,可自取) 时序图时序图是一种用于描述对象之间交互行为的UML图,它展示了对象之间的消息传递顺序。 我们先给ChatGPT一份Java伪代码,这份代码描述了一个简单电商系统中的订单流程: 用户(User)下单; 订单(Order)交给订单处理器处理; 订单处理器(OrderProcessor)执行订单处理逻辑,并在完成后发送处理结果通知。 通知服务(NotificationService)发送通知给用户。 public class User { private String name; private String email; // ... public void placeOrder(Order order) { // 下单逻辑 // ... } } public class Order { private User user; private String orderId; // ... public void process() { OrderProcessor orderProcessor = new OrderProcessor(); orderProcessor.processOrder(this); } } public class OrderProcessor { public void processOrder(Order order) { // 执行订单处理逻辑 // ... // 发送处理结果通知 NotificationService.sendNotification(order.getUser(), "订单处理完成"); } } public class NotificationService { public static void sendNotification(User user, String message) { // 发送通知给用户 // ... } }然后,我们让ChatGPT根据这份伪代码用PlantUML语言构建一张时序图: @startuml actor User participant Order participant OrderProcessor participant NotificationService User -> Order: placeOrder(order) activate Order Order -> OrderProcessor: process() activate OrderProcessor OrderProcessor -> NotificationService: processOrder() activate NotificationService NotificationService --> User: sendNotification() deactivate NotificationService deactivate OrderProcessor deactivate Order @enduml最后,我们把ChatGPT生成的PlantUML代码复制粘贴到官网的运行块中预览: 类图是一种用于描述系统中的类以及类之间的关系的UML图,比如继承、关联、依赖等。 我们先给ChatGPT一份Java伪代码,这份代码描述了一个简单的人员系统: Person类是基类,具有name和age属性,以及eat方法; Teacher类继承自Person类,并添加了id属性和teach方法; Student类也继承自Person类,并添加了id属性和study方法; class Person { String name; int age; void eat() { // 吃饭的逻辑 } } class Student extends Person { String studentId; void study() { // 学习的逻辑 } } class Teacher extends Person { String teacherId; void teach() { // 教学的逻辑 } }然后,我们让ChatGPT根据这份伪代码用PlantUML语言构建一张类图: @startuml class Person { - name: String - age: int + eat(): void } class Student { - studentId: String + study(): void } class Teacher { - teacherId: String + teach(): void } Person (借出图书) Admin --> (归还图书) Reader --> (搜索图书) Reader --> (借阅图书) Reader --> (归还图书) Reader --> (注册借书证) } @enduml最后,我们把ChatGPT生成的PlantUML代码复制粘贴到官网的运行块中预览: 所用到Prompt: 我将为你提供一个代码片段(由```分隔),请先充分理解该代码片段的含义。接下来,请用PlantUML语言为我绘制一个{流程图},要求该{流程图}能有助于解释该代码片段的结构和关系: ``` 代码 ``` PlantUMl官网:www.plantuml.com PlantUML在线预览:www.plantuml.com/plantuml/um… |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |