问答题

阅读下列说明和图,回答问题。
[说明]
某银行计划开发一个自动存提款机模拟系统(ATM System)。系统通过读卡器(CardReader)读取ATM卡;系统与客户(Customer)的交互由客户控制台(CustomerConsole)实现;银行操作员(Operator)可控制系统的启动(System Startup)和停止(System Shutdown);系统通过网络和银行系统(Bank)实现通信。
当读卡器判断用户已将ATM卡插入后,创建会话(Session)。会话开始后,读卡器进行读卡,并要求客户输入个人验证码(PIN)。系统将卡号和个人验证码信息送到银行系统进行验证。验证通过后,客户可从菜单选择如下事务(Transaction)。
(1)从ATM卡账户取款(Withdraw)。
(2)向ATM卡账户存款(Deposit)。
(3)进行转账(Transfer)。
(4)查询(Inquire)ATM卡账户信息。
一次会话可以包含多个事务,每个事务处理也会将卡号和个人验证码信息送到银行系统进行验证。若个人验证码错误,则转个人验证码错误处理(Invalid PIN Process)。每个事务完成后,客户可选择继续上述事务或退卡。选择退卡时,系统弹出ATM卡,会话结束。
系统采用面向对象方法开发,使用UML进行建模。系统的顶层用例图如图10.18所示,一次会话的序列图(不考虑验证)如图10.19所示。消息名称参见表10.6。



[问题1]
根据说明中的描述,给出图18.18中A1和A2所对应的参与者,U1~U3所对应的用例,以及该图中空(1)所对应的关系。(U1~U3的可选用例包括:Session、Transaction、Insert Card、Invalid PIN Process和OTransfer)
[问题2]
根据说明中的描述,使用表10.6中的英文名称,给出图10.19中6~9对应的消息。
[问题3]
解释图10.18中用例U3和用例Withdraw、Deposit等四个用例之间的关系及其内涵。

【参考答案】

[问题A] AA:读卡器 AB:用户
UA: InsertCard UB: Invalid PIN Proce......

(↓↓↓ 点击下方‘点击查看答案’看完整答案、解析 ↓↓↓)
热门 试题

问答题
阅读下列说明和Java代码,在 (n) 处填入适当的字句。 [说明] 现欲构造一文件 目录树,采用组合(Composite)设计模式来设计,得到的类图如图10.17所示。 [Java代码] import Java.util.ArrayList; import java.util.List; (1) class AbstractFile protected String name; public void printName () System.out.println (name); public abstract boolean addChild (AbstractFile file) ; public abstract boolean removeChild(AbstractFile file) ; public abstract List<AbstractFile> getChildren () ; class File extends AbstractFile public File (String name) this.name=name; public boolean addChild(AbstractFile file) return false; public boolean removeChild(AbstractFile file) return false; public List<AbstractFile> getChildren() return (2) ; class Folder extends AbstractFile private List <AbstractFile> childList; public Folder(String name) this.name=name; this. childList=new ArrayList<AbstractFile> () ; public boolean addChild (AbstractFile file ) return childList. add (file ) ; public boolean removeChild(AbstractFile file) return childLis t. remove (file); public (3) <AbstractFile> getChildren() return (4) ; public class Client public static void main (String [] args) 构造-个树型的文件 目录结构 AbstractFile rootFolder=new Folder( c: ) ; AbstractFile compositeFolder-new Folder ( composite ) ; AbstractFile windowsFolder=new Folder ( windows ) ; AbstractFile file=new File ( TestComposite. java ) ; rootFolder. addChild (compositeFolder ); rootFolder. addChild (windowsFolder) ; composit eFolder. addChild (file); 打印目录文件树 printTree (rootFolder); private static void printTree(AbslractFile ifile) ifile .printName () ; List <AbslractFile> children=ifile.getChildren; if (children==null) return; for (AbstractFile ifile.children) (5) ; 该程序运行后输出结果为: c: composite TestComposite. java Windows
问答题
阅读下列说明和C++代码,在 (n) 处填入适当的字句。 [说明] 现欲构造一文件 目录树,采用组合(Composite)设计模式来设计,得到的类图如10.16所示。 #include <list> #include <iostream> #include <string> using namespace std; class AbstractFile protected: string name; 文件或目录名称 public: void printName()cout<<name; 打印文件或目录名称 virtual void addChild (AbstractFile *file) =0; 给一个目录增加子目录 或文件 virtual void removeChild(AbstractFile *file) =0; 删除一个目录的子目 录或文件 virtual list<AbstractFile*> *getChildren() =0; 获得一个目录的子目录 或文件 ; class file:public AbstractFile public: File (string name) (1) =name; void addChild (AbstractFile *file)return; void removeChild (AbstractFile *file)return; (2) getChildren()(return (3) ; ; class Folder :public AbstractFile private: list <AbstractFile*> childList: 存储子目录或文件 public: Folder (string name) (4) =name; void addChild(AbstractFile*file) childList .push_back(file); void rernoveChild (AbstractFile*file) childList. remove( file); list<AbstractFile*>*getChildren()(return (5) ; ; void main() 构造一个树型的文件 目录结构 AbstractFile *rootFolder=new Folder( c: ); AbstractFile*compositeFolder=new Folder( composite ); AbstractFile *windowsFolder=new Folder( windows ); AbstractFile *file=new File( TestCompositejava ); rootFolder->addChild( compositeFolder); rootFolder->addChild(windowsFolder); composit eFolder->addChild(file);