《软件设计师考题分析精编UML.ppt》由会员分享,可在线阅读,更多相关《软件设计师考题分析精编UML.ppt(46页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、考软件工程师证须知UML 知识Classcontents Stereotype原型 attribute属性Person-name:String-age:int+Person()+Person(name:String,age:int)+getName():String+getAge():int+setName(name:String):void+setAge(age:int):void+toString():StringStudent-StudentNo:int-ban:String-score:int+Student()+Student(name:String,age:int,no:int,b
2、an:String,score:int)+toString():StringGeneralization/inhabitant 泛化(Generalization)泛化(Generalization)父与子、动物与人、植物与树、系统使用者与B2C会员和B2E会员的关系类A要完成某个功能必须引用类B,则A与B存在依赖关系,依赖关系是弱的关联关系。本来人与电脑没有关系的,但由于偶然的机会,人需要用电脑写程序,这时候人就依赖于电脑。依赖关系人依赖于电脑完成一些程序的动作。当对象A被加入到对象B中,成为对象B的组成部分时,对象B和对象A之间为聚合关系。场景:商品和他的规格、样式就是聚合关系。聚合关系商
3、品Product样式Style 规格Spec聚合是关联关系的一种,是较强的关联关系,强调的是整体与部分之间的关系。对象A包含对象B,对象B离开对象A没有实际意义。人包含手,手离开人的躯体就失去了它应有的作用。场景:Window窗体由滑动条slider、头部Header和工作区Panel组合而成。组合关系Window窗体滑动条Slider 头眉Header 工作区Panel组合关系是一种更强的关联关系。类与类之间的单向关联图类与类之间的双向关联图B1-B2:表示B1 认识B2,B1 知道B2 的存在,B1 可以调用B2中的方法和属性;同样B2 也知道B1 的存在,B2 也可以调用B1 的方法和属
4、性。订单和客户,订单属于客户,客户拥有一些特定的订单类与类之间自身关联图自关联,比如,Employee&ManagerClassNodePrivateintdata;privateNodenextNode;publicNode(intdata)this.data=data;publicvoidsetData(intdata)this.data=data;publicintgetData()returndata;publicvoidsetNext(Nodenext)nextNode=next;publicNodegetNext()returnnextNode;自引用selfreference类N
5、ode-data:int-nextNode:Node+Node(data:int)+setData(data:int):void+getData():int+setNext(next:Node):void+getNext():Node自引用selfreference类Artist艺术家Band乐队Musician歌手Song歌曲Track音轨Album唱片编写演奏0.*0.*110.*2.*0.11.*0.*10.10.12007下半年软件设计师下午试题,283页Cardinality/multiplicity类名 说明CentralComputer 停车场信息系统PaymentMachine
6、 付款机器CarPark 停车场,保存车位信息Barrier 自动护栏EntryBarrier 入口的护栏ExitBarrier 出口的护栏333页用例名 说明Car entry 汽车进入停车场Car exit 汽车离开停车场Report Statistics纪录停车场的相关信息Car entry when full没有车位时,汽车请求进入停车场CarentryCarexitCarentrywhenfullReportStatistics用例之间的延伸关系用于对被用户看作是可选系统行为的一部分建模。通过这种方式,可以把可选行为从必需的行为中分离出来。停车场信息系统驾驶员状态名 说明Idle 空
7、闲状态,汽车可以进入停车场Disable 没有车位Await Entry 等待汽车进入Await Ticket Take 等待打印停车卡Await Enable 等待停车场内有空闲车位IdleAwaitTicketTakeAwaitEntry AwaitEnable名称 说明login 登陆系统submit paper 提交稿件close reviewing process 关闭审稿过程set preferences 设定兴趣领域list accepted/rejected papers罗列录用的和拒绝的稿件register 注册browse review results 浏览稿件审阅结果as
8、sign paper to reviewer分配稿件给审稿人enter review 审阅稿件给出意见browse submitted papers 浏览提交的稿件用例名称图2008下半年软件设计师下午试题382页OnlineReviewingSystemUser用户Author作者Reviewer审稿人PCChair委员会主席list accepted/rejected papersbrowse submitted papersAssign paper to reviewerincludeextend设定兴趣领域审阅稿件给出意见名称 说明Action3 select paper locati
9、on 选择稿件位置Action2 select subject group 选择主题类型Action1 enter title and abstract 输入标题和摘要Action4 upload paper 上传稿件 send notification 发送通知其过程为,先输入标题和摘要、选择稿件所属主题类型、选择稿件所在位置(存储位置)。上述几步若未完成,则重复;若完成,则上传稿件至数据库中,系统发送通知。包含关系扩展关系可以通过判断是否可以从一个用例的执行中,在需要时转向执行另一个用例,执行完返回继续,即存在extend关系。可选择的!必须的!用例之间的关系-包含示例存 款打印收据密码验
10、证includeinclude必须的!用例之间的关系 扩展示例ATM密码验证签名验证extend 扩展用例 基用例取款FirstBank银行的ATM系统存款查询余额柜员机处理交易 打印收据includeincludeincludeX1X2X3UC5UC4UC3UC2UC1UC3 是抽象的X1 可通过 用例UC4 或UC1 与系统进行交互用例UC2是用例UC4的可选部分用例UC5是用例UC4的必须部分取款extend现金透支将用例“取款”扩展为用例“现金透支”基本用例(对扩展关系)扩展用例(对扩展关系)基用例包含用例基本用例依赖于包含用例虚线箭头表示,由调用用例指向被调用用例5/28/2023R
11、eschedulePerformancecancelPerformanceRescheduleEventextensionpointsIfeventmovedtonewdaterangeIfenddatesetearlier 扩展关系扩展用例依赖于基本用例扩展用例基用例(执行用例)扩展用例的执行是有条件的 扩展用例(对扩展关系)基本用例(对扩展关系)基本用例(对包含关系)包含用例(对包含关系)网上购物OperatorSystem StartupSystem ShutdowntransactionWithdraw DepositTransferInquireInvalid PIN process
12、SessioncustomerBankATMSystem435页PIN=personal identification number 个人验证码错误Session一段时间 一次会话的序列图readPIN()PINCreat(atm,this,card,pin)performTransaction()某企业为了方便员工用餐,为餐厅开发了一个订餐系统(COS:CafeteriaOrderingSystem),企业员工可以通过企业内联网使用该系统。企业的任何员工都可以查看菜单和今日特价。系统的顾客是注册到系统的员工,可以订餐(如果未登陆,需先登陆)注册工资支付、预约规律的订餐,在特殊情况下,可以覆盖
13、预订。餐厅员工是特殊顾客,可以进行备餐、生成付费请求和请求送餐,其中对于注册工资支付的顾客生成付费请求并发送给工资系统。菜单管理员是餐厅特点员工,可以管理菜单。送餐员可以打印送餐说明,记录送餐信息(如送餐时间)以及记录收费(对于没有注册工资支付的顾客,由送餐员收取现金后记录)。某企业为了方便员工用餐,为餐厅开发了一个订餐系统(COS:CafeteriaOrderingSystem),企业员工可以通过企业内联网使用该系统。企业的任何员工都可以查看菜单和今日特价。系统的顾客是注册到系统的员工,可以订餐(如果未登陆,需先登陆)注册工资支付、预约规律的订餐,在特殊情况下,可以覆盖预订。餐厅员工是特殊顾
14、客,可以进行备餐、生成付费请求和请求送餐,其中对于注册工资支付的顾客生成付费请求并发送给工资系统。菜单管理员是餐厅特点员工,可以管理菜单。送餐员可以打印送餐说明,记录送餐信息(如送餐时间)以及记录收费(对于没有注册工资支付的顾客,由送餐员收取现金后记录)。某企业为了方便员工用餐,为餐厅开发了一个订餐系统(COS:CafeteriaOrderingSystem),企业员工可以通过企业内联网使用该系统。企业的任何员工都可以查看菜单和今日特价。系统的顾客是注册到系统的员工,可以订餐(如果未登陆,需先登陆)注册工资支付、预约规律的订餐,在特殊情况下,可以覆盖预订。餐厅员工是特殊顾客,可以进行备餐、生成
15、付费请求和请求送餐,其中对于注册工资支付的顾客生成付费请求并发送给工资系统。菜单管理员是餐厅特点员工,可以管理菜单。送餐员可以打印送餐说明,记录送餐信息(如送餐时间)以及记录收费(对于没有注册工资支付的顾客,由送餐员收取现金后记录)。其中需将以上四个用例填到正确的位置某企业为了方便员工用餐,为餐厅开发了一个订餐系统(COS:CafeteriaOrderingSystem),企业员工可以通过企业内联网使用该系统。企业的任何员工都可以查看菜单和今日特价。系统的顾客是注册到系统的员工,可以订餐(如果未登陆,需先登陆)注册工资支付、预约规律的订餐,在特殊情况下,可以覆盖预订。餐厅员工是特殊顾客,可以进
16、行备餐、生成付费请求和请求送餐,其中对于注册工资支付的顾客生成付费请求并发送给工资系统。菜单管理员是餐厅特点员工,可以管理菜单。送餐员可以打印送餐说明,记录送餐信息(如送餐时间)以及记录收费(对于没有注册工资支付的顾客,由送餐员收取现金后记录)。CafeteriaOrderingSystem工资系统菜单管理员参与者之间的关系,表示子类的对象,也是一种父类的对象,即泛化关系。父类型通常是一个抽象泛化的参与者,可以完成子类型可以完成的共同行为。状态图:一次订餐活动登录判断符号顾客订餐过程如下:顾客请求查看菜单;系统显示菜单和今日特价;顾客选菜;系统显示订单和价格;顾客确认订单;系统显示可送餐时间;
17、顾客指定送餐时间、地点和支付方式;系统确认接受订单,然后发出E-mail给顾客以确认订餐,同时发送相关订餐信息通知给餐厅员工。同步条用例名 参与者查看当日特价 员工注册工资支付 顾客和工资系统生成付费请求 餐厅员工和工资系统管理菜单 菜单管理员四个缺少的用例及其所对应的参与者。查看当日特价工资系统注册工资支付菜单管理员生成付费请求管理菜单观察者 Observer 对象行为 Behavioral 型模式 定义对象间的一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知,并被自动更新。bidder出价人,投标人bid 出价,投标,叫牌auction 拍卖warrantyn.保
18、单,根据,保修期 在观察者模式中,一个目标物件管理所有相依于它的观察者物件,并且在它本身的状态改变时主动发出通知。各观察者通过自己的update()方法,对状态的改变,作出反映。左图为观察者设计模式。在此模式中,一个Subject对象可对应多个Observer对象class Subject private Observer observers=new Observer9;private int totalObs=0;private int state;public void attach(Observer o)observerstotalObs+=o;public int getState()
19、return state;public void setState(int in)state=in;notifyObservers();private void notifyObservers()for(int i=0;i totalObs;i+)observersi.update();/5.对观察者广播事件/3.与基类耦合/1.“独立”的主类abstractclassObserverprotectedSubjectsubj;publicabstractvoidupdate();classHexObserverextendsObserverpublicHexObserver(Subjects)
20、subj=s;subj.attach(this);publicvoidupdate()System.out.print(+Integer.toHexString(subj.getState();/6.观察者“推出”信息/4.观察者注册自己/2.“依赖”等级的根classOctObserverextendsObserverpublicOctObserver(Subjects)subj=s;subj.attach(this);publicvoidupdate()System.out.print(+Integer.toOctalString(subj.getState();classBinObser
21、verextendsObserverpublicBinObserver(Subjects)subj=s;subj.attach(this);publicvoidupdate()System.out.print(+Integer.toBinaryString(subj.getState();/6.观察者“推出”信息/6.观察者“推出”信息/4.观察者注册自己/4.观察者注册自己publicclassObserverDemopublicstaticvoidmain(Stringargs)intn;Subjectsub=newSubject();newHexObserver(sub);newOctO
22、bserver(sub);newBinObserver(sub);/7.用户配置好观察者的数目和类型while(true)Strings=JOptionPane.showInputDialog(TypeinanintegernWe+willconvertitintonHexadecimal(base16),+Octal(base8),andBinary);if(s=null)System.exit(0);n=Integer.parseInt(s);System.out.print(nTheinputintegeris+n+nTheconvertedresultiswrittenasfollows+nHextOcttBinn);sub.setState(n);