ChatGPT也能画图?教你一键提效小技能
PlantUML是甚么?
使用人类可读的文本描写,上手容易 不要钱开源 智能布局,无需手动调剂 快速创建和更新 高度可定制的外观
(所用到的Prompt和工具地址在文末,可自取)
chatgpt中文版 http://chatgpt.guige.xyz
用户(User)下单。 定单(Order)交给定单处理器处理。 定单处理器(OrderProcessor)履行定单处理逻辑,并在完成后发送处理结果通知。 通知服务(NotificationService)发送通知给用户。
publicclassUser{
privateStringname;
privateStringemail;
//...
publicvoidplaceOrder(Orderorder){
//下单逻辑
//...
}
}
publicclassOrder{
privateUseruser;
privateStringorderId;
//...
publicvoidprocess(){
OrderProcessororderProcessor=newOrderProcessor();
orderProcessor.processOrder(this);
}
}
publicclassOrderProcessor{
publicvoidprocessOrder(Orderorder){
//履行定单处理逻辑
//...
//发送处理结果通知
NotificationService.sendNotification(order.getUser(),"定单处理完成");
}
}
publicclassNotificationService{
publicstaticvoidsendNotification(Useruser,Stringmessage){
//发送通知给用户
//...
}
}
@startuml
actorUser
participantOrder
participantOrderProcessor
participantNotificationService
User->Order:placeOrder(order)
activateOrder
Order->OrderProcessor:process()
activateOrderProcessor
OrderProcessor->NotificationService:processOrder()
activateNotificationService
NotificationService-->User:sendNotification()
deactivateNotificationService
deactivateOrderProcessor
deactivateOrder
@enduml

Person类是基类,具有name和age属性,和eat方法。 Teacher类继承自Person类,并添加了id属性和teach方法。 Student类也继承自Person类,并添加了id属性和study方法。
classPerson{
Stringname;
intage;
voideat(){
//吃饭的逻辑
}
}
classStudentextendsPerson{
StringstudentId;
voidstudy(){
//学习的逻辑
}
}
classTeacherextendsPerson{
StringteacherId;
voidteach(){
//教学的逻辑
}
}
@startuml
classPerson{
-name:String
-age:int
+eat():void
}
classStudent{
-studentId:String
+study():void
}
classTeacher{
-teacherId:String
+teach():void
}
Person<|-- student="">Person<|-- teacher="">
@enduml

用户开始购物,浏览产品,选择产品。 如果产品有库存,则将其添加到购物车中。 检查会不会有折扣码可用,如有则利用折扣码。 用户进行结账,如果支付成功,则下定单并显示定单确认页面。 否则,显示支付毛病信息。 如果产品无库存,则显示产品缺货信息。 最后,购物流程结束。
//开始购物
startShopping();
//浏览产品
browseProducts();
//选择产品
selectProduct();
//检查产品会不会有库存
if(isProductInStock()){
//添加到购物车中
addToCart();
//检查会不会有折扣码可用
if(hasDiscountCode()){
//利用折扣码
applyDiscountCode();
}
//用户进行结账
proceedToCheckout();
if(isPaymentSuccessful()){//支付成功
//下定单并显示定单确认页面
placeOrder();
showOrderConfirmation();
}else{//支付失败
//显示支付毛病信息
showPaymentError();
}
}else{//产品无库存
//显示产品缺货信息
showProductOutOfStockMessage();
}
//购物流程结束
endShopping();
@startuml
start
:开始购物;
:浏览产品;
:选择产品;
if(isProductInStock())then(有库存)
:添加到购物车;
if(hasDiscountCode())then(有折扣码)
:利用折扣码;
endif
:进入结账流程;
if(isPaymentSuccessful())then(支付成功)
:下定单;
:显示定单确认页面;
else(支付失败)
:显示支付毛病信息;
endif
else(无库存)
:显示产品缺货信息;
endif
:结束购物;
stop
@enduml

