Rose中UML类图详解及画法

一、UML简介

    UML(Unified Modeling Language)是一种用于软件系统建模的标准化工具,它提供了一套统一的符号和语法,用于描述、设计、构建和交流软件系统的结构和行为。UML广泛应用于软件开发领域,被视为一种通用的建模语言。

    UML的主要目标是提供一种统一的、标准化的建模语言,以便软件开发团队能够更加清晰地理解和描述系统的结构和行为,从而更好地进行沟通、协作和设计。UML提供了一系列的图表和符号,用于描述系统的静态结构、动态行为和交互过程。

    UML包括了一些常用的图形建模工具,如类图、用例图、时序图、活动图、状态图等。这些图形工具可以用来描述系统的各个方面,例如类与对象、系统功能、交互过程、状态转换等。UML还提供了一些附加的建模机制,如关联、继承、多态、接口等,用于更详细地描述系统的特性和关系。

    通过使用UML,开发团队可以更好地共享和交流对系统的理解,减少误解和沟通障碍,并能够更好地进行系统设计、开发和维护。UML具有标准化的语法和符号,因此可以支持跨团队、跨组织的软件开发合作,提高开发效率和质量。

二、类图介绍

1.类图(Class Diagram)

是UML中最常用的一种图表,用于描述系统的静态结构,即系统中的类、接口、关系和属性等元素之间的关系。

在类图中,类以矩形框表示,包括类的名称、属性和方法。类之间的关系通过连线表示,有以下几种常见的关系:

1>关联关系(Association)

表示两个类之间的关联关系,可以是一对一、一对多或多对多的关系。关联关系可以是双向的,也可以是单向的。
例如:一个学生持有一个学生证,可以用关联关系表示为学生类和学生证类之间的关联关系。

单向关联:

双向关联:

自关联

在系统中可能会存在一些类的属性对象类型为该类本身,这种特殊的关联关系称为自关联。例如:一个节点类(Node)的成员又是节点Node类型的对象,如图所示:

 多重性关联

2>泛化关系(Inheritance)

(继承)关系

表示类与类之间的继承关系,即一个类继承自另一个类。继承关系使用空心三角箭头表示。

例如:Student类和Teacher类都是Person类的子类,Student类和Teacher类继承了Person类的属性和方法,Person类的属性包含姓名(name)和年龄(age),每一个Student和Teacher也都具有这两个属性,另外Student类增加了属性学号(studentNo),Teacher类增加了属性教师编号(teacherNo),Person类的方法包括行走move()和说话say(),Student类和Teacher类继承了这两个方法,而且Student类还新增方法study(),Teacher类还新增方法teach()。

3>实现关系(Realization)

表示类与接口之间的实现关系,即类实现了接口中定义的方法。实现关系使用虚线箭头表示。
   例如:定义了一个交通工具接口Vehicle,包含一个抽象操作move(),在类Ship和类Car中都实现了该move()操作

4>聚合关系(Aggregation)

表示整体与部分之间的关系,表示一个类包含另一个类的对象。聚合关系使用空心菱形和箭头表示。
   例如:一个公司包含多个员工,可以用聚合关系表示为公司类和员工类之间的关系。

   汽车发动机(Engine)是汽车(Car)的组成部分,但是汽车发动机可以独立存在,因此,汽车和发动机是聚合关系

5>组合关系(Composition)

表示一种强耦合的聚合关系,整体对象的生命周期与部分对象的生命周期相关联。组合关系使用实心菱形和箭头表示。
   例如:一个汽车由多个零部件组成,汽车的销毁会导致零部件的销毁,可以用组合关系表示为汽车类和零部件类之间的关系。

   例如:人的头(Head)与嘴巴(Mouth),嘴巴是头的组成部分之一,而且如果头没了,嘴巴也就没了,因此头和嘴巴是组合关系

