案例分析案例1:录像租赁系统⒈需求分析用例图图1.1用例图⒉分析购买货品出租货品归还货品报废货品录像租赁系统图1.2类图图1.3对象图租赁记录租赁条项出租目录项目录像带录像机*1..*0..*10012号租赁:租赁记录租赁号=0012租赁日期=2004/09/01押金=1000012号租赁的内容:租赁条项租赁号=0012项目序号=001名称=飘《飘》001:项目序号=001名称=飘状态=租出*1..*图1.4货品项目的状态图正常状态=租出超期通知客户在店内状态=未租超过租期租出租出归还购买项目报废项目图1.5出租货品的顺序图图1.6出租货品的协作图:租赁记录:租赁条项:录像带:项目添加租赁提取标题名称提取序号添加租赁条项添加所有条项计算总租金登记付款数据库记录店员:租赁记录:租赁条项:录像带:项目1:添加租赁6:计算租金5:添加所有条项4:添加租赁条项3:提取序号2:提取标题名称图1.7顾客在归还租用物品时的活动图核对租赁记录检查出租项目损坏情况严重损坏删除该项目修改项目状态结账标记租赁货品已归还是否案例2:图书馆系统⒈需求需求规格文档:·这是一个图书馆支持系统。·图书馆应用系统将图书和杂志借给借书者,这些借书者已经在系统中注册了,图书和杂志也已经在系统中注册过了。·图书管理员是图书馆的员工。他/她与客户(即借书者)打交道,并且是在图书馆软件系统提供的支持下开展工作的。·借书者可以预订图书馆当前还没有的图书或杂志,这样,当预订的图书或杂志归还或购进时,应用系统就通知预订人。当借书者借阅了他所预订的图书或杂志后,或者通过一个取消过程取消预订后,他的本次预订就被取消了。·图书馆应用系统能够容易地建立、修改和删除系统中的信息,包括书名、借书者、借阅信息和预订信息。·图书馆应用系统能够在所有流行的技术环境上运行,并且具有一个现代的图形用户界面(GUI)。·图书馆应用系统容易扩展新功能。⒉分析⑴需求分析图书馆系统的参与者:图书管理员和借书者。图书馆系统中的用例有:·Login(登录)·Search(搜索)·Browse(浏览)·LendItem(借书)·ReturnofItem(还书)·MakeReservation(预订)·RemoveReservation(取消预订)·AddTitle(增加标题)·RemoveorUpdateTitle(删除或更新标题)·AddItem(增加书目)·RemoveItem(删除书目)·AddBorrower(增加借书者)·RemoveorUpdateBorrower(删除或更新借书者)图2.1图书馆系统的一个用例图每一个用例都附带有文本文档。MakeReservationRemoveReservationLendItemReturnofItemAddTitleRemoveorUpdateTitleAddItemRemoveItemAddBorrowerRemoveorUpdateBorrowerLibrarianLibrarianBorrowerLoginSearchBrowseRegisteredUser其中,LendItem用例的描述如下:①如果借书者没有预订:a.确定标题b.确定该标题下可用的书目c.确定借书者d.图书馆将书借出e.登记一个新的借阅②如果借书者有预订:a.确定借书者b.确定标题c.确定该标题下可用的书目d.图书馆将相应的书目借出e.登记一个新的借阅f.取消预订⑵问题域分析图书馆系统的问题域类有:BorrowerInformation,Title,BookTitle,MagazineTitle,Item,Reservation和Loan。图2.2图书馆系统的问题域结构《BusinessObject》Item+findontitle+findonid()+findonreservation()create()destroy(0-id:Integer《BusinessObject》Title{abstract}-name:String-/numberofreservation+find()create()destroy()《BusinessObject》Loan-date:Date=currentdatecreate()destroy()《BusinessObject》BookTitle-lendingtime:Days=30create()destroy()《BusinessObject》MagazineTitle-lendingtime:Days=10create()destroy()《BusinessObject》BorrowerInformation-name:String-address:String+find()create()destroy()《BusinessObject》Reservation-date:Date=currentdate+find()create()destroy()maybeloanedinarefersto0..10..*copyofmaybereservedinareferstohashas0..*has0..*0..*{ordered}具有状态图的类:Item类和Title类。图2.3Title类的状态图NotReservedentry:Numberofreservations:=0ReservedTitlereservation/Numberofreservations++Reservationremoved[Numberofreservations=1]/Numberofreservations--Titlereservation/Numberofreservations++Reservationremoved[Numberofreservations1]/Numberofreservations--图2.4用例LendItem(借书者没有预订的情况)的顺序图:LendingWindow:Title:BorrowerInformation:Loan:Item:Librarian1:findtitle()2:find(String)3:finditem()4:findontitle(Title)5:identifyborrower()6:find(String)7:create(Borrowerinformation,Item)⒊设计⑴体系结构设计包(子系统)的设计:·用户界面包·业务对象包·数据库包·实用工具包图2.5应用系统程序包以及包之间的依赖关系用户界面包业务对象包数据库包实用工具包⑵详细设计①数据库包永久存储处理的实现由Persistent类完成。Persistent类是抽象类,继承于它的子类需要实现操作write()和read()。图2.6Persistent类Persistent{abstract}-objid:int-$iter:RandomAccessFile+Persistent()+getObjId():ObjId+getObject():Object+store()+delete()+update()+iterate():Object+write(){abstract}+read(){abstract}②业务对象包在设计阶段,一些来自分析模型的操作被细化。图2.7设计模型中的业务对象《BusinessObject》Loan-item:ObjId-borrower:ObjId+Loan()+getBorrower():Borrower+getTitleName():String+getItem():Item+getItemId():int+write()+read()《BusinessObject》Reservationtitle:ObjIdborrower:ObjIdReservation()getTitle():TitlegetBorrower():Borrowerwrite()read()图2.8Title类的设计状态图removeReservation(R)[reservations.size==1]/reservations.remove(R)addReservation(R)/reservations.add(R)removeReservation(R)[reservations.size()1]/reservations.remove(R)addReservation(R)/reservations.add(R)NotReservedVectorreservationentry:reservations.clear()ReservedVectorreservationsreservations.size()==0reservations.size()0③用户界面包图2.9AddTitle用例的一个顺序图:TitleFrame:Title:Item:Librarian1:TitleFrame()2:addButton_Clicked()3:findOnName(String)4:findOnISBN(String)5:Title(String,String,String,int)6:Item(ObjId,int)7:store()8:addItem(ObjId)9:store()Informationaboutthetitleisenteredintotheeditfieldsinthewindow.CheckiftitleorISBNalreadyexists.Createtitleanditem(s);storethem.图2.10AddTitle用例的一个协作图⒋实现图2.11图书馆系统的一个实施图:Librarian:TitleFrame:Title{new}:Item{new}1:TitleFrame()2:addButton_Clicked()2.1:findOnName(String)2.2:findOnISBN(String)2.3:Title(String,String,String,int)2.6:addItem(ObjId)2.7:store()2.4:Item(ObjId,int)2.5:store()Reservation.javaBorrowerInformation.javaItem.javaLoan.javaTitle.java⒌测试和实施图2.12图书馆系统的一个实施图ComputerwithJavasupportPrinter案例3BBS论坛系统⒈BBS论坛系统的需求分析⑴系统的功能需求①会员注册②发表文章③文章查询④会员管理⑤论坛分类管理⑥帖子管理图3.1系统结构BBS论坛系统前台基本业务模块后台管理模块⑵前台基本业务模块①注册会员②登录系统③浏览帖子④会员发表帖子⑤回复帖子图3.2前台基本业务模块⑶后台管理模块①板块管理②帖子管理③会员管理前台基本业务模块会员发表帖子注册会员登录系统浏览帖子回复帖子图3.3后台管理模块⒉系统的UML建模⑴系统的用例图图3.4系统管理的用例图后台管理模块版块管理帖子管理会员管理帖子管理会员管理论坛分类管理精华帖置顶帖子版主论坛管理员图3.5论坛管理员管理会员和论坛分类的用例图图3.6系统用户的用例图帖子回复浏览帖子发表帖子未注册用户注册用户添加论坛分类种类会员管理论坛分类管理更改会员信息删除论坛种类论坛管理员修改论坛主题删除会员添加会员《extend》《extend》《extend》《extend》《extend》《extend》⑵系统的顺序图①会员发帖回帖的顺序图图3.7会员发帖回帖的顺序图②论坛管理员管理会员的顺序图登录系统论坛主页发帖回帖模块:注册用户输入用户名和密码显示论坛分类,查看论坛详细文章发表新文章,回复新帖继续浏览文章图3.8论坛管理员管理会员的顺序图③论坛管理员管理会员的顺序图数据库模块会员管理模块处理增删改除操作:论坛管理员输入账号和密码显示会员的操作信息数据库处理,并更新会员信息提示操作成功信