【设计图绘制】
C4模型:https://insights.thoughtworks.cn/c4-model/
推荐参考:https://zhuanlan.zhihu.com/p/109655171 30分钟学会UML类图
工具:
PlantUML
https://mermaid.nodejs.cn/ 绘制流程、时序、甘特、象限图、饼图、思维导图、C4等
帖子中UML图在ProcessOn绘制。
类之间的关系
关联关系---表示一类对象与另一类对象之间有联系
通常一个类对象作为另外一个类的成员变量。 vs 依赖(一个类对象作为另外一个类方法的入参)
1)单向关联:
public class LoginForm{ private JButton loginButton; // 定义为成员变量 ... } public class JButton{ ... }
2)双向关联:顾客购买并拥有商品;商品被卖给某个顾客
1 2 3 4 5 6 7 8 9 | public class Customer{ private Product[] products; ... } public class Product{ private Customer customer; ... } |
3)自关联
1 2 3 4 | public class Node{ private Note subNode; ... } |
4)多重关联:表示两个关联对象才能够在数量上的对应关系
实际样例: Frame包含很多Button
public class LoginForm{ private JButton[] loginButton; // 定义为成员变量 ... } public class JButton{ ... }
5)聚合关系:整体和部分的关系:成员是对象的一部分,但是成员对象可以脱离对象独立存在
代码实现时,成员对象通常作为含参构造方法,Setter方法注入到对象中。 // 通过setter导入一个其他可独立存在的对象
public class Car{ private Engine engine; // 构造注入 public Car(Engine engine) { this.engine = engine; } // 设值注入 public void setEngine(Engine engine){ thins.engine = engine; } ... } public class Engine{ ... }
6)组合关系
整体和部分的关系,此时整体可以控制成员的生命周期,对象不存在,则成员也不存在。
代码通常在整体类构造方法中直接实例化成员类
public class Head{ private Mouth mouth; public Head(){ mouth = new Mouth(); } ... } public class Mouth{ ... }
依赖关系: 是一种使用关系:特定事物的改变可能影响到使用该事物的其他事物;在需要表示一个事物使用另一个事物时使用依赖关系。
大多数时,依赖关系体现在某个类的方法使用另一个类的对象作为参数
依赖方式的3种常见实现:
1、类对象作为另一个类方法中入参;
2、一个类方法中,将另一个类对象作为局部变量;
3、一个类方法调用另外一个类的静态方法
代码样例
// 实现类型1:类对象作为另一个类方法入参
public class Car { public void move() { // ... } } public class Driver { public void driver(Car car) { car.move(); } }
继承关系:描述父类与子类的关系
接口实现: 没有属性,且所有操作都是抽象的(不允许其中方法存在{}body)
时序图:
几种生命线类型
Boundary:边界对象,初学者dao用得少,在MVC模式、控制模式、需求分析过渡到系统设计中用得多些,可用于表示交互界面、子系统。
Control:控制对象,用于表示业务逻辑、分工协调的职责对象,采用控制模式分析设计时用得多。
Entity:实体对象,用于表示需要永久保存或较长生命期的数据对象,例如票据、文件、数据库(通常不直接说数据库等技术实现方式,而说逻辑意义的名称)。
对象:代表时序图中的对象在交互中所扮演的角色
位于时序图的顶部,以一个矩形表示。对象的命名方式一般有三种:
1 对象名和类名。例如:华为手机:手机、loginServiceObject:LoginService。
2 只显示类名,不显示对象,即为一个匿名类。例如::手机、:LoginSservice。
3 只显示对象名,不显示类名。例如:华为手机:、loginServiceObject:。
常用组合片段
样例:
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· winform 绘制太阳,地球,月球 运作规律
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 上周热点回顾(3.3-3.9)