一、对象图是啥?—— 系统的“暂停键”功能 🎮
关键字:对象图、类图实例、系统快照、特定时刻
🧠
对象图就像给运行中的系统按了“暂停键”,拍下的一张“静态照片”——它展示的是
某一时刻
系统里的具体对象、对象的状态(比如“用户LiLei的账号”),以及对象之间的关系(比如“LiLei和他订的机票”)。
🤖 类比:
如果把“类图”比作“电影剧本”(规定了角色和剧情框架),那“对象图”就是电影播放到某一分钟时的“帧画面”——能看到此刻每个角色(对象)的状态和位置。
✍️ 课本实例:
一场足球比赛的“类图”是“比赛规则+球员角色”,而“对象图”就是“比赛第30分钟时,每个球员的位置、跑动状态”的快照。
二、对象图的“零件”:对象+链 🧩
关键字:对象、链、类的实例、关联的实例
👆 1. 对象:类的“具体成品”
对象是类的
实例
——类是“模板”(比如“学生类”),对象是用模板做出来的“具体物品”(比如“学生小明”“学生小红”)。 在UML中,对象用
带下划线的矩形
表示,格式是“
对象名:类名
”,比如:
stu:Student
表示“名为stu的Student类实例”
也可以省略对象名(匿名对象:
:Student
)或类名(省略类名:
stu
)。 对象的“状态”是它的属性值(比如
stu
的
name="小明"
、
studentID=1001
),但对象图里
没有操作栏
(操作是类统一定义的,所有对象共享)。
🔗 2. 链:对象间的“连接绳”
链是类图中“关联关系”的实例——类图里“Student和Class关联”,对象图里就是“stu(Student实例)和G1_Class(Class实例)用链连接”。 链用
实线
表示,作用是“导航”:一个对象可以通过链找到另一个对象(比如“小明通过链找到他所在的G1班”)。但链不显示“多重性”(实例间是“一对一”的具体连接,没有“数量范围”)。
三、画对象图的“拍照步骤” 📷
关键字:建模步骤、对象识别、状态补充、链连接
画对象图就像“拍系统快照”,步骤如下:
- 选“拍照场景”:确定要展示的功能
比如要展示“机票预订”的瞬间,先确定这个功能对应的“机制”(比如“用户选座→生成机票”)。
- 挑“出镜对象”:从类图选参与的类
从类图里找出这个功能涉及的类(比如“User”“Ticket”“Flight”),然后创建它们的实例(比如
user:User
、
ticket:Ticket
)。
- 填“对象状态”:补充属性值
给每个对象填当前时刻的属性值,比如:
user:User { userID=“LiLei” } ticket:Ticket { seatID=“13B”, price=1200 }
- 连“对象链条”:用链连接相关对象
把有联系的对象用实线连起来,比如“user”和“ticket”之间画链,表示“LiLei订了13B的机票”。
四、对象图的“实战用法”:不止是拍照 🚀
关键字:模型验证、逆向工程、复杂系统分析
✅ 用法1:验证类图设计
如果类图设计有问题,画对象图时会发现逻辑矛盾——比如“机票类”没关联“航班类”,画对象图时就会发现“ticket”找不到对应的“flight”,从而修正类图。
🔍 用法2:逆向工程(从运行系统拍快照)
对正在运行的系统“暂停”,导出当前对象的状态和关系,生成对象图——这在系统调试时很有用,能快速定位“某一时刻哪些对象出了问题”。
☁️ 复杂场景:多对象协作的快照
在大型系统中,对象图可以展示“多个对象协作完成复杂功能”的瞬间——比如电商系统的“下单支付”时刻,对象图会包含“用户、订单、支付、库存”等对象,以及它们的连接关系,帮助开发者理解系统的实际运行逻辑。
五、对象图的“拍照禁忌” ❌
关键字:使用要点、避免冗余、聚焦场景
画对象图时要注意:
- 只拍“必要内容”:不要包含无关对象,聚焦当前场景;
- 不拍“动态消息”:对象图是静态快照,不展示对象间的消息传递(那是序列图的活儿);
- 别拍“过度细节”:只展示理解场景必需的属性值,避免冗余信息干扰阅读。