PlantUML是什么?
使用人类可读的文本描述,上手容易 免费开源 智能布局,无需手动调整 快速创建和更新 高度可定制的外观
(所用到的Prompt和工具地址在文末,可自取)
用户(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) {
// 发送通知给用户
// ...
}
}
@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
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() {
// 教学的逻辑
}
}
@startuml
class Person {
- name: String
- age: int
+ eat(): void
}
class Student {
- studentId: String
+ study(): void
}
class Teacher {
- 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方法中执行具体的处理逻辑,随后流转到下一个状态。
// 订单
class Order {
private OrderState state;
public Order() {
state = new NewOrderState();
}
public void setState(OrderState state) {
this.state = state;
}
public void process() {
state.processOrder(this);
}
// Other methods and attributes
}
// 订单状态
interface OrderState {
void processOrder(Order order);
}
// 新订单状态
class NewOrderState implements OrderState {
@Override
public void processOrder(Order order) {
// 具体的处理逻辑
order.setState(new ShippedState()); // 状态流传
}
}
// 已发货状态
class ShippedState implements OrderState {
@Override
public void processOrder(Order order) {
// 具体的处理逻辑
order.setState(new DeliveredState()); // 状态流传
}
}
// 已送达状态
class DeliveredState implements OrderState {
@Override
public void processOrder(Order order) {
// 具体的处理逻辑
order.setState(new ClosedState()); // 状态流传
}
}
// 已关闭状态
class ClosedState implements OrderState {
@Override
public void processOrder(Order order) {
// 具体的处理逻辑
}
}
@startuml
class Order {
- state: OrderState
+ setState(state: OrderState)
+ process()
}
interface OrderState {
+ processOrder(order: Order)
}
class NewOrderState {
+ processOrder(order: Order)
}
class ShippedState {
+ processOrder(order: Order)
}
class DeliveredState {
+ processOrder(order: Order)
}
class ClosedState {
+ 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)可以执行搜索图书、借阅图书、归还图书以及注册借书证的操作。
// 图书管理员类
class Librarian {
void checkOutBook(Book book, Reader reader) {
// 实现借书逻辑
}
void returnBook(Book book, Reader reader) {
// 实现还书逻辑
}
}
// 读者类
class Reader {
void searchBook(String keyword) {
// 实现搜索图书逻辑
}
void borrowBook(Book book) {
// 实现借书逻辑
}
void returnBook(Book book) {
// 实现还书逻辑
}
}
// Book类(图书)
class Book {
// 图书属性和方法
}
@startuml
left to right direction
actor 图书管理员 as Admin
actor 读者 as Reader
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
PlantUML在线预览:https://www.plantuml.com/plantuml/uml/SyfFKj2rKt3CoKnELR1Io4ZDoSa70000
最后推荐一下我做的网站,玩Android: wanandroid.com ,包含详尽的知识体系、好用的工具,还有本公众号文章合集,欢迎体验和收藏!
推荐阅读:
扫一扫 关注我的公众号
如果你想要跟大家分享你的文章,欢迎投稿~
┏(^0^)┛明天见!
网友评论