UML之类图

本文介绍了面向对象的基本概念及UML类图的绘制方法,详细解释了类图中的可见性、关系类型(关联、依赖、泛化、实现),并通过饮料销售机实例展示了如何运用这些概念来构建类图。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.概念

类和对象:所谓对象就是可以控制和操作的实体,类是对象的抽象描述,它包括属性的描述和行为的描述二方面。构建面向对象模型的基础是类和它们之间的关系。类图:用类和它们之间的关系描述系统的一种图示,是从静态角度表示系统的。

2.类的表示

 

3.可见性

Public 以加号表示,公有可见性。

Protected 以井号表示,保护可见性。

Private  以减号表示,私有可见性。

4.关系有四种:关联、依赖、泛化、实现。

关联:

(1)普通关联:A.名称:用以描述该关系的性质

                       B.角色:当一个类处于关联的一端时,该类就在这个关系中扮演了一个特定的角色;角色是关联中靠近它的一端的类对另外端的类呈现的职责。

                       C.多重性:说明一个关联的实例中有多少个相互连接的对象。

          自身关联:一个对象可以与另一个同类的对象有连接,即类可以与自身有关联。

(2)聚合关系:是用空心菱形的直线表示的。表达整体有部分构成的语义。例如一个部门由许多人员构成。与组合关系不同的是,整体和部分不是强依赖的,即使整体不存在了,部分依然存在。

(3)组合关系:用一条带实心菱形的直线表示。表达整体拥有部分的语义。例如:母公司拥有许多的子公司。是一种强依赖的聚合关系,如果整体不存在了,部分也将消亡。

 依赖:是一种使用关系,用带箭头的虚线表示。说明一个事物规格的说明变化可能影响到使用它的另一个事物。但反之未必。

 泛化:“is a kind of”是用一条空心箭头的直线表示,体现的是继承关系。指向被继承对象。

 实现:带空心箭头的虚线表示

举例:饮料销售机

买饮料描述:1.如果销售机内至少还存储有一罐被选择的饮料且机器中有合适的零钱,则销售机会自动弹出这种饮料给顾客。2.如果销售机内没有被选择的饮料,销售机给顾客一个提示信息,告诉顾客没有这种品牌的饮料,这时顾客可以选择退钱或换另一种品牌的饮料。3.如果机器中没有适合的零钱,销售机将退还钱,并显示一条消息提示顾客投入适当的零钱。

 供货描述:某个时间间隔后,供货代表打开销售机,拉出销售机前面的架子,在架子上补满各种品牌的饮料。还要在机器中加零钱。然后放好前端的架子,并锁好机器。

 取钱描述:某个时间间隔后,收款人打开销售机取出销售机前端的架子。取出钱后放好架子锁好机器。

结合实例的类图为:(初学者请指教)


### UML静态的概念 UML静态是一种结构化建模工具,主要用于描述系统的静态结构。它通过形化的方式展示系统中的及其相互关系,帮助开发者理解并设计复杂的软件架构[^2]。 #### 的主要构成要素 1. **(Class)** 表示系统中的实体或概念,通常由三个部分组成:名称、属性和方法。这些元素共同定义了一个的行为和状态。 2. **关联(Association)** 描述两个之间存在的逻辑连接,可以是一对一、一对多或多对多的关系。例如,“订单”与“客户”的关系可能表示为“一个客户可以有多个订单”。 3. **继承(Inheritance)** 子从父派生出来的机制,子会自动获得父的所有属性和行为。这种层次化的组织方式有助于减少重复代码。 4. **聚合/组合(Composition and Aggregation)** 聚合表示一种弱依赖关系;而组合则更强调强耦合性,即当整体被销毁时,部分也会随之消失。 --- ### 示例解释 以下是基于上述理论的一个简单例子: 假设我们正在开发一款电子商务平台,其中涉及几个核心业务对象:“Product(产品)”, “Category(别)” 和 “OrderDetail(订单详情)”。下面是一个简单的UML静态的设计方案: ```plaintext +-------------------+ | Category | +-------------------+ | - id: int | | - name: string | +-------------------+ | + addProduct() | | + removeProduct()| +-------------------+ ▲ / \ / \ v v +------------------+ +--------------------+ | Product |<----------------| OrderDetail | +------------------+ +--------------------+ | - productId: int | | - quantity: int | | - name: string | | - price: double | | - category: ref | | - product: ref | +------------------+ +--------------------+ | + getPrice() | | + setPrice() | +------------------+ ``` 在这个模型中: - `Category` 是产品的分容器,具有自己的 ID 和 名字,并且能够管理属于它的 Products 列表; - `Product` 包含基本信息比如名字、价格以及所属的 Category 参考; - `OrderDetail` 记录了某个特定数量的产品实例,同时还持有该产品的引用以便计算总价等操作。 以上就是如何利用 UML 静态表征实际应用领域内的某些方面的方法之一[^1]。 --- ###
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值