UML--类图(最全版本解释)

引言

类图是用于描述系统的静态结构视图,主要表述类和接口之间关系描述;类图可以说是UML中比较重要的视图之一,是uml结构视图的基点。其中类图包含了类、协作、接口、信号、数据类型、枚举类型以及依赖关系、关联关系(单向关联、双向关联)、实现关系、泛化关系以及依赖关系的衍生使用关系和关联关系的衍生组合关系和聚合关系;今天小编会一一梳理各个元素的属性数据以及可连接关系。这些总结均是查看官方UML2.5以及相应uml学习书籍,如有疑问,也欢迎各位批评指正

UML元素

1、类

类(class)封装了数据和行为,是面向对象的重要组成部分,它是具有相同操作、属性、关系的对象集合的总称。在软件运行时,类被实例化成对象(object),对象对应某个具体的事物,是类的实例(instance)。

(还记得上边讲述过的UML二分法吗-抽象与实例的二分,今天小编也会整理UML或者软件编程中对于抽象的定义以及实例的定义;可以理解为类是抽象事物)

类可以配置的数据有属性和操作还可以接收信号的传递;以及可以给类本身或者类的任一属性或者任一操作配置约束,去满足业务不同的场景。

1.1、属性

类的属性表达式为【可见性】【属性名称】”:“【参数类型】"["【多重性】"]"”=“【默认值】

(符号【仅用于分类隔开,不属于表达式;符号“表示其里边元素固定需保留)

可见性分为public(代表类的子类以及类外部元素均可以访问)、private(代表仅类本身可以访问)、protected(类与子类均可以访问)、package(代表该包下的元素可以访问)。

参数类型可以分为基础类型如string、boolean、byte等还可以分为用户自己创建的类、数据类型、枚举类型进行引用。

多重性默认为1,为1时可以不展示出;可以表示为1到多、或者1到有限值、或者无限。

默认值一般为选择的参数类型的默认设置,比如布尔可选择ture或false,但是从软件代码工程上考虑来说一般默认为false会更好一点。但是一些参数类型可能没有默认,因此,这不是一个必填项。

在uml中会有作用域的概念,其主要分为类作用域和对象作用域;对应于软件代码中则展示为是否是static。类作用域代表所有实例共用这个值,对象作用域则代表所有对象拥有其特定值。

uml中支持对任何元素及其元素的属性操作进行自定义约束,因为类的属性也可以去增添相应的约束条件。例如一般常见的针对于属性的约束有changeable、ordered(针对于多重性时)、addonly、frozen等;约束的符号为{},所以在UML中如果看到{},则表示里边的文本或者表达式为该元素需执行的约束条件

1.2、操作

类的操作表达式为【可见性】【操作名称】【参数列表】【返回类型】

参数列表包括参数名称、参数类型、参数方向;参数类型在上边属性中有所提过,这边就不再赘述。参数方向分为in、out、inout,代表数据的流入、流出

返回类型代表调用操作值的返回值,允许没有返回,但是没有返回类型时应默认展示为void

1.3、接收

类可以接收其他实例传递的信号,默认展示为<<signal>>信号名称+信号参数

2、数据类型

数据类型包含基础类型、枚举类型以及用户自定义的数据类型;数据类型用以描述缺少身份的简单数据值。数据类型通过值传递,并且是不可变的实体。数据类型有属性和操作(操作不太常见)。操作不改变数据值,但是可以把数据值作为结果返回

3、枚举类型

枚举类型属于数据类型的一种,是用户自定义的数据类型,它包括名称和枚举字面名称的有序序列。每个字面名称是枚举范围内的一个值——是数据类型的一个预定义的实例。因此,枚举类型有枚举值的属性配置

4、信号

信号是实例之间异步通信激发的描述。要用于行为图中,所有的信息通知值来进行传递;信号可以配置属性和操作(但是所有信号有且仅有一个默认操作,send)

5、接口

接口声明一组操作的实现,通过声明一个接口,可以陈述一个抽象所需要的与其实现无关的行为。接口可以配置操作,接口无属性。

6、端口

在类图中仅作用于类上,端口是连接点,用于描述类与类之间的交互和通信。可以通过端口与其他类建立连接,实现类之间的消息传递和数据交换。端口仅代表数据之间传递,无需配置属性和操作。

7、依赖关系

依赖关系代表被依赖端元素变化则会影响依赖端元素,依赖关系具有时效性,代表具体一段时间内会产生依赖关系;两个类之间依赖关系可以表示为类A的操作中返回类型会有类B或者类A操作的参数类型会有类B

8、关联关系

