UML 之 类图

类图(Class diagrams)

类图以反映类的结构(属性、操作)以及类之间的关系为主要目的,描述了软件系统的结构,是一种静态建模方法
类图是最常用的UML图,显示出类、接口以及它们之间的静态结构和关系;它用于描述系统的结构化设计。



类图中的事物
类(Class)
1.从上到下分为三部分,分别是类名、属性和操作。类名是必须有的。
2.类如果有属性,则每一个属性都必须有一个名字,另外还可以有其他的描述信息,如可见性、数据类型、缺省值等。
3.类如果有操作,则每一个操作也都有一个名字,其他可选的信息包括可见性、参数的名字、参数类型、参数缺省值和操作的返回值的类型等。


接口(Interface)

一组操作的集合,只有操作的声明而没有实现。




抽象类(Abstract Class)

不能被实例化的类,一般至少包含一个抽象操作。




模板类(Template Class)

一种参数化的类,在编译时把模板参数绑定到不痛的数据类型,从而产生不同的类。






类图中的关系

详情请见《UML 之 UML中的关系》



下面是我自己画的机房收费系统的类图,仅供参考,有不足之处,希望大家给我指出来







### UML绘制方法 UML是一种静态结构,它展示了系统的组成部分以及这些部分之间的关系。以下是关于如何绘制UML的具体规则和示例。 #### 1. 基本构成要素 UML由矩形框表示,通常分为三个区域: - **顶部**:显示名[^1]。 - **中部**:列出属性(字段)。 - **底部**:定义操作(方法)。 如果不需要展示某些细节,则可以省略相应的部分。例如,在高层次的设计阶段可能只关注名而不涉及具体属性或方法。 #### 2. 表达间的关系 UML支持多种关系表达形式: - **关联关系**:两个之间存在某种联系,用一条直线连接两者并标注箭头方向表示导航性[^3]。 ```plaintext Person ----> Address ``` - **聚合关系**:整体与部分的一种弱化版本,“部分”可以脱离“整体”而独立存在。 ```plaintext Department --o Employee ``` - **合成关系**:一种更强的组合形式,暗示着“部分”的生命周期完全依赖于“整体”,一旦“整体”被销毁,“部分”也随之消失。 ```plaintext University -*- Faculty ``` - **泛化/继承关系**:子从父那里获得相同的特征和行为,表现为带空心三角形尖端的实线指向基。 ```plaintext Bird <- Sparrow ``` - **实现关系**:接口与其具体的实现者之间的契约约定,绘制成带有空心菱形末端的虚线连线至目标接口[^3]。 ```plaintext PaymentService ..|> OnlinePaymentProcessor ``` #### 3. 示例代码片段转换为UML 假设我们有一个简单的Java程序如下所示: ```java public class Car { private String model; private int year; public void start() {} } public interface Drivable { void drive(); } public class ElectricCar extends Car implements Drivable{ @Override public void drive(){} } ``` 对应的UML应包含`Car`作为超,具有私有的`model`字符串型变量和整数型的`year`成员;还有公开的方法`start()`。接着是`Drivable`接口仅含单一未实现函数签名`drive()`。最后,`ElectricCar`既是从`Car`派生出来的也是实现了上述接口的一个特殊实例。 --- ### 工具推荐 为了方便快捷地创建高质量的UML,可以选择合适的工具辅助完成工作流。一些流行的工具有Visio, StarUML, Enterprise Architect等商业解决方案或者免费开源替代品如PlantUML插件配合IDEA开发环境使用[^2]。 相关问题
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值