功能模型功能模型表明_第1页
功能模型功能模型表明_第2页
功能模型功能模型表明_第3页
功能模型功能模型表明_第4页
功能模型功能模型表明_第5页
已阅读5页,还剩67页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

面对对象的概念什么是面对对象对象类消息继承第9章面对对象方法学引论什么是面对对象Coad和Yourdon给出了一个定义:“面对对象=对象+类+继承+通信”。假如一个软件系统是运用这样4个概念设计和实现的,则认为这个软件系统是面对对象的。一个面对对象的程序的每一成份应是对象,计算是通过新的对象的建立和对象之间的通信来执行的。面对对象的要点:1.认为客观世界是由各种对象组成的,任何事物都是对象,困难的对象可以有比较简洁的对象以某种方式组合而成。2.把全部对象都划分成各种对象类,每个对象类都定义了一组数据和一组方法。3.依据子类(或称为派生类)与父类(或称为基类)的关系,把若干个对象类组成一个层次结构的系统(也称为类等级)。4.对象彼此之间仅能通过传递消息相互联系。面对对象的主要优点:1.与人类习惯的思维一样2.稳定性好可重用性好较易开发出大型软件产品可维护性好稳定性好、易于修改、简洁理解、简洁测试和调试面对对象技术的优点并不是削减了开发时间,相反,初次运用这种技术开发软件,可能比用传统的方法所须要的实践还略微长一点。对象(object)对象是面对对象开发方法的基本成份。每个对象可用它本身的一组属性和它可以执行的一组操作来定义。属性一般只能通过执行对象的操作来变更。操作又称为方法或服务,它描述了对象执行的功能,若通过消息传递,还可以为其它对象运用。面对对象中的基本概念对象的形象表示状态S操作1,2,3的实现操作1操作2操作3界面面对对象中的基本概念对象的特点以数据为中心对象是主动的实现了数据封装本质上具有并行性模块独立性对象的分类外部实体:与系统交换信息的外部设备、相关子系统、操作员或用户等;信息结构:问题论域中的概念实体,如信号、报表、显示信息等;须要记忆的事务:系统执行过程中产生并须要记忆的事务,如单击鼠标,击打键盘等;角色:与系统交互的人员所扮演的角色,如学生、老师、会计等;组织机构:有关机构,如公司、部门、小组等;地点或位置:用做系统环境或问题上下文的场所、位置,如客户地址、收件人地址等;操作规程:如操作菜单、某种数据输入过程等。类(class)类是一组具有相同数据结构和相同操作的对象的集合。类的定义包括一组数据属性和在数据上的一组合法操作。类定义可以视为一个具有类似特性与共同行为的对象的模板,可用来产生对象。在一个类中,每个对象都是类的实例(Instance),它们都可运用类中的函数。