定单类(Order)具有一个表示当前状态的成员变量(state),并通过setState方法设置状态。 Order类还有一个process方法,用于触发状态处理。 定单状态接口(OrderState)定义了区别状态的处理方法。 具体的定单状态类(如NewOrderState、ShippedState等)实现了定单状态接口,并在其processOrder方法中履行具体的处理逻辑,随后流转到下一个状态。
//定单
classOrder{
privateOrderStatestate;
publicOrder(){
state=newNewOrderState();
}
publicvoidsetState(OrderStatestate){
this.state=state;
}
publicvoidprocess(){
state.processOrder(this);
}
//Othermethodsandattributes
}
//定单状态
interfaceOrderState{
voidprocessOrder(Orderorder);
}
//新定单状态
classNewOrderStateimplementsOrderState{
@Override
publicvoidprocessOrder(Orderorder){
//具体的处理逻辑
order.setState(newShippedState());//状态流传
}
}
//已发货状态
classShippedStateimplementsOrderState{
@Override
publicvoidprocessOrder(Orderorder){
//具体的处理逻辑
order.setState(newDeliveredState());//状态流传
}
}
//已投递状态
classDeliveredStateimplementsOrderState{
@Override
publicvoidprocessOrder(Orderorder){
//具体的处理逻辑
order.setState(newClosedState());//状态流传
}
}
//已关闭状态
classClosedStateimplementsOrderState{
@Override
publicvoidprocessOrder(Orderorder){
//具体的处理逻辑
}
}
@startuml
classOrder{
-state:OrderState
+setState(state:OrderState)
+process()
}
interfaceOrderState{
+processOrder(order:Order)
}
classNewOrderState{
+processOrder(order:Order)
}
classShippedState{
+processOrder(order:Order)
}
classDeliveredState{
+processOrder(order:Order)
}
classClosedState{
+processOrder(order:Order)
}
Order-->OrderState
OrderState<|.. neworderstate="">OrderState<|.. shippedstate="">OrderState<|.. deliveredstate="">OrderState<|.. closedstate="">
Order-->NewOrderState:<>
NewOrderState-->ShippedState:processOrder()
ShippedState-->DeliveredState:processOrder()
DeliveredState-->ClosedState:processOrder()
@enduml

图书管理员(Librarian)可以履行借出图书和归还图书的操作。 读者(Reader)可以履行搜索图书、借阅图书、归还图书和注册借书证的操作。
//图书管理员类
classLibrarian{
voidcheckOutBook(Bookbook,Readerreader){
//实现借书逻辑
}
voidreturnBook(Bookbook,Readerreader){
//实现还书逻辑
}
}
//读者类
classReader{
voidsearchBook(Stringkeyword){
//实现搜索图书逻辑
}
voidborrowBook(Bookbook){
//实现借书逻辑
}
voidreturnBook(Bookbook){
//实现还书逻辑
}
}
//Book类(图书)
classBook{
//图书属性和方法
}
@startuml
lefttorightdirection
actor图书管理员asAdmin
actor读者asReader
rectangle图书管理系统{
Admin-->(借出图书)
Admin-->(归还图书)
Reader-->(搜索图书)
Reader-->(借阅图书)
Reader-->(归还图书)
Reader-->(注册借书证)
}
@enduml

PlantUML是一个使用文本描写构建UML图的工具。 ChatGPT没法直接生成图象,但可以生成对应的文本描写或代码,然后借助PlantUML等工具转换为可视化的UML图。 实现进程: 1)给ChatGPT提供要生成UML图的Java代码; 2)向ChatGPT描写需要生成的UML图类型; 3)让ChatGPT根据代码生成PlantUML代码; 4)将PlantUML代码复制到官网预览并输出图片。
我将为你提供一个代码片断(由```分隔),请先充分理解该代码片断的含义。接下来,请用PlantUML语言为我绘制一个{流程图},要求该{流程图}能有助于解释该代码片断的结构和关系: ``` 代码 ```
PlantUMl官网:
https://www.PlantUML.com
桂¥哥¥网¥络www.guIgeGe.cn
本文来源于chatgptplus账号购买平台,转载请注明出处:https://chatgpt.guigege.cn/jiaocheng/29340.html 咨询请加VX:muhuanidc