资源预览内容
第1页 / 共63页
第2页 / 共63页
第3页 / 共63页
第4页 / 共63页
第5页 / 共63页
第6页 / 共63页
第7页 / 共63页
第8页 / 共63页
第9页 / 共63页
第10页 / 共63页
亲,该文档总共63页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
面向对象方法学引论,内容,9.1 面向对象方法学概述 9.2 面向对象的概念 9.3 面向对象建模 9.4 对象模型 9.5 动态模型 9.6 功能模型,9.1 面向对象方法学概述,面向对象方法学(Object - Oriented Methodology),简称OOM 9.1.1 面向对象方法学的要点 9.1.2 面向对象方法学的优点,9.1 面向对象方法学概述,9.1.1 面向对象方法学的要点 OOM的出发点和基本原则:尽可能模拟人类习惯的思维方式,使描述问题的问题空间与实现解法的解空间在结构上尽可能一致。 面向对象方法是一种以数据和信息为主线,把数据和处理相结合的方法:面向对象方法把对象作为由数据及可以施加在这些数据上的操作所构成的统一体,9.1 面向对象方法学概述,9.1.1 面向对象方法学的要点 解空间与问题空间的“语义断层” 对象 解空间对象和问题空间对象 解空间对象的呆板 问题空间对象的静态属性/动态行为,9.1 面向对象方法学概述,9.1.1 面向对象方法学的要点 OOM的4个要素 对象(object):世界由对象组成。 类 (class) :具有相同属性和操作的对象可划分为类;单个对象可视为某一类的实例 (instance) 继承(inheritance):类可分层下层子类与上层父类有相同特征,称为继承 消息(message):对象间只能通过发送消息进行联系,外界不能处理对象的内部数据,只能通过消息,9.1 面向对象方法学概述,基于对象(objectsbased)方法 使用对象-消息 基于类(class-based)方法 使用类-对象-消息 面向对象(objects-based) 使用类-对象-消息-继承,9.1 面向对象方法学概述,9.1.2 面向对象方法学的优点 与人类习惯的思维方式一致 稳定性好 可重用性好 可维护性好 注:OOM并不是减少了开发时间,而是通过提高可重用性、可维护性,进行扩充和修改的容易程度等,从长远角度改进了软件的质量。,9.1 面向对象方法学概述,9.1.2 面向对象方法学的优点 与人类习惯的思维方式一致 传统方法:面向过程设计,以计算为核心,数据与操作分离,不易理解。 OOM:以object 为核心,强调对现实概念的模拟而不强调算法。“面向对象方法学的基本原则,是按照人们习惯的思维方式建立问题域的模型,开发出尽可能直观、自然地表现求解方法的软件系统”。 Class:由特殊到一般的归纳(induction) Inheritance:由一般到特殊的演绎(deduction),9.1 面向对象方法学概述,9.1.2 面向对象方法学的优点 稳定性好 传统方法:结构依赖于功能,不稳定。 OOM:以object模拟实体,需求变化不会引起结构的整体变化,因为实体相对稳定,故系统也相应稳定。,9.1 面向对象方法学概述,9.1.2 面向对象方法学的优点 可重用性好 传统方法:通过建立标准函数库来重用软构件。但标准函数缺少必要的“柔性”,难以适应不同场合的不同需要。 OOM:一个class所有的 instances 都可重用它的代码;由 inheritance 派生出的新的 class 可重用其父类的代码,并且可以修改、扩充而不影响其父类的使用。,9.1 面向对象方法学概述,9.1.2 面向对象方法学的优点 可维护性好 传统方法:可维护性是最令人头痛的问题。 OOM:从以下几方面改善了可维护性 稳定性好:需求的变化不牵动全局,只需局部修改; Class 独立性强:只要修改不涉及class的对外接口,则内部修改完全不影响外部调用; 继承(Inheritance)和多态性(polymorphism)使其易被修改和扩充; 容易理解、容易测试、调试,9.2 面向对象的概念,9.2.1 对象 对象既可以是具体的物理实体的抽象,也可以是人为的概念,或者是任何有明确边界和意义的东西。 例如,一名职工、一家公司、一个窗口、一座图书馆、一本图书、贷款、借款等等,都可以作为一个对象。,9.2 面向对象的概念,9.2.1 对象,f1,f2,f3,fi,fn,fi(X),S,gi(X,S),S,输出,输出,Object : = ID + Method + Attribute + Message,9.2 面向对象的概念,9.2.1对象 对象的定义 定义1:对象是具有相同状态的一组操作的集合。 定义2:对象是对问题域中某个东西的抽象,这种抽象反映了系统保存有关这个东西的信息或与它交互的能力 定义3:对象:=,依次表示名字 操作集合 数据结构 对外接口,9.2 面向对象的概念,9.2.1对象 特点 以数据为中心,不设与数据无关的操作; Object主动处理而不 被动地等待被处理,外部只能通过message请求操作; 具有封装性:外部操作时,无须知道该object内部的数据结构及算法; 具有并行性:不同object各自独立地处理自身数据,彼此间仅通过传递message完成通信; 模块独立性好:内聚强、耦合松,9.2 面向对象的概念,9.2.2其他概念 类:是对具有相同数据和相同操作的一组相似对象的定义。 例 人、圆 实例:是由某个特定的类所描述的一个具体对象。 消息:是要求某个对象执行在定义它的那个类中所定义的某个操作的规格说明。由3部分组成:接受消息的对象、消息选择符(名)、零个和多个变元。 方法:是对象所能执行的操作;即类中所定义的服务。方法描述了对象执行操作的算法,响应消息的方法。 属性:是类中所定义的数据,是对客观实体所具有的性质抽象,9.2 面向对象的概念,9.2.2其他概念 封装:是把某个事务包起来,使外界不知道该事物的具体内容。 封装的条件: (1)有一个清晰的边界 (2)有确定的接口 (3)受保护的内部实现 继承 继承是子类自动地共享基类中定义的数据和方法的机制,其特性是:一个类的上层可以有父类,下层可以有子类。 继承具有传递性,如果类C继承类B,类B继承类A,则类C继承类A。 当类等级为树形结构时,类的继承是单继承;当允许一个类有多个父亲时,类的继承是多重继承。,9.2 面向对象的概念,9.2.2 其他概念 继承 在程序执行期间,对对象某一性质的查找是从该对象类在类等级中所在的程序开始,沿类等级逐层向上进行的,并把第一个被找到的性质作为所要的性质。因此,低层的性质将屏蔽高层的同名的性质。 从原有类派生出新的子类的办法有: 需要扩充原有功能时,派生类的方法可以调用基类的方法,并在此基础上增加必要的程序代码; 需要完全改变原有操作的算法时,可以在派生类中实现一个与基类方法同名而算法不同的方法; 需要增加新的功能时,可以在派生类中实现一个新的方法。,例:,9.2 面向对象的概念,个人成果,妥善保存,请勿传播,9.2 面向对象的概念,9.2.2 其他概念 多态性 多态性是指子类对象可以像父类对象那样使用,同样的消息既可以发送给父类对象也可以发送给子类对象。 在C+语言中,多态性是通过虚函数来实现的。虚函数机制使得程序员能在一个类等级中使用相同函数的多个不同版本,称为动态联遍,也叫滞后联编。 多态性机制不仅增加了面向对象软件的灵活性,进一步减少了信息冗余,而且显著提高了软件可重用性和可扩充性。,个人成果,妥善保存,请勿传播,9.2 面向对象的概念,9.2.2 其他概念 重载 函数重载是指在同一作用域内的若干个参数特征不同的函数可以使用相同的函数名字; 运算符重载是指同一个运算符可以施加与不同类型的操作数上面,当参数类型不同或被操作数的类型不同时,实现函数的算法或运算符的语义是不相同的 在C+语言中函数重载是通过静态联编(也叫先前联编)实现的,也就是在编译时根据函数变元的个数和类型,决定到底使用函数的哪个实现代码;对于重载的运算符,同样是在编译时根据被操作数的类型,决定使用该运算符的哪种语义。,9.3 面向对象建模,用面向对象方法开发软件,通常要建立3种形式的模型: 描述系统数据结构的对象模型 描述系统控制结构的动态模型 描述系统功能的功能模型 一个典型的软件系统使用数据结构(对象模型),执行操作(动态模型),并完成数据值的变化(功能模型),9.4 对象模型,9.4.1 类图的基本符号 9.4.2 表示关系的符号,个人成果,妥善保存,请勿传播,9.4 对象模型,关于建模语言 模型通常由一组图示符号和组成这些符号的规则组成,定义和描述问题域的术语和概念 为建立模型,需要用适当的语言来表达模型 建模语言由记号(即模型中使用的符号)和使用这些记号的规则(语法、语义)组成,9.4 对象模型,关于UML建模语言 面向对象分析与设计方法在20世纪80年代末到90年代中出现了一个高潮,统一建模语言UML就是这个高潮的产物 UML是由面向对象方法领域的三位著名专家Grady Booch,James Rumbaugh和Ivar Jacobson提出的 UML统一了他们三人的表示方法,而且融入了众多优秀的软件方法和思想,从而把面向对象方法提高到一个崭新的高度。 UML标志着面向对象建模方法进入了第三代,Grady Booch,James Rumbaugh,Ivar Jacobson,个人成果,妥善保存,请勿传播,9.4 对象模型,关于UML建模语言 UML已得到许多世界知名公司的使用和支持 1997年11月17日被OMG组织采纳,成为面向对象建模的标准语言 OMG已经把UML作为公共可得到的规格说明提交给国际标准化组织进行国际标准化,UML最终成为信息技术的正式国际标准 UML不论在计算机学术界、软件产业界还是在商业界,UML已经逐渐成为人们为各种系统建模、描述系统体系结构、商业体系结构和商业过程时使用的统一工具,而且在实践过程中人们还在不断扩展它的应用领域,个人成果,妥善保存,请勿传播,9.4 对象模型,对象模型 对象模型表示静态的、结构化的系统的“数据”性质 是对模拟客观世界实体的对象以及对象彼此间的关系的映射 建立对象模型时,我们的目标是从客观世界中提炼出对具体应用有价值的概念 OO方法强调围绕“对象”而不是“功能”来构造系统 对象模型为建立动态模型和功能模型提供了架构 UML使用类图来建立对象模型,个人成果,妥善保存,请勿传播,9.4 对象模型,9.4.1 类图的基本符号 类图描述类、类与类之间的静态关系,是一种静态模型,是创建其他UML图的基础 一个系统由多张类图来描述,一个类也可以出现在几张类图中 1 定义类 UML中类的图形符号为长方形,用两条横线把长方形分成上、中、下3个区域(下面两个区域可以省略) 为类命名时应该遵守以下几条准则: 使用标准术语 使用具有确切含义的名词 必要时用名词短语作为名字,类名,属性,服务,个人成果,妥善保存,请勿传播,9.4 对象模型,9.4.1 类图的基本符号 2 定义属性 UML描述属性的语法如下: 可见性 属性名:类型名=初值性质串 属性的可见性(即可访问性)通常有下述3种: 公有的(public) (+) 私有的(private) (-) 保护的(protected)(#) 类型名表示该属性的数据类型,它可以是基本数据类型,也可以是用户自定义的类型 用花括号括起来的性质串明列出该属性所有可能的取值 例: -管理员:String“未定”,类名,属性,服务,个人成果,妥善保存,请勿传播,9.4 对象模型,9.4.1 类图的基本符号 3 定义服务 UML描述操作的语法格式如下: 可见性 操作名(参数表):返回值类型性质串 操作可见性的定义方法与属性相同。 参数表是用逗号分隔的形式参数的序列。描述一个参数的语法如下: 参数名:类型名默认值 当操作的调用者未提供实在参数时,该参数就使用默认值。,类名,属性,服务,9.4 对象模型,9.4.2 表示关系的符号 类与类之间通常有关联、泛化(继承)、依赖和细化等4种关系 1 关联 关联表示两个类的对象之间存在某种语义上的联系 (1) 普通关联:最常见的关联关系,只要在类与类之间存在连接关系就可以用普通关联表示。 例
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号