欢迎来到天天文库
浏览记录
ID:1353423
大小:7.32 MB
页数:87页
时间:2017-11-10
《面向对象分析与设计开发文档》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、面向对象分析与设计开发文档面向对象基础1.面向对象编程的三大原则封装、继承、多态2.对象世界协作模式----客户-提供者消息协作模式一、现实中的消息协作模式:面向对象程序的运行,是对现实世界中对象与对象的协作方式的模拟。在现实世界中,消息的发送方与消息的接收方,针对消息而言是地位平等的双方。如下场景1:A希望获知B的姓名在这个场景中,针对于A希望获知B的姓名而互发的消息,可能会出现上述三种现象。1.A问,B答2.A问,B不答(问而不答型)3.A不问,B主动告知。(不问自答型)再如下述场景2:A希望B去做饭。87同样存在场景1中存在的现象。
2、1.A请求B做事情,B做事情2.A请求B做事情,B不做(叫做不做型)3.A不请求B做事情,B主动做事情。(不请自做型)在两个场景中的现象2和现象3都体现了A、B双方作为现实世界中的人的行为的自主性。这些现象是现实中协作的普遍现象,A、B对象的协作,其中B的自主动作掺杂了B对A的心理琢磨。B认为A可能会问其什么,或认为A可能会让其做某事,但B这种基于猜测的行为可能使结果适得其反,使本不应该发生的麻烦事情发生,从而使事情处理流程变得更糟。开发计算机软件系统的目的,是为了使事情的处理流程自动化,如果处理流程本身是个紊乱的话,那么计算机软件系统只
3、能加速这种紊乱,因此,在面向对象程序模拟现实世界的消息协作时,采用消息发送方与消息接收方地位不平等的客户-提供者模式来完成协作。二、客户-提供者消息协作模式前提:B拥有A所问问题的知识;B具有A所请求事情的处理能力。但是A不问时,B不主动回答;A不请求B做事情,B不主动做事情。也即,只有当A作为客户,请求B回答问题时,B作为提供者,提供回答问题的服务;只有当A作为客户,请求B做事情时,B作为提供者,提供解决这件事情的服务。B不允许主观去回答问题或主观地做事情。这种屏蔽了B的主观能动性的协作方式称为客户-提供者模式。这样的处理方式,解决了A
4、,B消息协作时自主处理事务的方式,从而使消息协作变得可控。三、客户-提供者消息协作中的约束(1)协作的前提服务提供者B拥有客户A所问问题的知识;B具有A所请求事情的处理能力。(2)对客户的约束客户端对象,作为消息的发送者,作为服务的请求者,不应该发送无理的请求,无理的请求指:服务提供者不具备的行为能力。87客户端对象A只能向服务端对象B发出两种类型的消息:消息应该是一个问题,或者一个命令,不能两者都是。(3)对服务提供者的约束消息对应行为的执行者,即,服务提供者。在面向对象程序中,服务提供者应该是谦恭的,当接收消息时,必须提供相应的服务,
5、四、实例:1.顾客到面包店买面包的场景方式1:现实中的场景反映:可见,由于面包师的自动行为使得事情变得很糟。现在,通过客户-提供者模式来实现这个场景:方式2:可见,客户-提供者模式有效地解决了因对象自主行为而导致的业务流程的紊乱过程,使得业务处理过程可控,因此,在面向对象程序模拟现实对象消息协作机制中,客户-提供者模式给我们提供了很好的消息协作模式,这种方式屏蔽了现实世界对象的自主行为,使得面向对象系统秩序稳定,和谐可控,构建了一个完美的软件系统。871.类与类之间的关系及代码实现类与类之间的关系及代码表现 http://wenku.ba
6、idu.com/view/53fdfa75a417866fb84a8ed4.html 解析UML中类与类之间的五种关系类与类之间的关系,其实质就是类的对象与类的对象之间的关系。对象与对象之间的关系就是提供服务与接受服务的关系。根据对象与对象之间的服务关系存在时间的长短,可以确定类与类之间的关系。通常把类与类之间的关系分为如下五种关系,分别是:泛化关系、依赖关系、关联关系、聚合关系和组合关系。本讲将通过男人、女人、丈夫、妻子、一夜情人、情人、房子、家和孩子这样一个完整的例子来说明这五种关系。一、泛化关系1.泛化关系的理解泛化关系常与继承关系
7、相提并论,继承关系指子类继承父类的属性和行为;泛化关系则是指将子类的共同属性和行为提取出来,形成更一般的概念,子类相对于一般化概念来讲就是特殊概念。特殊与一般之间的关系就是泛化关系。反过来,由一般到特殊的关系就是继承关系。所以,也讲泛化关系表示类与类之间的继承关系,接口与接口之间的继承关系,或类对接口的实现关系。一般化的关系,即,泛化关系是从子类指向父类,与继承或实现的方法相反。泛化关系是一种存在于一般概念与特殊概念之间的分类关系,它只使用在类型上,而不是实例上。2.泛化关系的UML表示方法泛化关系中对应于一般概念的类被称为超类或父类,而
8、特殊概念的类被称为子类。在UML中,泛化关系用一条从子类指向父类的空心三角形箭头来表示。下图表示了丈夫与男人之间的泛化关系,以及一夜情人、情人和妻人与女人之间的泛化关系。3.泛化关系的代码实现
此文档下载收益归作者所有