关联关系表示一组链的组合,链是对象之间连接的关系线;可以理解为链是关联的实例。关联关系表示该抽象元素的某个实例间可能存在链接;因此与依赖关系的区别点在于生命周期内存在;关联关系可以分为单向关联和双向关联,具体区别如下:元素间连接了单向关联关系可以表示为类A→类B,则类A的属性类型中有类B即表示为[+属性名称:类B];如果类A和类B是双向关联,则表示为类A的属性类型中有类B;类B的属性类型中有类A,图示如下

(小编查询了各类书籍都未很明确定义关系线连接产生的变化,只能从代码角度分析,因此对于这段定论有所疑问欢迎各位探讨哦)

关联关系可以衍生为聚合关系和组合关系,其代表整体与部分的含义;其中组合关系代表生命周期相同,聚合关系代表生命周期不同

9、泛化关系

泛化关系代表同类型之间元素的元素连接,子类可以继承父类的所有属性及其操作并且可以在重新定义新的操作。因此子类可以实现父类的接口,代替父类。举例如下,父类:运动员;子类可以为游泳运动员或者跑步运动员等;并且对于运动员父类的属性操作,子类都可以继承过来,只不过与本身所新建或者重写的属性操作区别形式会显示为继承属性、继承操作等

10、实现关系

实现关系一般为类实现了接口的生命,或者用例与协作,组件和接口之间应用。

本篇还会持续新增哪些元素之间能连接哪些元素,关注小编,一起学习uml,同时,如若各位有更多好的建议,也欢迎私信评论哦~

### Java 文件操作中的权限问题解决方案 当遇到 `java.io.FileNotFoundException` 或者似的异常提示 `(Access is denied)` 时,通常是因为程序试访问或修改某个文件或目录时缺乏必要的权限。以下是可能的原因以及对应的解决方案: #### 原因分析 1. **目标路径的权限不足** 如果尝试在受保护的位置(如 C 盘根目录或其他受限区域)创建文件,则可能会因为操作系统级别的权限限制而失败[^3]。 2. **文件已被占用** 若目标文件已经被其他进程打开并锁定,则当前程序将无法对其进行写入或覆盖操作[^4]。 3. **用户账户控制 (UAC)** Windows 系统下的 UAC 功能可能导致即使是以管理员身份运行的应用也无法获得某些敏感位置的操作许可。 4. **网络驱动器或共享资源上的权限冲突** 当处理位于远程服务器或通过局域网挂载的存储设备上的数据时,可能存在额外的身份验证需求或是更严格的 ACL 设置阻止了正常流程执行。 5. **错误配置的安全策略** 错误设置的目标文件夹安全性选项也可能阻碍正常的读/写行为;比如未赋予 Everyone 组足够的权利来完成所需动作。 #### 解决策略 针对上述提到的各种可能性,这里给出几个可行的办法帮助克服此障碍: ##### 方法一:调整保存路径至非特权区 建议把新建立文档放置于用户的个人资料空间内(例如 Documents),而不是系统盘或者其他特殊分区下。这样可以有效规避大部分由 OS 强加给开发者带来的不便之处。 ```java @Test public void createInUserDirectory(){ String userHome = System.getProperty("user.home"); String filePath = userHome + "\\Documents\\news1.txt"; File file = new File(filePath); try { boolean created = file.createNewFile(); if(created){ System.out.println("文件已成功创建!"); } }catch(IOException ex){ ex.printStackTrace(); } } ``` ##### 方法二:提升应用启动级别 如果确实有必要继续沿用原始指定地址的话,那么可以通过右击项目入口点(.bat,.jar etc.)选择“以管理员身份运行”,从而临时提高整个会话期间所享有的授权等级以便顺利完成任务。不过需要注意的是这种方法仅适用于桌面端环境,在服务模式或者自动化脚本场景里并不适用。 另外也可以考虑修改 MANIFEST.MF 中 Main-Class 的定义部分加入如下参数实现自动请求最高权限: ```properties Manifest-Version: 1.0 Main-Class: com.example.MainApp Request-UAC-Elevation: true ``` ##### 方法三:确认无竞争性锁存在 确保没有任何第三方软件正在使用即将要操纵的那个具体实例之前,请务必关闭所有关联窗口和服务进程后再试一次新的调用逻辑测试看效果如何变化。 ##### 方法四:审查并修正NTFS属性分配情况 前往涉及的具体子目录上面点击鼠标右键-> 属性 -> 安全标签页 ,检查现有列表里面是否有对应主体条目缺失或者是其拥有的作用范围不足以满足实际业务诉求 。如果没有发现合适的匹配项则手动新增进去即可解决问题。 --- ### 注意事项 尽管提供了多种途径去缓解这个问题的影响程度,但在生产环境中还是推荐遵循最小化原则只授予刚好够用的那一份功能集就好,避免过度开放带来不必要的安全隐患风险。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值