1、第10章 面向对象方法学引论6.1面向对象方法学概述6.1.1面向对象方法学的要点面向对象方法学的4个要点:1)认为客观世界是由各种对象组成的,任何事物都是对象。面向对象的软件系统是由对象组成的,软件中的任何元素都是对象,复杂的软件对象由比较简单的对象组合而成。OO方法用“对象分解”取代了传统方法的“功能分解”。2)把所有对象都划分成各种对象类(类),每个对象类都定义了一组数据和一组方法。数据:表示对象的静态属性,是对象的状态信息。方法:施加于该类对象上的操作,是该类所有对象共享的。3)按照子类(或派生类)与父类(或基类)的关系,把若干个对象类组成一个层次结构的系统(类等级)。继承:在类的层次
2、结构中,通常下层的派生类具有和上层的基类相同的特性 (包括数据和方法)。4)对象彼此之间仅能通过传递消息互相联系。6.1.2面向对象方法学的优点 1.与人类习惯的思维方法一致 2.稳定性好 3.可重用性好 4.较易开发大型软件产品 5.可维护性好9.2面向对象的概念 9.2.1对象 1.对象的形象表示 图9.1对象的形象表示 2.对象的定义 对象是封装了数据结构及可以施加在这些数据结构上的操作的封装体。图9.2用自动机模拟对象 3.对象的特点1)以数据为中心。对象的操作是针对属性(数据)变化的要求来设计的,操作的结果往往与对象当前的属性有关。(操作:增加工资50,1000+50)2)对象是主动
3、的。对象是进行处理的主体,对象的属性通常是由该对象自己的操作改变的。3)实现了数据封装。私有数据完全被封装在对象内部,对外是隐藏的、不可见的,对私有数据的访问或处理只能通过公有的操作进行。4)对象本质上具有并行性。不同对象各自独立地处理自身的数据,彼此通过发送消息完成通信。5)模块的独立性好。对象是面向对象的软件的基本模块。对象之间联系比较少(只通过公共接口),符合高内聚、低耦合的设计原则。9.2.2其他概念 1.类(class)2.实例(instance)3.消息(message)4.方法(method)5.属性(attribute)6.封装(encapsulation)7.继承(inher
4、itance)8.多态性(polymorphism)9.重载(overloading)9.3面向对象建模在面向对象方法中要建立三种模型:对象模型:描述系统数据结构;类图动态模型:描述系统控制结构;状态图功能模型:描述系统功能;用例图。一个典型的软件系统组合了三个方面的内容:它使用数据结构(对象模型),执行操作(动态模型),并且完成数据值的变化(功能模型)。9.4对象模型对象模型表示静态的、结构化的系统的“数据”性质。对象模型为建立动态模型和功能模型,提供了实质性的框架。国际上UML(Unified Modeling Language;统一建模语言)作为面向对象技术的标准建模语言。通常,使用UM
5、L提供的类图来建立对象模型。9.4对象模型9.4.1类图的基本符号 1.定义类 Circle(圆)(圆)圆心坐标圆心坐标 :float 半径半径 :integer 填充的颜色:填充的颜色:color 显示显示()放大缩小放大缩小()移动移动()改变颜色改变颜色()类名类名属性属性操作操作(服务服务)2.定义属性UML描述属性的语法格式如下:可见性 属性名:类型名=初值性质串属性有可见性(Visibility,即可访问性)。利用可见性可以控制访问权限,即,外部事物对类中属性的操作方式。1)公有的(public,+):能够被系统中其它任何操作查看、使用或修改。2)私有的(private,-):仅在
6、类内部可见,只有类内部的操作才能存取该属性 该属性不能被其子类使用。3)保护的(protected,#):供类中的操作存取,该属性能被其子类使用。属性有类型。如,整型、实型、布尔型、杖举型等等。例如“发货单”类:+日期:Data=当天日期+状态:Status=unpaidunpaid,paid未付款,付款-管理员:String=“未定”可见性 属性名:类型名=初值性质串3.定义服务服务也就是操作。UML描述操作的语法格式如下:可见性 操作名(参数表):返回值类型性质串9.4.2表示关系的符号 1.关联 3.泛化 4.依赖和细化9.5动态模型 动态模型表示瞬时的、行为化的系统的“控制”性质,它规
7、定了对象模型中的对象的合法变化序列。动态模型的构成:把每个类的状态图用共享事件连接起来,将构成系统的动态模型。即动态模型是基于事件共享而互相关联的一组对象状态图的集合。3.6节介绍状态图96 功能模型功能模型表示变化的系统的“功能”性质,它指明了系统“做什么”。直接地反映了用户对目标系统的需求(做什么)。传统方法学中,功能模型由一组数据流图组成。在OO方法学中,数据流图不如在结构化分析、设计方法中那样重要,但是,建立功能模型有助于更深入地理解问题域,改进和完善自己的设计。UML提供的用例图也是进行需求分析和建立功能模型的强有力工具。用用例图建立起来的系统模型称为用例模型。用例模型描述的是外部行
8、为者(actor)所理解的系统功能。功能模型可以由数据流图和用例图来描述。961 用例图一幅用例图包含的模型元素有系统、行为者、用例及 用例之间的关系。自动售货系统自动售货系统售货售货供货供货取货款取货款顾客顾客供货人供货人收款员收款员 方框方框:代表:代表系统系统 椭圆椭圆:代表:代表用例用例(售货、供货、取货款是(售货、供货、取货款是 自动售货机系统的自动售货机系统的 典型用例)典型用例)人形人形:代表:代表行为者行为者 连线连线:表示行为者之间和:表示行为者之间和 用例之间的的用例之间的的关系关系。自动售货机系统的自动售货机系统的用例图用例图1系统系统被看作是一个提供用例的黑盒子。方框的
9、边线表示系统的边界,用于划定系统的功能范围,定义了系统所具有的功能。用例置于方框内,行为者置于方框外。2用例(Use Case)一个用例代表的是系统的一个完整的功能。用椭圆表示用例,通过关联与行为者连接,关联指出一个用例与哪些行为者交互。用例的特征:1)用例代表某些用户可见的功能,实现一个具体的用户目标;2)用例总是被行为者启动的,并向行为者提供可识别的值;3)用例必须是完整。注意:用例是一个类(不是实例),它代表一类功能。用例的实例是系统的一种实际使用方法,通常把用例的实例称为脚本。脚本是系统的一个具体的执行过程。3行为者(Actor:参与者、活动者)行为者是指与系统交互的人或其他系统,它代
10、表外部实体。使用用例并且与系统交互的任何人或物都是行为者。行为者代表一个角色,而不是某个具体的人或物。一个具体的人可以充当多种不同角色。(张三,收钱-收款员、买饮料-客户)在用例图中用直线连接行为者和用例,表示两者之间交换信息,称为通信联系。行为者触发(激活)用例,并与用例交换信息。实践表明,行为者对确定用例是非常有用的。可先列出行为者清单,再针对每个行为者列出它的用例。这样做就比较容易地建立起用例模型。4用例之间的关系扩展关系和使用关系,它们是泛化关系的两种不同形式。1)扩展关系向一个用例中添加一些新的动作后构成了另一个用例,这两个用例之间关系就是扩展关系,后者继承前者的一些行为,但做某些改
11、动。前者:基本(通用化)用例,后者:扩展用例。售货售货(罐装饮料)(罐装饮料)售散装饮料售散装饮料(纸杯纸杯)常规动作常规动作 非常规动作非常规动作基本用例基本用例 扩展用例扩展用例扩展扩展2)使用关系当一个用例使用另一个用例时,这两个用例之间构成了使用关系。供货供货关闭机器关闭机器打开机器打开机器开始动作开始动作使用使用使用使用最后动作最后动作图9.17 含扩展和使用关系的用例图962 用例建模通过用例可以获取用户需求。获取用例是需求分析阶段的主要的工作之一,是首先要做的工作。大部分用例将在需求分析阶段产生,随着开发的深入还会发现更多用例。一个用例模型由若干幅用例图组成。创建用例模型的关键是
12、:寻找行为者和用例。97 三种模型之间的关系面向对象建模技术建立了对象模型、功能模型、动态模型三种模型。它们相互补充、相互配合,使得我们对系统的认识更加全面。其中,对象模型是最基本的、最重要的。对象模型:定义了做事情的主体;功能模型:指明了系统应该“做什么”;动态模型:明确规定了什么时候做 (即在何种状态下接受了什么事件的触发)三种模型之间的关系1)针对每个类建立的动态模型,描述了类实例的生命周期或运行周期。2)状态转换驱使行为发生,这些行为在数据流图中被映射成处理,在用例图中被映射成用例,它们同时与类图中的服务相对应。3)功能模型中的处理(或用例)对应于对象模型中的类所提供的服务。有时一个处理(或用例)对应于多个服务,也有一个服务对应多个处理(或用例)的时候。4)数据流图中的数据存储,以及数据的源点/终点,通常是对象模型中的对象。5)数据流图中的数据流,往往是对象模型中的对象的属性值,也可能是整个对象。6)用例图中的行为者,可能是对象模型中的对象。7)功能模型中的处理(或用例)可能产生动态模型中的事件。8)对象模型描述了数据流图中的数据流、数据存储以及数据源点/终点的结构。
侵权处理QQ:3464097650--上传资料QQ:3464097650
【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。