12-图书管理系统-静态结构设计-系统包和类_第1页
12-图书管理系统-静态结构设计-系统包和类_第2页
12-图书管理系统-静态结构设计-系统包和类_第3页
12-图书管理系统-静态结构设计-系统包和类_第4页
12-图书管理系统-静态结构设计-系统包和类_第5页
已阅读5页,还剩68页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

,软件工程与UML,林琳Email: ,Beyond Technology,图书管理系统第11周第2次课,今天的工作任务,图书管理系统的静态结构设计(体系结构与模式)。,提交内容,图书管理系统系统类图。,工作任务:图书管理系统的静态结构设计,提交内容:系统类图完成实验5,学习情景图书管理系统体系结构设计知识要点一览,面向对象设计(OOD)设计原则MVC设计模式DAO模式类图建模技术系统类图,知识要点1:面向对象设计,静态结构设计类设计包设计接口设计动态结构设计(行为和交互建模)对象如何进行交互的,关注,还记得“春晓”吧?,设计1,设计2,设计3,设计4,设计5,同样的需求,可以采取不同的设计方式来完成。,设计的好坏会影响系统的可重用性、可维护性和可扩展性。,知识要点2:设计原则,知识要点2:设计原则,“开闭”原则里氏代换原则合成复用原则接口隔离原则依赖倒转原则迪米特法则,课外阅读:Java与模式,抽象,信息隐蔽,模块独立,高内聚,低耦合,理论在实际中的运用设计模式,设计模式就是实现了这些原则,从而达到了代码复用、增加可维护性的目的。,提高代码复用提高可维护性,按照良好的设计原则进行设计,?,?,使用设计模式,知识要点3:MVC设计模式,先看一下图书管理系统的登陆,登陆的状态图,验证通过,验证未通过,一种设计:,将用户名和密码的验证,放在登录界面的“进入系统”按钮中进行。,第一种设计存在的问题:,问题1:扩展性差。目前这个系统只有一个图书馆工作人员使用,因此用户名和密码都是admin,这样验证可行,但是如果以后维护期间,需要增加工作人员或者增加学生、教师等使用角色,系统的扩展性就受到了限制。问题2:重用性不好。并且不同的角色需要写入不同的验证过程,不能重用。问题3:界面人员还要考虑算法和逻辑。使界面变得不单一。如何解决?,另一种设计:,新增加一个类UserLoginProcess,该类中有一个方法public boolean login_check(String uname,String upsw),此方法用来进行验证,如果验证通过则返回true给登录界面,否则返回false。,用户验证处理类,登录界面中,对用户验证处理类的使用,第2种设计给我们带来什么好处?,1.良好的封装,将界面和验证逻辑分开,系统结构更清晰。界面人员不用管验证的细节,只需要判断返回值是true还是false即可作出相应的显示操作。2. UserLoginProcess类还可以提供其他验证操作,包括链接数据库的操作,为系统扩展性提供了接口。3. UserLoginProcess类中的验证过程可以被重用,即使你再增加若干个不同角色的登录界面,一样可以使用这个类的方法来进行验证,重用性提高。,第2种设计使用了MVC思想,MVC,将界面、处理、数据源分开,MVC是Model,View,Controller的缩写。MVC是Application开发的设计模式,也就是大家所知道的Model2.在MVC的设计模式中,它包括三类对象:(1)模型(Model)对象:是应用程序的主体部分。(2)视图(View)对象:是应用程序中负责生成用户界面的部分。(3)控制器(Control)对象:是根据用户的输入,控制用户界面数据显示及更新Model对象状态的部分。即要求在Application开发中你把商业逻辑,界面显示,数据分离。,MVC结构图,状态查询,通知改变,视图选择,用户请求,状态改变,图书馆系统的MVC结构,用户图形界面类,数据源,业务逻辑和处理类,C,V,M,MVC让图书馆系统的结构变得清晰起来。但与此同时,我们发现,在图书管理系统的用例中, 有很多都是需要通过访问数据库来进行实现的。如果用户不使用原有的数据库了,使用新的数据库时,程序代码要改动的地方就太多了。怎么办?有没有什么好的设计模式可以让数据库访问变的可重用,可维护,可扩展呢?,使用DAO模式吧!,?新的问题,知识要点4:DAO设计模式,DAO是Data Access Object的缩写。数据访问:故名思义就是与数据库打交道。夹在业务逻辑与数据库资源中间。,业务逻辑程序,DAO,DAO模式,DAO模式,1. 封装Data Source(数据源)例如:Connection conn = DriverMananger.getConnection()就可以把Driver,URL,username,passpword这一些放在DAO中。如果在维护中,需要更改数据库的类型,例如把MSSQL换成Oracle的话,只需要更改DAO里面的getConnection()里面的Driver,URL即可。2. 封装对数据库的操作(例如最基本的增、删、改、查操作)例如:要插入一个新的用户,那么在DAO中我们只需要提供一个insertUser(User user)这一个方法就可以了。具体的操作是在DAO中实现的。在业务逻辑程序中调用DAO的时候.我们只要知道insertUser(User)是用来插入一个新的用户,而不需要知道是如何实现的。,DAO的功能:,完成工作任务图书管理系统的体系结构设计,包设计,com.lms.ui包中存放界面类,cess包中存放业务逻辑处理,com.lms.dao包中存放数据访问包,类设计主要是DAO实现类设计,com.lms.dao.base包,com.lms.dao.datasource包,此类映射图书表,此类映射借阅信息表,此类映射学生表,此类映射借阅视图,com.lms.dao.factory包,此包提供了对数据源的访问操作,各类的方法是根据需求规格说明书进行识别出来的,保证能够覆盖需求中提到的对数据库访问的操作。,注意,类的设计相对比较复杂,对大家的要求是要能看懂设计图,理解设计原则。在进行编码时,能够按照所给的类图实现编码。,6.3.1 包的名字,和其他建模的元素一样,每个包都必须有一个区别于其他包的名字。模型包的名字是一个字符串,它可分为简单名(simple name)和路径名(path name)。简单名是指包仅含一个简单的名称,路径名是指以包位于的外围包的名字作为前缀的包名。如下图所示,6.3.2 包拥有的元素,包是对模型元素进行分组的机制,它把模型元素划分成若干个子集。包可以拥有UML中的其他元素,包括类、接口、组件、节点、协作、用例和图,包甚至还可以包含其他包。如图所示,可以用文字或者图形的方式来显示包的内容。,6.3.3 包的可见性,包的可见性用来控制包外界的元素对包内元素的可访问权限,这一点和类的可见性类似。可见性可以分成3种。 (1)公有访问(public):包内的模型元素可以被任何引入此包的其他包的内含元素访问。公有访问用前缀于内含元素名字的加号(+)表示。(2)保护访问(protected):表示此元素能被该模型包在继承关系上后继模式包的内含元素访问。保护访问用前缀于内含元素名字的号()表示。(3)私有访问(private):表示此元素可以被属于用一包的内含元素访问。私有访问用前缀于内含元素名字的减号()表示。,6.3.4 引入与输出,在UML里,引入一个包中的元素可以单向的访问另一个包中的元素。引入(import)关系用构造型的import来修饰。包中具有公有访问权限的内含元素称为输出(export)。如图所示,包GUI有两个公共类Window和Form,类EvenHandler是受保护的,不能被包输出。,6.3.5 包中的泛化关系,和类间的泛化关系类似,包间也存在着泛化关系。包间的泛化关系也像类那样遵循替代原则,特殊包可以应用到一般包被使用的任何地方。包间还存在另一种关系:引入和访问依赖,用于在一个包引入另一个包输出的元素。如图所示,包GUI包含两个公共类Window和Frame,一个受保护类EvenHandler,6.3.7 包图建模技术,当为较复杂的系统建模时,使用包是非常有效的建模方法。包将建模元素按语义分组,从而使得复杂的系统模型能够被构造、表达、理解和管理。建立包图的具体做法如下。(1)分析系统模型元素(通常是对象类),把概念上或语义上相近的模型元素纳入一个包。(2)对于每一个包,标出其模型元素的可视性(公共、保护或私用)。(3)确定包与包之间的依赖关系,特别是输入依赖。(4)确定包与包之间的泛化关系,确定包元素的多重性与重载。(5)绘制包图。(6)包图精化。,类图工具箱,类规范,General标签 名称(Name) 构造型(Stereotype) 输出控制(Export Control),类规范,Detail标签多重性(Multiplicity) 存储需求(Space) 并发性(Concurrency),类规范,Attributes标签 Operation标签 Relations标签 Nested标签创建嵌套类 右单击标签中任一空白处,从快捷菜单中选择Insert,输入嵌套类名称;按一般方法创建父类和嵌套类:在浏览器中,将嵌套类拖放到父类。,类规范,Components标签显示用于实现系统中类的构件 复选标记框“Show all components”表示是否要显示模型中的所有构件;如果选中该标记,则显示系统中的所有构件;否则,只显示实现所选类的构件 显示构件时,同时还显示构件所属的包,以及实现所采用的编程语言,属性规范,General标签属性数据类型(Type) 属性构造型(Stereotype) 属性的初值(Initial) 输出控制(Export Control),Detail标签属性控制(Containment)By value:按数值 By reference:按引用Unspecified:未指定静态属性(Static) 派生属性(Derived),属性规范,操作规范,General标签返回值的类型(Return)构造型(Stereotype) 输出控制(Export Control),操作规范,Detail标签 操作变元(argument) 操作协议(Protocol) 操作限制(Qualification) 内存长度(Size) 时间(Time) 并发性(Concurrency) Sequential:只有一个控制线程时,操作正常工作。 Guarded:存在多个控制线程时,不同线程的类相互协作,操作可正常工作。 Synchronous:存在多个控制线程时,操作可正常工作。,操作规范,异常(Exceptions)标签 操作可抛出的异常通过其中的4个按钮添加、删除和上、下移动异常,前置条件(Preconditions)标签 前置条件(Preconditions) 指定操作运行之前应满足的条件,即操作的入口行为,通常是不等式 交互图(Interaction Diagram)说明操作语义的交互图,操作规范,语义(Semantics)标签 语义(Semantics) 指定操作的工作在文本框中用伪代码描述操作逻辑 交互图(Interaction Diagram) 说明了操作语义的交互图,操作规范,后置条件(Postconditions)标签后置条件(Postconditions) 指定操作运行之后要符合的条件,即操作的出口行为交互图(Interaction Diagram) 说明操作语义的交互图,操作规范,General标签关系名(Name) 一个动词或动词短语,描述关系的作用,是可选的关系名在关系线上斜体显示,关联规范,General标签角色(Role) 描述类在关系中的作用通常是名词或名词短语,显示在起这个作用的类旁边关联两端的对象,箭头指向的称为“Role A”,箭尾称为“Role B”,关联规范,关联规范,Detail标签链接元素(Link Element) 链接元素也称为关联类,可以放置与关联相关的属性 使用限制(Constraints) 限制是必须符合的条件。在Rose中可以设置关系的限制条件输入的限制条件在生成代码时成为说明语句,关联规范,Role A General和Role B General 标签Rose在生成代码时要给关联建立一个属性Export Control字段设置该属性的可见性,关联规范,Role A Detail和Role B Detail标签多重性(Multiplicity) 表示关联中一个类的几个实例与另一个类的一个实例相联系包容(Containment) 设置关联属性是按值还是按引用包容 Static类所有的实例共享的属性 Friend 表示客户类能访问提供者类的非公共属性和操作,关联规范,Key/Qualifier规范定义即限定词。在一对多的关联中,索引范围很广,使用限定符可以缩小关联的范围 按下面的步骤可以打开Key/Qualifier规范窗口:双击关联,打开关联规范窗口; 单击“Role A Detail”标签; 双击Key/Qualifier字段列表中的限定词。,Key/Qualifier规范定义限定词右单击关联规范窗口Key/Qualifier字段列表,从快捷菜单中选择Insert,直接在列表中输入限定词和类型 删除限定词 右单击关联规范窗口Key/Qualifier字段列表,从快捷菜单中选择Delete 修改限定词 单击关联规范窗口Key/Qualifier字段列表,直接在列表中编辑限定词和类型。,关联规范,关联的操作 增加关联 改变关系的导航在要移动的关系端单击右键,在快捷菜单中选择Navigable 删除关联,关联规范,公司文件:关于成立技术部的通知,为了提高各项目组的开发效率,保证按进度计划完成项目,提高本公司代码的可重用性和可扩展性。本公司预计在12月1日之前成立代码部。 该部门主要负责核心组件代码的编写,包括实现图书管理系统com.lms.dao包中的类和实现cess包中的类。为其他项目组提供访问数据库数据组件的支持。 考虑到该部门工作意义重大,因此该部门薪水比一般项目组高出5%,有意向的员工可在2009年12月1日之前发邮件给总经理报名。,完成实验5:系统静态结构建模系统类

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论