类←两个四边形对象Quadrilateral类的每个对象有相同的一组属性和操作。因此,类Quadrilateral供应了一个模板,表示了全部四边形对象。类常常可看做是一个抽象数据类型(ADT)的实现。但更合适的是把类看做是某种概念的模型。建立类的实例时常常运用其它类的实例,它们供应了该类所须要的服务。用到的这些实例应当受到疼惜不被其它对象存取,包括同一个类的其它实例。什么是消息?消息,就是要求某个对象执行在定义它的那个类中所定义的某个操作的规格说明。通常,一个消息有下述三部分组成:接受消息的对象消息选择符(也称为消息名)零个或多个变元如:myCircle.show(GREEN)不同于结构化设计中的函数调用。消息(Message)继承(Inheritance)继承是运用已有的类定义做为基础建立新类的定义的技术。新类的定义可以是既存类所声明的数据和新类所增加的声明的组合。新类复用既存的定义,而不要求修改既存类。既存类可当做基类来引用,则新类相应地可当做派生类来引用。例:类的继承层次PolygonTriangleQuadrilateralRectangle运用继承设计一个新类,可以视为描述一个新的对象集,它是既存类所描述对象集的子集合。这个新的子集合可以认为是既存类的一个特殊化。新类的界面可以等同于既存类的界面,新类的界面还可以被看做是既存类界面的一个扩充界面。例如,从一个既存的车辆类派生的四轮驱动车类可能不仅是车辆类子集合定义的特殊化,而且还可能在新类的界面中引入新的实力。PolygonreferencePointVerticesDraw()move(x,y)contains?(aPoint)QuadrilateralreferencePointVerticesDraw()move(x,y)contains?(aPoint)Polygon类Polygon类的子类Quadrilateral多态性(Polymorphism)在面对对象的软件技术中,多态性是指子类对象可以象父类对象那样运用,同样的消息既可以发送给父类对象也可以发送给子类对象。多态性机制不仅增加了面对对象软件系统的灵敏性,进一步削减了信息冗余,而且显著提高了软件的可重用性和可扩充性。重载(Overloading)有两种重载:函数重载是指在同一作用域内的若干个参数特征不同的函数可以运用相同函数名字。运算符重载是指同一个运算符可以施加于不同类型的操作数上面。当然,当参数特征不同或被操作数的类型不同时,实现函数的算法或运算符的语义是不相同的。对象模型化技术把分析时收集的信息构造在三类模型中,即对象模型、动态模型和功能模型。这个模型化的过程是一个迭代过程。通过不断更新、细化,直到切合系统的真正需求为止。对象模型化技术OMT动态模型对象模型功能模型对象模型是三个模型中最关键的一个模型,它的作用是描述系统的静态结构,包括构成系统的类和对象,它们的属性和操作,及它们之间的关系。在OMT中,类与类之间的关系叫做关联。关联代表一组存在于两个或多个对象之间的、具有相同结构和含义的具体连接。关联可以是物理的,也可以是逻辑的。类名属性操作类类的实例(类名)属性值类定义示例正方形边长位置边界颜色内部颜色画图擦图移动聚合,代表整体与部分的关系,这是一种特殊形式的关联。菱形框表示整体侧对象限定,用以对关联的含义做某种约束。角色,用来说明关联的一端。由于多数关联具有两个端点,因而涉及到两个角色。附加的说明对象之间的连接的连接属性。(0个或1个)(0个或多个)1+(1个或多个)12,4(1~2个或4个)一般化关联也称为继承性。一般化关系包含基类和几个派生类。基类表示了一个较为一般、普遍的概念每个派生类则是它的某个特殊形态派生类除了自然地继承基类所具有的属性和操作外,还具有反映自身特点的属性和操作。1.定义类UML中类的图形符号为长方形,用两条横线把长方形分成上、中、下3个区域(下面两个区域可省略),3个区域分别放类的名字、属性和服务。类图的基本符号为类命名时应当遵守以下几条准则:(1)运用标准术语。应当运用在应用领域中人们习惯的标准术语作为类名,不要随意创建名字。例如,“交通信号灯”比“信号单元”这个名字好,“传送带”比“零件传送设备”好。(2)运用具有精确含义的名词。尽量运用能表示类的含义的日常用语作名字,不要运用空洞的或含义模糊的词作名字。例如,“库房”比“房屋”或“存物场所”更精确。(3)必要时用名词短语作名字。为使名字的含义更精确,必要时用形容词加名词或其他形式的名词短语作名字。例如,“最小的领土单元”、“贮存室”、“公司员工”等都是比较恰当的名字。总之,名字应当是富于描述性的、简洁的而且无二义性的。2.定义属性UML描述属性的语法格式如下:可见性属性名:类型名=初值{性质串}属性的可见性(即可访问性)有3种:公有的(public)私有的(private)疼惜的(protected)分别用加号(+)、减号(-)和井号(#)表示。假如未声明可见性,则表示该属性的可见性尚未定义。留意,没有默认的可见性。属性名和类型名之间用冒号(:)分隔。类型名表示该属性的数据类型,它可以是基本数据类型,也可以是用户自定义的类型。在创建类的实例时应给其属性赋值,假如给某个属性定义了初值,则该初值可作为创建实例时这个属性的默认值。类型名和初值之间用等号(=)隔开。用花括号括起来的性质串明确地列出该属性全部可能的取值。例如,“发货单”类的属性“管理员”,在UML类图中像下面那样描述:-管理员:String=“未定”3.定义服务服务也就是操作,UML描述操作的语法格式如下:可见性操作名(参数表):返回值类型{性质串}操作可见性的定义方法与属性相同。参数表是用逗号分隔的形式参数的序列。描述一个参数的语法如下:参数名:类型名=默认值当操作的调用者未供应实在参数时,该参数就运用默认值。与属性类似,在类中也可定义类作用域操作,在类图中表示为带下划线的操作。这种操作只能存取本类的类作用域属性。类与类之间通常有关联、泛化(继承)、依靠和细化等4种关系。关联(1)一般关联一般关联是最常见的关联关系,只要在类与类之间存在连接关系就可以用一般关联表示。一般关联的图示符号是连接两个类之间的直线。表示关系的符号在表示关联的直线两端可以写上重数(multiplicity),它表示该类有多少个对象与对方的一个对象连接。重数的表示方法通常有:0…1 表示0到1个对象0…*或* 表示0到多个对象1+或1…* 表示1到多个对象1…15 表示1到15个对象3 表示3个对象假如图中未明确标出关联的重数,则默认重数是1。(2)关联的角色在任何关联中都会涉及到参与此关联的对象所扮演的角色(即起的作用),在某些状况下显式标明角色名有助于别人理解类图。下图是一个递归关联(即一个类与它本身有关联关系)的例子。一个人与另一个人结婚,必定一个人扮演丈夫的角色,另一个人扮演妻子的角色。假如没有显式标出角色名,则意味着用类名作为角色名。(3)限定关联限定关联通常用在一对多或多对多的关联关系中,可以把模型中的重数从一对多变成一对一,或从多对多简化成多对一。例如,某操作系统中一个书目下有很多文件,一个文件仅属于一个书目,在一个书目内文件名确定了惟一一个文件。(4)关联类为了说明关联的性质可能须要一些附加信息。可以引入一个关联类来记录这些信息。关联中的每个连接与关联类的一个对象相联系。关联类通过一条虚线与关联连接。2.聚集聚集也称为聚合,是关联的特例。聚集表示类与类之间的关系是整体与部分的关系。在陈述需求时运用的“包含”、“组成”、“分为……部分”等字句,往往意味着存在聚集关系。除了一般聚集之外,还有两种特殊的聚集关系,分别是共享聚集和组合聚集。(1)共享聚集假如在聚集关系中处于部分方的对象可同时参与多个处于整体方对象的构成,则该聚集称为共享聚集。例如,一个课题组包含很多成员,每个成员又可以是另一个课题组的成员,则课题组和成员之间是共享聚集关系,(2)组合聚集假如部分类完全隶属于整体类,部分与整体共存,整体不存在了部分也会随之消逝(或失去存在价值了),则该聚集称为组合聚集(简称为组成)。例如,在屏幕上打开一个窗口,它就由文本框、列表框、按钮和菜单组成,一旦关闭了窗口,各个组成部分也同时消逝,窗口和它的组成部分之间存在着组合聚集关系。(1)一般泛化没有具体对象的类称为抽象类。抽象类通常作为父类,用于描述其他类(子类)的公共属性和行为。图示抽象类时,在类名下方附加一个标记值{abstract}。3.泛化抽象类通常都具有抽象操作。抽象操作仅用来指定该类的全部子类应具有哪些行为。抽象操作的图示方法与抽象类相像,在操作标记后面跟随一特性质串{abstract}。与抽象类相反的类是具体类,具体类有自己的对象,并且该类的操作都有具体的实现方法。困难类图示例一个比较困难的类图示例(2)受限泛化可以给泛化关系附加约束条件,以进一步说明该泛化关系的运用方法或扩充方法,这样的泛化关系称为受限泛化。预定义的约束有4种:多重、不相交、完全和不完全。这些约束都是语义约束。多重继承指的是,一个子类可以同时多次继承同一个上层基类,与多重继承相反的是不相交继承,即一个子类不能多次继承同一个基类(这样的基类相当于C++语言中的虚基类)。假如图中没有指定{多重}约束,则是不相交继承,一般的继承都是不相交继承。多重继承示例完全继承指的是父类的全部子类都已在类图中穷举出来了,图示符号是指定{完全}约束。不完全继承与完全继承恰好相反,父类的子类并没有都穷举出来。4.依靠和细化(1)依靠关系依靠关系描述两个模型元素(类、用例等)之间的语义连接关系:其中一个模型元素是独立的,另一个模型元素不是独立的,它依靠于独立的模型元素,假如独立的模型元素变更了,将影响依靠于它的模型元素。(2)细化关系当对同一个事物在不同抽象层次上描述时,这些描述之间具有细化关系。假设两个模型元素A和B描述同一个事物,它们的区分是抽象层次不同,假如B是在A的基础上的更具体的描述,则称B细化了A,或称A细化成了B。细化的图示符号为由元素B指向元素A的、一端为空心三角形的虚线(留意,不是实线),动态模型要想对一个系统了解得比较清晰,还应当考察在任何时刻对象及其关系的变更。系统的这些涉刚好序和变更状况用动态模型来描述。动态模型着重于系统的限制逻辑。它包括三个部分,状态图,事务追踪图和用例图。状态图状态图是一个状态和事务的网络,侧重于描述每一类对象的动态行为。在状态图中,状态是对某一时刻中属性特征的概括。而状态迁移表示这一类对象在何时对系统内外发生的哪些事务做出何种响应。操作是一个伴随状态迁移的瞬时发生的行为,与触发事务一起表示在有关的状态迁移之上。活动则是发生在某个状态中的行为,往往须要确定的时间来完成,因此与状态名一起出现在有关的状态之中。动态模型由多个状态图组成。对于每一个具有重要动态行为的类都有一个状态图,从而表明全部系统活动的模式。事务一个事务发生在某一时刻每个事务都是单独发生的我们建立事务类,并给每个事务一个名字,以指明共同结构和行为。各个状态图并发地执行,并可以独立地变更状态。各种类的状态图可以通过共享事务组合到一个动态模型中。事务从一个对象向另一个对象传送信息。有些事务类可能传送的是简洁的信号“要发生某件事”,而有些事务类则可能传送的是数据值。由事务传送的数据值叫做属性。列车动身(线路、班次、城市)揿下鼠标按钮(按钮、位置)拿起电话受话器数字拨号(数字) 请大家思索电话系统的状态图事务追踪图事务追踪图侧重于说明发生于系统执行过程中的一个特定“场景”。场景也叫做脚本,是完成系统某个功能的一个事务序列。场景通常起始于一个系统外部的输入事务,结束于一个系统外部的输出事务,它可以包括发生在这个期间的系统全部的内部事务。

打打电电话话者者拿拿起起电电话话受受话话器器

电电话话忙忙音音开开始始

打打电电话话者者拨拨数数字字((88))

电电话话忙忙音音结结束束

打打电电话话者者拨拨数数字字((22))

..............

打打电电话话者者拨拨数数字字((33))

接接电电话话者者的的电电话话开开始始振振铃铃

铃铃声声在在打打电电话话者者的的电电话话上上传传出出

接接电电话话者者回回答答

接接电电话话者者的的电电话话停停止止振振铃铃

铃铃声声在在打打电电话话者者的的电电话话中中消消失失

通通电电话话

..................状态图与事务追踪图的关系状态图叙述一个对象的个体行为,事务追踪图则给出多个对象所表现出来的集体行为。它们从不同侧面来说明同一系统的行为。例如,一个事务追踪图指出某一对象在接受一个事务之后发出另一事务,同一行为在此对象的状态图中也应当有所表示。功能模型功能模型表明,通过计算,从输入数据能得到什么样的输出数据,不考虑参与计算的数据按什么时序执行。功能模型由多个数据流图组成,它们指明从外部输入,通过操作和内部存储,直到外部输出,这完全的数据流状况。功能模型中全部的数据流图往往形成一个层次结构。在这个层次结构中,一个数据流图中的过程可以由下一层的数据流图做进一步的说明。高层的过程相应于作用在聚合对象上的操作,而低层的过程则代表作用于一个简洁对象上的操作。数据流图不表示限制信息,限制信息在动态模型中表示。数据流图不表示对象中数据的组织,这种信息在对象模型中表示。数据流图中允许加入限制流,但这样做将与动态模型重复,不提倡夹带限制流。什么是用例(usecase)用例是帮助分析员和用户确定系统运用状况的UML组件;一组用例就是从用户的角度动身如何使用系统的描述;可认为用例是系统的一组运用场景;每个场景描述了一个事务的序列;每个序列是由一个人、另一个系统、一个硬件设备或某段时间的消逝所发起;每个发起事务序列的实体叫做参与者(actor)或行动者POS系统用例图购买商品登录退货收款员POS顾客启动/关闭管理用户其他管理员系统管理员用例建模用例建模是用于描述一个系统应当做什么的建模技术用例建模可用于新系统的需求获得,也可用于已有系统的升级用例模型(usecasemodel)一个用例模型可由若干幅用例图组成用例描述了用户和系统之间的交互,其重点是系统为用户做什么用例模型描述全部的系统功能行为一幅用例图包含的模型元素有:用例参与者(行为者、执行者)系统系统被看作供应用例的黑盒子一个用例是可以被行为者感受到的一个完整的功能行为者是和用户交互的人或其他系统代表一种角色,而不是某个具体的人或物。行为者与用例之间的直线,表示两者之间交换信息,称通信联系。用例图用例参与者系统参与者用例模型表示法通信联系销售系统用例

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论