1、手机端页面文档仅支持阅读 15 页,超过 15 页的文档需使用电脑才能全文阅读。
2、下载的内容跟在线预览是一致的,下载后除PDF外均可任意编辑、修改。
3、所有文档均不包含其他附件,文中所提的附件、附录,在线看不到的下载也不会有。
般和特殊是相对而言的,在车和机动车之间,车是般类基类超类父类,机动车是特殊类子类在机动车和汽车之间机动车是般类,汽车是特殊类。
继承具有传递性,如汽车具有车的全部属性和服务。
消息向个对象发出的服务请求称作消息。
对象提供的服务规定的消息格式称作消息协议。
消息包括被请求的对象标识被请求的服务标识输入信息和应答信息。
如用电视遥控器发送个选台消息,请求电视机执行换台服务。
结构与连接个系统般由很多对象组成,对象之间并不是互相孤立的,而是存在着各种各样的关系。
包括部分整体般特殊实例连接消息连接。
部分整体我们不用关心电视机的内部工作原理,电视机提供了选台调节音量等功能让我们使用。
面向对象系统设计循序渐渐对象之间存在的部分与整体的结构关系。
如是机的个部分,机由内存硬盘显示器键盘等组成。
内存硬盘显示器键盘机部分整体关系中有两种方式组合和聚合。
上面机就是个组合的例子,个部分对象只能属于个唯的整体对象机。
组合关系中部分和整体的关系很紧密。
聚合关系中则比较松散,个部分对象可以属于几个整体对象。
般特殊对象之间存在着般和特殊的结构关系,也就是说它们存在继承关系。
很多时候也称作泛化和特化关系。
实例连接实例连接表现了对象之间的静态联系,它通过对象的属性来表现出对象之间的依赖关系。
对象之间的实例连接称作链接,对象类之间的实例连接称作关联消息连接消息连接表现了对象之间的动态联系,它表现了这样种联系个对象发送消息请求另个对象的服务,接收消息的对象响应消息,执行相应的服务。
多态性多态性是指般类中定义的属性和服务,在特殊类中不改变其名字,但通过各自不同的实现后,可以具有不同的数据类型或具有不同的行为。
如个绘图系统中类的多态性当向图形对象发送消息进行绘图服务请求后,图形对象会自动判断自己的面向对象系统设计循序渐渐所属类然后执行相应的绘图服务。
概述既然面向对象是种思维方式,当然就需要用种语言来表达来交流。
就是表达面向对象的标准化语言。
只是语言,不是方法。
任何语言都有语法和语义两个方面。
采用模型元模型模型和用户对象四个层次来定义其体系结构。
是基于面向对象的可视化建模语言,支持面向对象的各种概念,提供了丰富的概念元素和图形表示元素,就像英语语言中提供了丰富的单词。
通过用元素按照规定的语法建立系统模型,可以按照不同的抽象层次建立如分析模型和设计模型。
的公共机制包括说明装饰通用划分扩展机制。
下章我们将进步讨论语言。
面向对象系统设计循序渐渐第二章语言前面介绍了面向对象方法的概念。
下面介绍表达面向对象方法的有力工具语言。
语言的体系结构这四个层次中,除模型外,每层都是上层的实例。
模型是定义描述元模型的语言,它是任何模型的基础。
元模型是描述模型的语言。
在语言的元模型中,定义了面向对象范畴的概念,如对象类关联链接等。
模型是对现实世界的抽象,用来描述信息领域,如银行系统中的储户帐户等它们都是元模型中对象类的实例。
用户对象是个特定的信息领域对象,如张三张三是储户对象类的个实例。
符号与图形在元模型中定义了很多模型元素,如对象类接口组件等,为了模型的可视化,为每个模型元素规定的特定的图形符号来表示。
活动者模型元模型模型用户对象面向对象系统设计循序渐渐活动者名活动者是作用于系统的个角色或者说是个外部用户。
活动者可以是个人,也可以是使用本系统的外部系统。
用例用例名用例就是对活动者使用系统的项功能的交互过程的陈述。
如用户进行登录的用例图可以表示为用户登录对象类对象类类是具有相同属性和相同操作的对象的集合。
属性操作如用户类可视性属性名多重性类型初始值可视性操作名参数列表返回列表面向对象系统设计循序渐渐接口接口是种抽象类,它对外提供组操作,但自己没有属性和方法操作的实现,它是在没有给出对象实现的情况下对对象行为的描述。
接口使用对象类的图形表示方法,接口名前面加构造型。
组件组件名组件体现了系统中逻辑模型元素的物理实现。
包包名包也是种模型元素,可以把语义相近的模型元素组织在个包里,增加对模型元素的可维护性。
节点计时,有两个重要的原则可以遵循分层。
将系统分层是简化系统的好方法,而且已经得到了很好的证实,如七层模型网络协议,数据库管理系统的外模式模式内模式等。
分层的思路是将系统按功能职责进行划分,将同类职责的功能抽象为层。
在信息系统中软件架构通常采用典型的三层结构表示层用户界面。
业务层业务处理流程。
数据层持久化存储。
与传统的两层结构相比,它最大的特征是将业务层了出来,从而提高了业务层的可复用性。
在两层结构中,用户界面和业务处理流程放在起,因此无法直接复用业务处理的相关功能,也无法将业务处理功能进行灵活的部署。
在三层结构中,表示层只处理用户界面相关的功能,业务层专心处理业务流程,可以对业务层进行灵活的部署,开发时也便于业务处理的开发和用户界面的开发同时进行。
当然也可以分为更多的层,关键是尽量提高层内各功能的内聚,降低各层之间的耦合。
二各层之间通讯。
中要求高层只能调用它的下层提供的接口,我们设计接口时也尽量遵守这样的约束,例如典型的三层结构的访问关系为面向对象系统设计循序渐渐数据层在业务层中是可见的,业务层在表示层中是可见的,反之则不可见。
为什么在业务层中不能直接访问表示层呢因为业务层要相对,它不能依赖于任何表示层,以至于个业务层可以对应多个表示层。
业务层可以间接与表示层通讯,这种通讯方式根据实际需要来确定。
信息系统的架构设计下面我们将根据架构设计原则和信息系统原理来建立个信息系统的架构设计模型。
将信息系统中比较关心的对象分层,可分为三层用户界面层业务层数据访问层,再把各层中的些公共部分提出来权限管理异常处理,这样得到包图如下权限管理处理数据访问业务处理用户界面用户界面包用户界面输入输出数据校验发送业务处理请求用户界面层的职责是与用户的交互,接收用户的各种输入以及输出各种提示信息或处理结果。
对于输入的数据进行数据校验,过滤非法数据。
向业务处理对象发送处理请求。
包含类面向对象系统设计循序渐渐业务处理包业务处理实现各种业务逻辑或处理算法权限管理业务处理层的职责是实现各种业务处理逻辑或处理算法。
验证请求者的权限。
向数据访问对象发送数据持久化操作的请求。
向用户界面层返回处理结果。
包含类这里使用了代理模式,用户界面对象只能通过业务代理对象来向业务对象发送请求。
业务代理对象首先判断请求者的权限,然后转发合法请求者的请求。
数据访问包数据访问实现数据的持久化操作实现事务处理数据访问层的职责是实现数据的持久化操作本书假设数据的存储由关系数据库来完成。
实现事务处理。
面向对象系统设计循序渐渐包含类对于每个业务处理中需要持久化操作的对象都可以对应为个数据库访问对象,在很多业务处理中需要请求多个数据库访问对象来进行数据的读写操作,而这些操作又必须在同个事务中,这时需要用同个数据库连接对象来进行统的事务处理。
这里的数据库连接类的创建用到了单件模式,保证个类仅有个实例,个客户在同时刻只能用个数据库连接对象。
权限管理包权限管理验证请求者的请求权限提供请求者的权限列表权限管理的主要职责是验证请求者的请求权限。
提供请求者的权限列表。
包含类业务处理对象通过权限管理对象来验证权限。
面向对象系统设计循序渐渐异常处理包异常处理汇报运行时的详细异常信息记录异常处理日志异常处理的职责汇报运行时的详细异常信息。
记录异常处理日志。
包含类因为异常处理类型比较多,如系统异常数据库异常业务逻辑异常等,针对不同类型的异常处理方式也容易变,如显示,记录文本日志,记录数据库日志等,所以这里使用了桥接模式来实现,使各部分的变化比较。
面向对象系统设计循序渐渐架构的类图将包图展开,得到类图,它是架构的静态结构图,表达了各个类之间的静态联系架构的动态图它是对象的动态结构图,表达了类对象之间的动态协助关系。
面向对象系统设计循序渐渐用户界面类业务代理类业务类数据库访问类权限管理类异常处理类请求业务处理验证权限,验证结果权限不符权限符合,请求业务处理业务处理读取写入异常处理异常处理处理结果信息处理结果信息流程用户界面对象在接收了用户的输入请求后,向业务代理对象发送处理请求。
业务代理对象接收到请求后,向权限管理对象发送验证权限请求。
权限管理对象验证权限后将验证结果返回给业务代理对象。
业务代理对象根据验证结果进行以下处理对于不符合权限的请求则返回提示信息对于符合权限的请求,则将请求转发给业务对象。
业务对象进行业务处理。
对于业务处理中的数据持久化操作,通过访问数据库访问对象进行操作,期间的任何异常都交给异常处理对象处理。
最后返回处理结果信息给业务代理对象。
业务代理对象将处理结果信息返回给用户界面。
至此,我们已经学习了架构设计原则,并建立了个信息系统的架构设计模型。
下面我们将学习在系统设计中更为细化的类设计。
面向对象系统设计循序渐渐第四章类设计类设计的目的是在架构设计的基础上,将分析模型转换成程序设计语言可以实现的对象类和对象的静态动态关系。
本章将通过建立通用日记帐财务系统来介绍类设计的过程和设计思路。
类设计指南作为类设计的第步是查找类,可以从分析模型中查找。
优化类,对具有共同特征的类进行抽象,得出个超类或接口。
建立类之间的静态联系。
建立类之间的动态联系。
尽量符合设计原则请参考设计原则书尽量使用设计模式请参考设计模式书。
通用日记帐财务系统系统分析模型把系统分析模型放到类设计章节来介绍本来是不合理的,因为类设计中不应该包含系统分析模型。
我之所以要这么做是因为后面章节的需要,为了使例子具有连续性而不希望让大家感觉到类图从天而降。
注意,现在的任务是要开发套通用日记帐财务系统。
面向对象系统设计循序渐渐系统需要完成什么功能报表财务管理人员往来户管理会计数据备份数据恢复会计科目管理系统管理帐套管理系统管理员汇总原始凭证管理日记帐管理总分类帐分类帐管理明细分类帐用例图中有活动者或角色会计财务管理人员系统管理员。
用例帐套管理会计科目管理系统管理汇总原始凭证管理日记帐管理分类帐管理往来户管理报表。
面向对象系统设计循序渐渐系统管理员操作流程系统管理员会计科目管理系统管理帐套管理创建维护创建维护数据备份数据恢复在系统开始时,系统管理员需要创建个新的帐套,然后设置好本帐套的会计科目系统管理员要负责日常的数据备份工作,当系统运行出现异常需要数据恢复时,要负责数据恢复工作。
面向对象系统设计循序渐渐会计操作流程会计往来户管理汇总原始凭证管理日记帐管理分类帐管理创建汇总原始凭证登日记帐查询日记帐创建往来户维护往来户维护汇总原始凭证登分类帐登总分类帐登明细分类帐查询分类帐会计负责创建和维护往来户会计根据原始凭证创建汇总原始凭证系统根据汇总原始凭证登日记帐系统根据日记帐登总分类帐和明细分类帐会计可以查询日记帐和分类帐。
面向对象系统设计循序渐渐财务管理人员操作流程财务管理人员报表管理打印报表财务管理人员月终打印会计报表。
通用日记帐财务系统类图查找类从上面的系统分析模型可以找