6>依赖关系(Dependency

依赖关系表示一个类对另一个类的使用,即一个类依赖于另一个类的某个方法或功能。在类图中,依赖关系用带箭头的虚线表示,箭头指向被依赖的类。依赖关系表示在一个类的方法中调用了另一个类的方法或使用了其对象作为参数。

例如:驾驶员开车,在Driver类的drive()方法中将Car类型的对象car作为一个参数传递,以便在drive()方法中能够调用car的move()方法,且驾驶员的drive()方法依赖车的move()方法,因此类Driver依赖类Car,如图所示:

2.注意

类图除了表示类与类之间的关系外,还可以描述类的属性和方法。属性通常以名称和类型表示,例如:name: String。方法通常以名称、参数和返回类型表示,例如:getName(): String。

通过类图,可以清晰地描述系统中的类、接口和它们之间的关系,帮助开发人员更好地理解和设计系统的静态结构,从而更高效地进行软件开发。

3.系统分析与设计阶段

在系统分析与设计阶段,类通常可以分为三种,分别是实体类(Entity Class)、控制类(Control Class)和边界类(Boundary Class),下面对这三种类加以简要说明:

(1) 实体类:实体类对应系统需求中的每个实体,它们通常需要保存在永久存储体中,一般使用数据库表或文件来记录,实体类既包括存储和传递数据的类,还包括操作数据的类。实体类来源于需求说明中的名词,如学生、商品等。

(2) 控制类:控制类用于体现应用程序的执行逻辑,提供相应的业务操作,将控制类抽象出来可以降低界面和数据库之间的耦合度。控制类一般是由动宾结构的短语(动词+名词)转化来的名词,如增加商品对应有一个商品增加类,注册对应有一个用户注册类等。

(3) 边界类:边界类用于对外部用户与系统之间的交互对象进行抽象,主要包括界面类,如对话框、窗口、菜单等。

三、类图画法

1. 创建类图

(1) 右键单击浏览器中的"UseCase View"(用例视图)、"Logical View"(逻辑视图)或者位于这两种视图下的包。

(2) 在弹出的快捷菜单中,选中"New"(新建)下的"ClassDiagram"(类图)选项。

(3) 输入新的类图名称。

(4) 双击打开浏览器中的类图。
 

2.类图中如何创建类的属性和方法

1.创建一个最基本的类(含有类的名称即可)
2.右击刚刚创建好的类选择 New Attribute即可创建类的属性
3右击刚刚创建好的类选择 New Operation即可创建类的方法 

  • 13
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
很抱歉,作为一个文本AI模型,我无法提供具体的UML。但是,我可以为您提供一个关于Rose网上选课系统的简单的UML示例,以便您参考。 在这个示例,我们假设Rose网上选课系统有以下几个主要类: 1. 学生(Student)类:代表一个学生,包含属性如学号、姓名等,以及方法如选课、退课等。 2. 课程(Course)类:代表一门课程,包含属性如课程编号、课程名称等,以及方法如查询选修该课程的学生列表等。 3. 教师(Teacher)类:代表一位教师,包含属性如工号、姓名等,以及方法如发布课程、查看学生列表等。 4. 系统(System)类:代表整个选课系统,包含方法如登录、注册等。 下面是一个简化版的UML示例: ``` ------------------------------------ | Rose System | ------------------------------------ | - students: List<Student> | | - courses: List<Course> | ------------------------------------ | + login(username, password) | | + register(username, password) | ------------------------------------ ------------------------------------ | Student | ------------------------------------ | - studentId: String | | - name: String | | - selectedCourses: List<Course> | ------------------------------------ | + selectCourse(course) | | + dropCourse(course) | ------------------------------------ ------------------------------------ | Course | ------------------------------------ | - courseId: String | | - name: String | | - teacher: Teacher | ------------------------------------ | + getStudents() | ------------------------------------ ------------------------------------ | Teacher | ------------------------------------ | - teacherId: String | | - name: String | | - courses: List<Course> | ------------------------------------ | + publishCourse(course) | | + viewStudents(course) | ------------------------------------ ``` 这只是一个简单的示例,实际的系统类可能更加复杂。您可以根据具体需求进行调整和扩展。 希望这个简单的示例能对您有所帮助!如果您对其他问题有任何疑问,请随时提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

茶色岛^

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值