《面向对象的动态模型和功能模型》由会员分享,可在线阅读,更多相关《面向对象的动态模型和功能模型(43页珍藏版)》请在金锄头文库上搜索。
1、第第4讲讲 面向对象的方法学面向对象的方法学v客观世界中的问题,是由实体以及实体之间的关系构成,实体就是对象。问题空间的对象是丰富多彩的。v计算机系统求解客观世界中的问题,借助程序设计语言中的实体,如变量,函数,数组等处理,这些都是非常简单和呆板的行为。用简单呆板的元素处理丰富的问题关系,需要复杂的算法和数据结构,存在“语义断层”数据与处理之间的关系v传统的程序设计方法,定义数据,在定义函数,数据与函数是独立的;v而问题域的对象,既具有本身的属性,同时也有主动的行为。用传统的程序设计方法求解问题,无法利用对象的这种性质,增加了处理和理解的难度。面向对象的方法学v提供在解空间中设计对象的思路,用
2、解空间的对象,模拟问题空间的对象,从而得出问题空间的解,减少了语义断层。面向对象方法学的四个要点v1客观世界由对象组成,复杂对象有简单对象组合而成v软件系统由全部由对象组成,java.v对系统以对象分解,取代传统方法的功能的分解。面向对象方法学的四个要点v2将所有对象划分成类,每个类定义数据和方法。建立对象实例时,每个实例具有专用的数据,表示该对象的状态属性。v类中定义的方法,是所有对象所公用的v(有的类,具有所有对象所公用的数据)面向对象方法学的四个要点v3类之间存在父类和派生类的关系,从而形成一个层次结构。子类拥有上层类相同的属性,子类可以对属性重新描述,增加属性等。v这种属性叫继承性面向
3、对象方法学的四个要点v4对象直接通过消息互相联系。对象的私有数据,外界不能直接处理,只能通过发送消息,有对象自身的操作来处理。v这种属性叫封装性。面向对象方法学的优点v1与人类认识世界的方法一致v传统的方法割裂数据和处理的关系v瀑布开发方法中一个步骤做好了再做下一步,而人类的认知是渐进的。v面向对象分析到面向对象设计再到面向对象实现(即OOAOODOOP)之间可以直接进行而不用转换,保持了问题域中事物及其相互关系的本来面貌。面向对象方法学的优点v2稳定性好v传统方法的软件结构,依赖于功能,当功能发生变化时,会引起软件整体的修改。v面向对象的软件,模拟的是现实世界,现实世界是稳定的,故软件系统也
4、是稳定的,功能的变化只是涉及少数的对象类。概述概述 面向对象技术面向对象技术v系统中的对象是数据抽象与过程抽象的综合。系统中的对象是数据抽象与过程抽象的综合。v系统的状态保存在各个对象的数据存储中。系统的状态保存在各个对象的数据存储中。v控制流包含在各个对象中的操作内。控制流包含在各个对象中的操作内。v在面向对象体系结构消息从一个对象传送到另一在面向对象体系结构消息从一个对象传送到另一个对象。算法被分布到各种实体中。通过执行消个对象。算法被分布到各种实体中。通过执行消息传递和对象中的操作实现算法的功能。息传递和对象中的操作实现算法的功能。面向对象开发范型的特点面向对象开发范型的特点参考资料参考
5、资料:面向对象的特点面向对象的特点v抽象性:对象的数据抽象和行为抽象;抽象性:对象的数据抽象和行为抽象;v封装性:信息隐蔽;封装性:信息隐蔽;v共享性:共享性:v同一类中所有实例共享数据结构和行为特征;同一类中所有实例共享数据结构和行为特征;v同一应用中所有实例通过继承共享数据结构同一应用中所有实例通过继承共享数据结构和行为特征;和行为特征;v不同应用中所有实例通过复用共享数据结构不同应用中所有实例通过复用共享数据结构和行为特征和行为特征对象对象v对象对象是系统中用来描述客观事物的一个实体是系统中用来描述客观事物的一个实体,是构成系统的一个基本单位,由一组属性和一是构成系统的一个基本单位,由一
6、组属性和一组对属性进行操作的服务组成。组对属性进行操作的服务组成。v属性属性一般只能通过执行对象的操作来改变。一般只能通过执行对象的操作来改变。v操作操作(方法或服务)描述了对象执行的功能,(方法或服务)描述了对象执行的功能,若通过消息传递,还可以为其他对象使用。若通过消息传递,还可以为其他对象使用。v对象是以数据为中心,主动的,实现了数据封对象是以数据为中心,主动的,实现了数据封装,本质上具有并行性,模块独立性好。装,本质上具有并行性,模块独立性好。类类v把具有相同特征(属性)和行为(操作)的对把具有相同特征(属性)和行为(操作)的对象归在一起就形成了象归在一起就形成了类类 (如班级如班级)
7、 。v类的定义包括一组数据属性和在数据上的一组类的定义包括一组数据属性和在数据上的一组合法操作。合法操作。v在一个类中,每个对象都是在一个类中,每个对象都是类的实例类的实例 (例证例证) ,它们都可使用类中的函数。它们都可使用类中的函数。v类定义了各个实例所共有的结构,使用类的构类定义了各个实例所共有的结构,使用类的构造函数,可以在创建该类的实例时初始化这个造函数,可以在创建该类的实例时初始化这个实例的状态。实例的状态。消息消息v消息消息是一个实例与另一个实例之间传递的信息,是一个实例与另一个实例之间传递的信息,要求该实例执行类中定义的某个操作。要求该实例执行类中定义的某个操作。v消息的使用类
8、似于函数调用,消息中指定了某一消息的使用类似于函数调用,消息中指定了某一个实例,一个消息名(操作名),和一个参数表个实例,一个消息名(操作名),和一个参数表 (可能是空的可能是空的) 。v接收消息的实例执行消息中指定的操作,并将形接收消息的实例执行消息中指定的操作,并将形式参数与参数表中相应的值结合起来。式参数与参数表中相应的值结合起来。封装封装v1对象有一个清晰的边界。私有数据和操作外面对象有一个清晰的边界。私有数据和操作外面不能访问不能访问v2 有确定的接口,只能通过发送消息使用有确定的接口,只能通过发送消息使用继承继承v如如果果某某几几个个类类之之间间具具有有共共性性的的东东西西 ( (
9、信信息息结结构构和和行行为为),),抽抽取取出出来来放放在在一一个个泛泛化化类类中中,将将各各个个类类的的特特有有东东西西放放在在特特殊殊类类中中分分别别描描述述,则则可可建建立起特殊类对泛化类的继承。立起特殊类对泛化类的继承。v继继承承是是使使用用已已有有的的类类定定义义做做为为基基础础建建立立新新类类的的定义技术。定义技术。v已已有有的的类类可可当当做做基基类类来来引引用用,则则新新类类相相应应地地可可当做派生类来引用。当做派生类来引用。多态多态v多态性多态性指同名的函数或操作可在不同层指同名的函数或操作可在不同层次的对象中有各自相应的实现。次的对象中有各自相应的实现。v C+的虚函数,在
10、类的不同层次有不的虚函数,在类的不同层次有不同的实现,动态联编时,在运行时根据同的实现,动态联编时,在运行时根据对象决定使用哪个实现。对象决定使用哪个实现。重载重载v在一个对象内,若干个参数不同的函数在一个对象内,若干个参数不同的函数可以同名。这是在静态编译时通过参数可以同名。这是在静态编译时通过参数特征加以区分。特征加以区分。v操作符的重载,根据操作数的类型不同,操作符的重载,根据操作数的类型不同,分别实现。分别实现。面向对象的建模v系统模型是在需求分析阶段建立,用来检验对系统的理解。在后续开发过程中不断完善,直至用程序实现。v面向对象的方法开发系统模型包括:描述数据结构的对象模型描述控制结
11、构的动态模型描述功能的功能模型(结构化方法-ER图,状态图,数据流图)1. 对象模型对象模型v是是三三个个模模型型中中最最关关键键的的一一个个模模型型,它它的的作作用用是是描描述述系系统统的的静静态态结结构构,包包括括构构成成系系统统的的类类和和对对象象,它它们们的的属属性性和和操操作作,及及它它们们之之间间的的关系。关系。v在在OMT中中,类类与与类类之之间间的的关关系系叫叫做做关关联联。关关联联代代表表一一组组存存在在于于两两个个或或多多个个对对象象之之间间的的,具具有有相相同同结结构构和和含含义义的的具具体体连连接接。关关联联可可以以是是物理的,也可以是逻辑的。物理的,也可以是逻辑的。U
12、ML类v命名使用标准术语。便于理解使用具有确切意义的名字。发动机动力设备必要时用短语,是含义更确切。“男教师”v名字应该是简洁,无二义类名类名类名类名属性属性属性属性操作操作操作操作服务v语法格式可见性操作名(参数表):返回值类型可见性(+,-,#)参数表(color:Integer=RED)类的描述汽车+颜色:Integer=0+速度:Float=150+类型:Char=轿车,SUV-故障情况:Bool=False+加速(速度:Float):无+更改颜色(颜色:Integer):IntegerUML类间关系(关联)普通关联:只要类之间存在连接关系普通关联:只要类之间存在连接关系作家计算机使用
13、被使用*1.*0.1表示0-1个对象0.*或*表示0-多个对象1+或1.*表示1到多个对象1.15表示1到15个对象3表示3个对象关联的角色v关联双方可以标明角色人结婚丈夫妻子限定关联v通过限定,将关联重数由一对多,或多对多,简化为一对一或多对一文件目录文件名关联类v关联本身有一些属性,则引入一个关联类电梯电梯控制器队列按钮*UML类间关系(聚合)v聚合,表示类间的包含,组成关系v共享聚合,组成课题组的人,可以是另一个课题组成员。人课题组*1.*组合聚合v组成类率属于整体类,整体类不存在,不分类也不存在。文本框窗口包含列表框按钮菜单UML类间泛化v普通泛化v抽象类不具有实例v具有虚方法UML类
14、间泛化受限泛化完全继承表示子类全部列出UML类间依赖和细化v图友元依赖关系v图细化关系示例金额计算器金额计算器金额金额累加累加找零找零重置重置自动售货机自动售货机饮料编号饮料编号价格价格投入硬币投入硬币送出饮料送出饮料显示金额显示金额按下按钮按下按钮按退币杆按退币杆显示售空显示售空存量计算器存量计算器饮料编号饮料编号存量存量递减递减显示售空显示售空重置重置退币杆退币杆退币杆状态退币杆状态按退币杆按退币杆顾客顾客姓名姓名硬币硬币投入硬币投入硬币取出饮料取出饮料选择按钮选择按钮按钮状态按钮状态按钮灯亮按钮灯亮按钮灯灭按钮灯灭售空灯亮售空灯亮按下按钮按下按钮顾客按顾客按退币杆退币杆购买购买顾客按顾客
15、按下按钮下按钮属于属于属于属于属于属于属于属于2. 动态模型动态模型v动动态态模模型型着着重重于于系系统统的的控控制制逻逻辑辑,它它包包括括两两个个图,一是状态图,一是事件追踪图。图,一是状态图,一是事件追踪图。状态图状态图状态状态A活动活动状态状态B活动活动状态状态A / 操作操作事件事件B 条件条件起始状态起始状态终结状态终结状态 状状状状态态态态图图图图是是是是一一一一个个个个状状状状态态态态和和和和事事事事件件件件的的的的网网网网络络络络,侧侧侧侧重重重重于于于于描描描描述每一类对象的动态行为。述每一类对象的动态行为。述每一类对象的动态行为。述每一类对象的动态行为。取出饮料取出饮料结算
16、找零结算找零扣减存量扣减存量完成交易完成交易显示售显示售货机就货机就绪,所绪,所有灯灭有灯灭显示显示金额金额总数总数饮料饮料售空售空灯亮灯亮显示总显示总额已够额已够饮料选饮料选择灯亮择灯亮投入硬币投入硬币( (有效的有效的) )投入硬币投入硬币规定金额规定金额金额不足金额不足再投币再投币按下按下饮料饮料选择选择按钮按钮回到就绪状态回到就绪状态回到就绪状态回到就绪状态取消取消无效硬币无效硬币取消取消3. 功能模型功能模型v功功能能模模型型由由数数据据流流图图组组成成,指指明明从从外外部部输输入入到到外部输出,数据在系统中传递和变换的情况。外部输出,数据在系统中传递和变换的情况。顾客顾客自动自动售
17、售货机货机输入:投币、按选输入:投币、按选择按钮、取消交易择按钮、取消交易输出饮料输出饮料投币金额投币金额显示屏显示屏选择按选择按钮灯钮灯售空灯售空灯显示投显示投币金额币金额选择按选择按钮灯亮钮灯亮售空灯亮售空灯亮顶层数据流图顶层数据流图饮料按饮料按钮灯亮钮灯亮顾客顾客投入投入硬币硬币判断何判断何种饮料种饮料按下选按下选择按钮择按钮判断判断存量为存量为零否零否饮料编号饮料编号计算计算扣减存量扣减存量找零找零存量非零存量非零顾客顾客送出饮料送出饮料找零找零售空售空灯亮灯亮存量为零存量为零数据流图数据流图UML用例功能模型v数据流图v用例图-系统,行为者,用例,用例间的关系v系统是提供用例的黑盒子
18、,方框代表边界,描述功能的用例在内部,与系统通过用例交流的行为者在外部v用例是一个类,每个实例是一个脚本,通过用例描述系统功能v行为者与系统交互的外部实体用例间的关系用例建模v寻找行为者v谁使用系统主要功能v谁借助系统完成日常工作v谁来维护系统v系统控制哪些设备v系统与其他系统交互v哪些人对本系统感兴趣v找到行为者后,寻找用例v行为者需要系统提供哪些功能v行为者是否需要访问信息v系统发生的事件需要通知行为者,行为者需要通知系统某些事情,这些事件能做什么v行为者的日常工作因新系统而简化v(系统输入输出,当前系统存在什么问题)用例描述v参与者:商品管理员v前置条件:v1.商品管理员登陆XXX系统后
19、拥有能够操作该用例的权限v2.商品信息的名称、生产日期可以被商品管理员获取作为条件v基本操作流程:v商品管理员输入商品名称和信息-系统提取对应的商品并显示所有商品信息v可选操作流程:v商品管理员输入商品名称和信息-系统无法根据条件得到对应商品信息,系统提示商品管理员重新输入条件v业务规则:v1.在提取商品信息的时候必须满足不能提取“安全锁”类型的商品v后置条件:v1.被提取的商品其状态全部变成“已查看”状态的商品v相关用例:v扩展的用例:打印商品信息、更新商品信息v被包含的用例:获取商品单价三种模型之间的关系v对象模型是最基本最重要的v类的动态模型,描述了实例的生命周期v状态转换驱使行为发送,在数据流图中映射为处理,在用例图中映射为用例,v用例对应类图中的服务v数据流图中的数据存储,对应对象v数据流,对应属性值v行为者可能是对象v处理,产生动态模型中的事件