《UML 2.5基础、建模与设计实践》(李波,姚丽丽,朱慧)【摘要 书评 试读】- 京东图书
下面以学生管理系统为例,从用例图的角度来进行系统类图的建模。通过从用例中识别类,得到的学生成绩管理系统的用例图如图5.23所示。
图5.23 学生成绩管理系统的用例图
根据用例图进行类图的建模主要是确定系统需要的类以及类之间的关联和主要类的属性的描述。
1. 确定类和关系
根据用例图进行类图的建模,首先要做的是通过分析用例图确定类及其关系。找到第一批类,并确定类中的内容。
根据图5.23所示的用例图,首先可以确定成绩Grades类和记录成绩的ReportCard类。其次,通过参与者名称来确定附加的类。在学生成绩管理系统中和成绩记录相关联的参与者有教师、学生和系统管理员,因此可以确定Teacher类、Student类和Administrator类。
确定了系统中的主要类后,下面通过用例图来确定各个功能应该所属的类:
在图5.23中共有8个用例,分别是发布成绩(Distribute Electronically)、记录分数(Record Grades)、更新分数(Update Grades)、保存分数(Save Grades)、上传分数(Load grades)、登录(Logon)、查看分数(View Grades)和生成成绩单(Generate Report Cards)。
- 发布成绩:将学生成绩以报表的方式发布给学生,属于ReportCard类。
- 记录分数:记录学生的成绩,属于Grades类。
- 更新分数:修改学生的成绩,属于Grades类。
- 保存分数:将学生的成绩保存,属于Grades类。
- 上传分数:上传学生的成绩,属于Grades类。
- 登录:登录到系统。
- 查看分数:记录学生的成绩,属于Grades类。
- 生成成绩单:将学生的成绩生成报表,属于ReportCard类。
通过上述的分析,目前在学生管理系统中有Grades类、ReportCard类、Teacher类、Student类和Administrator类,这5个类之间的关系如下:
- Administrator类需要查看Grades类,生成ReportCards类。
- Student类查看Grades类。
- ReportCards类包含Grades类。
通过上述关系的分析,可以初步确定类之间的关系如图5.24所示。
图5.24 类之间的初步关系
如果想要进行录入成绩、修改成绩、上传成绩和浏览成绩等操作,那么学生成绩管理系统的用户需要登录到相应的系统中才能执行相应的操作。因此,需要进一步细化系统的类及类之间的关系。增加了WebSite类和Logon类,其中WebSite类主要用于对系统的网址信息进行记载,Logom类主要用于登录系统。系统中的用户登录到系统才能浏览成绩,在登录系统的时候要进行身份验证,即需要授权访问。对学生管理系统中的类之间的关系进一步细化后的关系如图5.25所示。
图5.25 类之间关系的细化
下面通过添加类之间的多重性让类图的信息更加详细,并且对类图进行调整,以保证没有冗余的类和关系。增加多重性后的类图如图5.26所示。
图5.26 增加多重性
2. 确定属性和操作
根据以上分析确定了学生成绩管理系统中的类以及类之间的关系,下面根据已经建好的类和关系为系统中的类添加属性和操作,以便提供数据存储和其他需要的功能来完成系统功能。结果如图5.27所示。
图5.27 细化属性和方法
图5.27中表示参与者的类没有描述其属性和操作,但这并不表示该类没有属性和操作,而是在表示类图时不需要将它细化。
最后,为属性和操作提供参数、数据类型和初始值,最终的学生成绩管理系统类图如图5.28所示。
图5.28 学生成绩管理系统类图
3. 确定类及类图
根据第4章中对图书管理系统的需求分析以及用例图的描述,下面从类图的角度来分析图书管理系统中的类,以及类之间的关系和类图的实现。
图书管理系统中涉及的主要类以及类的作用如表5.7所示。
在表5.7中共有10个类,下面将对主要的Reader、Borrow、Book、ReaderType、Store和BookType类进行详细介绍。
1)Reader类
Reader类主要用于描述借阅者基本信息,其中主要包含6个属性和4个操作,如图5.29所示。
图5.29 Reader类
Reader类的属性主要有:
- r_id:借阅证号,类型为字符串,私有属性。
- r_name:借阅者姓名,类型为字符串,私有属性。
- r_date:录入日期,类型为日期,私有属性,默认值是系统的当前日期。
- rt_id:借阅者类型ID,类型为字符串,私有属性。
- r_status:状态,类型为字符串,私有属性,默认值是“可用”。
- r_quantity:借阅的数量,类型为整型,私有属性,默认值是0。
Reader类的方法主要有:
- add():增加借阅者信息。
- update():修改借阅者信息。
- delete():删除某个借阅者信息。
- lock():锁定借阅者。
2)Borrow类
Borrow类主要用于描述图书借阅者的借书和还书信息记录,其中主要包含5个属性,如图5.30所示。
图5.30 Borrow类
Borrow类的属性主要有:
- br_id:借阅信息的ID号,类型为字符串,私有属性。
- r_id:借阅证号,类型为字符串,私有属性。
- barCode:图书在图书馆中的存放位置信息的ID,类型为字符串,私有属性。
- outDate:图书借出日期,类型为日期,私有属性。
- inDate:还书日期,类型为日期,私有属性。
后面的类图就请读者自行分析了。