面向对象方法学的基本原则 面向对象方法学认为:客观世界是由各种“对象”所组成的,任何事物都是 对象,每一个对象都有自己的运动 规律和内部状态,每一个对象都属于某个对象“类”,都是该对象类的一个元素。 复杂的对象可以是由相对比较 简单的各种对象以某种方式组成的。不同对象的相互作用就构成了我们要研究 分析和构造的客观系统 面向对象方法学认为:通过类比,发现对象间的相似性,即对象间的共同属 性,这就是构成对象类的根据。 面向对象方法学认为:对于已分成类的各个对象,可以通过定义一组“方法” 来说明该对象的功能,也即是:允许作 用于该对象上的各种操作。对象间的相互联系是通过传递“消息”来完成的。 面向对象方法学比较自然地模拟了人类认识客观世界的方法。即应使描述问 题的问题空间和解决问题的方法空间在结 构上尽可能地一致。我们分析设计和实现一个系统的方法尽可能接近我们认识 个系统的方法 面向对象的基本概念 对象 我们把客观世界的实体称之为问题空间的对象,任何事物都是对象 我们用计算机解题是借助某种语言规定对计算机实体施加某种动作,以此动作 的结果去映射解,我们把计算机实体 称之解空间的对象。 在面向对象的程序设计中,“对象”是系统中的基本运行实体。即对象是具有 特殊属性(数据)和行为方式(方法) 的实体 从动态的观点看,对象的操作就是对象的行为。问题空间对象的行为是极其 丰富的,而解空间对象的行为是极其死 板的。因此,只有借助于极其复杂的算法才能操纵解空间对象而得到解。面向对 象语言提供了“对象”概念,这样,程 序员就可以定义解空间对象 从存储的角度来看,“对象”是一片私有存储,其中有数据也有方法。其它对 象的方法不能直接操纵该对象的私有数 据,只有对象私有的方法才可以操纵它。 从对象的实现来看,“对象”是一台自动机,其中私有数据表示了对象的状态 该状态只能由私有的方法改变它。每 当需要改变对象的状态时,只能由其它对象向该对象发送消息,对象响应消息后 按照消息模式找出匹配的方法,并执行 该方法
面向对象方法学的基本原则 面向对象方法学认为:客观世界是由各种“对象”所组成的,任何事物都是 对象,每一个对象都有自己的运动 规律和内部状态,每一个对象都属于某个对象“类”,都是该对象类的一个元素。 复杂的对象可以是由相对比较 简单的各种对象以某种方式组成的。不同对象的相互作用就构成了我们要研究 分析和构造的客观系统。 面向对象方法学认为:通过类比,发现对象间的相似性,即对象间的共同属 性,这就是构成对象类的根据。 面向对象方法学认为:对于已分成类的各个对象,可以通过定义一组“方法” 来说明该对象的功能,也即是:允许作 用于该对象上的各种操作。对象间的相互联系是通过传递“消息”来完成的。 面向对象方法学比较自然地模拟了人类认识客观世界的方法。即应使描述问 题的问题空间和解决问题的方法空间在结 构上尽可能地一致。我们分析 设计和实现一个系统的方法尽可能接近我们认识 一个系统的方法。 面向对象的基本概念 一 对象 我们把客观世界的实体称之为问题空间的对象,任何事物都是对象。 我们用计算机解题是借助某种语言规定对计算机实体施加某种动作,以此动作 的结果去映射解,我们把计算机实体 称之解空间的对象。 在面向对象的程序设计中,“对象”是系统中的基本运行实体。即对象是具有 特殊属性(数据)和行为方式(方法) 的实体。 从动态的观点看,对象的操作就是对象的行为。问题空间对象的行为是极其 丰富的,而解空间对象的行为是极其死 板的。因此,只有借助于极其复杂的算法才能操纵解空间对象而得到解。面向对 象语言提供了“对象”概念,这样,程 序员就可以定义解空间对象。 从存储的角度来看,“对象”是一片私有存储,其中有数据也有方法。其它对 象的方法不能直接操纵该对象的私有数 据,只有对象私有的方法才可以操纵它。 从对象的实现来看,“对象”是一台自动机,其中私有数据表示了对象的状态, 该状态只能由私有的方法改变它。每 当需要改变对象的状态时,只能由其它对象向该对象发送消息,对象响应消息后 按照消息模式找出匹配的方法,并执行 该方法
对象的特征 1模块性:一个对象是一个可以独立存在的实体。从外部看这个模块,只 了解这个模快具有哪些功能,模快的内 部状态以及如何实现这些功能的细节都是“隐蔽”在模快的内部的。 2继承性和类比性:人们是通过对客观世界中的各种对象进行分类及合并 等方法来认识世界的,每个具体的对象 都是在它所属的某一类对象(类)的层次结构中占据一定的位置。下一层次的对 象继承了上一层次对象的某些属性。 另一方面,不同的对象具有某些相同的属性时,也常常把它们归并成一类 3动态连接性:我们把对象和对象间所具有的统一方便动态地连接和 传递消息的能力与机制称之为动态连接性 4易维护性 二消息和方法 1消息 对象间的相互联系是通过传递消息来实现的。消息用来请求对象执行某一处理或 回答某些信息的要求,消息统一了数 据流和控制流,程序的执行是靠在对象间传递消息来完成的。 发送消息的对象称为发送者,接受消息的对象称为接受者。消息中只包含发送者 的要求,消息完全由接受者解释,接 受者独立决定采用什么方式完成所需的处理。一个对象能接受不同形式不同内容 的多个消息,相同形式的消息可以送 往不同的对象,不同的对象对于形式相同的消息可以有不同的解释,能够做出不 同的反映。对于传来的消息,对象可 以返回响应的回答信息,但这种返回并不是必修的。 消息的形式用消息模式刻画,一个消息模式定义了一类消息,它可以对应内容不 同的消息。对于同一消息模式的不同 消息,同一个对象所做的解释和处理都是相同的,只是处理的结果可能不同。对 象固有处理能力按消息分类,一个消 息模式定义对象的一种处理能力。所以,只要给出对象的所有消息模式及相应于 每一个模式的处理能力,也就定义了 个对象的外部特征。消息模式不仅定义了对象所能受理的消息,而且还定义了 对象的固有处理能力。 2方法 把所有对象分成各种对象类,每个对象类都定义一组所谓的“方法”,它们实际 上可视为允许作用于诶对象上的各 种操作
对象的特征 1 模块性:一个对象是一个可以独立存在的实体。从外部看这个模块,只 了解这个模快具有哪些功能,模快的内 部状态以及如何实现这些功能的细节都是“隐蔽”在模快的内部的。 2 继承性和类比性:人们是通过对客观世界中的各种对象进行分类及合并 等方法来认识世界的,每个具体的对象 都是在它所属的某一类对象(类)的层次结构中占据一定的位置。下一层次的对 象继承了上一层次对象的某些属性。 另一方面,不同的对象具有某些相同的属性时,也常常把它们归并成一类。 3 动态连接性:我们把对象和对象间所具有的统一 方便 动态地连接和 传递消息的能力与机制称之为动态连接性。 4 易维护性 二 消息和方法 1 消息 对象间的相互联系是通过传递消息来实现的。消息用来请求对象执行某一处理或 回答某些信息的要求,消息统一了数 据流和控制流,程序的执行是靠在对象间传递消息来完成的。 发送消息的对象称为发送者,接受消息的对象称为接受者。消息中只包含发送者 的要求,消息完全由接受者解释,接 受者独立决定采用什么方式完成所需的处理。一个对象能接受不同形式不同内容 的多个消息,相同形式的消息可以送 往不同的对象,不同的对象对于形式相同的消息可以有不同的解释,能够做出不 同的反映。对于传来的消息,对象可 以返回响应的回答信息,但这种返回并不是必修的。 消息的形式用消息模式刻画,一个消息模式定义了一类消息,它可以对应内容不 同的消息。对于同一消息模式的不同 消息,同一个对象所做的解释和处理都是相同的,只是处理的结果可能不同。对 象固有处理能力按消息分类,一个消 息模式定义对象的一种处理能力。所以,只要给出对象的所有消息模式及相应于 每一个模式的处理能力,也就定义了 一个对象的外部特征。消息模式不仅定义了对象所能受理的消息,而且还定义了 对象的固有处理能力。 2 方法 把所有对象分成各种对象类,每个对象类都定义一组所谓的“方法”,它们实际 上可视为允许作用于诶对象上的各 种操作
三类和类层次 在面向对象程序设计中,“对象”是程序的基本单位,相似的对象可以归并到一 类中。 类由方法和数据组成,它是关于对象性质的描述,包括外部特性和内部实现两个 方面。类通过描述消息模式极其相应 的处理能力来定义对象的外部特性,通过描述内部状态的表现形式及固有处理能 力的实现来定义对象的内部实现 个类实际上定义的是一种对象类型,它描述了属于该类型的所有对象的性质。 对象是在执行过程中由其所属的类动态生成的,一个类可以生成多个不同的对 象。同一个类的对象具有相同的性质 一个对象的内部状态只能由其自身来修改。因此,同一个类的对象虽然在内部状 态的表现形式上相同,但可有不同的 内部状态。从理论上讲,类是一个抽象数据类型的实现。 个类的上层可以有超类,下层可以有子类,形成一种类层次结构。这种层次结 构的一个重要特点是继承性,一个类 继承其超类的全部描述。这种继承具有传递性。所有,一个类实际上继承了层次 结构中在其上面的所有类的全部描述 因此,属于某个类的对象除具有该类所描述的特性外,还具有层次结构中该类上 面所有类描述的全部特性。 抽象类是一种不能建立实例的类。抽象类将有关的类组织在一起,提供一个公共 的根,其它的子类从这个根派生出来 抽象类刻画了公共行为的特性并将着些特征传给它的子类。通常一个抽象类只描 述与这个类有关的操作接口,或是这 些操作的部分实现,完整的实现被留给一个或几个子类。抽象类已为一个特定的 选择器集合定义了方法,并且着些方 法服从某种语义,所以,抽象类的用途是用来定义一些协议或概念。 综上所述,类是一组对象的抽象,它将该种对象所具有的共同特征集中起来,由 该种对象所共享。在系统构成上,则 形成了一个具有特定功能的模块和一种代码共享的手段 四继承性 继承性是自动的共享类子类和对象中的方法和数据的机制。 每个对象都是某个类的实例,一个系统中类对象是各自封闭的。如果没有继承机 制,则类对象中数据和方法就可能出 现大量的重复 多重继承:如果一个类可以直接继承多个类,则着种继承方式称为多重继承。 简单继承:如果限制一个类至多只有一个超类,着种方式称为简单继承
三 类和类层次 在面向对象程序设计中,“对象”是程序的基本单位,相似的对象可以归并到一 类中。 类由方法和数据组成,它是关于对象性质的描述,包括外部特性和内部实现两个 方面。类通过描述消息模式极其相应 的处理能力来定义对象的外部特性,通过描述内部状态的表现形式及固有处理能 力的实现来定义对象的内部实现。 一个类实际上定义的是一种对象类型,它描述了属于该类型的所有对象的性质。 对象是在执行过程中由其所属的类动态生成的,一个类可以生成多个不同的对 象。同一个类的对象具有相同的性质。 一个对象的内部状态只能由其自身来修改。因此,同一个类的对象虽然在内部状 态的表现形式上相同,但可有不同的 内部状态。从理论上讲,类是一个抽象数据类型的实现。 一个类的上层可以有超类,下层可以有子类,形成一种类层次结构。这种层次结 构的一个重要特点是继承性,一个类 继承其超类的全部描述。这种继承具有传递性。所有,一个类实际上继承了层次 结构中在其上面的所有类的全部描述。 因此,属于某个类的对象除具有该类所描述的特性外,还具有层次结构中该类上 面所有类描述的全部特性。 抽象类是一种不能建立实例的类。抽象类将有关的类组织在一起,提供一个公共 的根,其它的子类从这个根派生出来。 抽象类刻画了公共行为的特性并将着些特征传给它的子类。通常一个抽象类只描 述与这个类有关的操作接口,或是这 些操作的部分实现,完整的实现被留给一个或几个子类。抽象类已为一个特定的 选择器集合定义了方法,并且着些方 法服从某种语义,所以,抽象类的用途是用来定义一些协议或概念。 综上所述,类是一组对象的抽象,它将该种对象所具有的共同特征集中起来,由 该种对象所共享。在系统构成上,则 形成了一个具有特定功能的模块和一种代码共享的手段。 四 继承性 继承性是自动的共享类 子类和对象中的方法和数据的机制。 每个对象都是某个类的实例,一个系统中类对象是各自封闭的。如果没有继承机 制,则类对象中数据和方法就可能出 现大量的重复。 多重继承:如果一个类可以直接继承多个类,则着种继承方式称为多重继承。 简单继承:如果限制一个类至多只有一个超类,着种方式称为简单继承
继承的四种类型 1替代继承:如果我们能够对类T的对象比类E的对象实施更多的操作, 就说类T继承类E,即在类E的对象 处,能够用类T的对象来替代。这种继承是基于方法而非值。 2包含继承:如果类T的每个对象也是类E的对象,则说类T是类E的 子对象。这种继承是基于结构而非操作 3限制继承:如果类E包括满足某种已知限定条件的类T的所有对象,则 类T是类E的一个子类 4特化继承:如果类E的对象是类T的对象,而T带有更多特殊信息,则 类T是类E的子类。 继承性是实现从可重用成分构造软件系统的最有效的特征,它不仅支持系统的可 重用性,而且还促进系统的可扩充性。 五封装性 封装是一种信息隐蔽技术,用户只能见到对象封装界面上的信息,对象内部 对用户是隐蔽的。封装的目的在于将对 象的使用者和对象的设计者分开,使用者不必知道行为实现的细节,只需用设计 者提供的消息来访问该对象。 封装的定义为: 1一个清晰的边界,所有的对象的内部软件的范围被限定在这个边界内。 2一个接口,这个接口描述这个对象和其它对象之间相互的作用。 3受保护的内部实现,这个实现给出了由软件对象提供的功能的细节,实 现细节不能在定义这个对象的类的外面 访问。 面向对象的语言以对象协议或规格说明作为对象的外界面。协议指明该对象 所接受的消息,在对象的内部,每个消 息响应一个方法,方法实施对数据的运算。对数据方法的描述是协议的实现部分 或叫类体。 显式地将对象的定义和对象的实现分开是面向对象系统的一大特色。 六多态性 当同样的消息可以送到一个父类的对象和子类的兑对象上时,这被称作多态 所谓多态即一名字可具有多种语义。在面向对象的语言中,多态引用表示可 引用多个类的实例。由于多态具有可表
继承的四种类型 1 替代继承:如果我们能够对类 T 的对象比类 E 的对象实施更多的操作, 就说类 T 继承类 E,即在类 E 的对象 处,能够用类 T 的对象来替代。这种继承是基于方法而非值。 2 包含继承:如果类 T 的每个对象也是类 E 的对象,则说类 T 是类 E 的 子对象。这种继承是基于结构而非操作。 3 限制继承:如果类 E 包括满足某种已知限定条件的类 T 的所有对象,则 类 T 是类 E 的一个子类 4 特化继承:如果类 E 的对象是类 T 的对象,而 T 带有更多特殊信息,则 类 T 是类 E 的子类。 继承性是实现从可重用成分构造软件系统的最有效的特征,它不仅支持系统的可 重用性,而且还促进系统的可扩充性。 五 封装性 封装是一种信息隐蔽技术,用户只能见到对象封装界面上的信息,对象内部 对用户是隐蔽的。封装的目的在于将对 象的使用者和对象的设计者分开,使用者不必知道行为实现的细节,只需用设计 者提供的消息来访问该对象。 封装的定义为: 1 一个清晰的边界,所有的对象的内部软件的范围被限定在这个边界内。 2 一个接口,这个接口描述这个对象和其它对象之间相互的作用。 3 受保护的内部实现,这个实现给出了由软件对象提供的功能的细节,实 现细节不能在定义这个对象的类的外面 访问。 面向对象的语言以对象协议或规格说明作为对象的外界面。协议指明该对象 所接受的消息,在对象的内部,每个消 息响应一个方法,方法实施对数据的运算。对数据方法的描述是协议的实现部分 或叫类体。 显式地将对象的定义和对象的实现分开是面向对象系统的一大特色。 六 多态性 当同样的消息可以送到一个父类的对象和子类的兑对象上时,这被称作多态 性。 所谓多态即一名字可具有多种语义。在面向对象的语言中,多态引用表示可 引用多个类的实例。由于多态具有可表
示对象的多个类的能力,因而,它既与动态类型有关又与静态类型有关。 多态性支持“同一接口,多种方法”。 面向对象分析 作为一个比较全面的方法,面向对象分析由五个主要步骤组成,即确定类与对 象,识别结构,识别主题,定义属性和 定义方法。一旦建立了模型,就可以由五个层次来表示,它们是 主题层主题给出分析模型的总体概貌。 对象层对象是数据及其处理的抽象。它反映了系统保存和处理现实世界中 某些事物的信息的能力。 结构层结构表示问题域的复杂性。类一成员结构反映了一般一特殊关 系,整体一部分结构反映了整体和部分 的关系。 属性层属性就是数据元素,可用来描述对象或分类结构的实例,可在图中 给出并在对象的存储中定义。 方法层方法是在收到消息后必须进行的处理,在图上定义它并在对象的存 储中指定。 确定类与对象 1什么是类对象 在面向对象分析中对象是一个封装体和抽象体,即是属性和处理这些属性的方 法的封装体以及问题域的抽象体。 类是对一个以上对象的共同属性和方法集合的描述,包括如何在一个类中建立 新对象的描述。 属性以及处理这些属性的方法的封装体对面向对象分析模型的稳定性影响很 大。首先,封装性是可以将属性和方法 看成一个不可分割的整体的基础。第二,封装性有助于减少重复劳动 在面向对象分析中,对问题域中某件事情的抽象是很重要的。事实上,在每次 分析活动中,分析人员必须首先理解 要分析的问题域。而将对象定义为现实世界的抽象,这样有助于深刻理解问题 域,从而获得系统模型。这种模型至 少可以产生一个现实的可观察且可管理的模型层集合,包括主题对象结 构属性和方法。 为什么要识别对象 识别对象的主要目的是为了使一个系统的技术表示同现实世界更为接近。这种 分析的表示和策略是依据人类的三种基本
示对象的多个类的能力,因而,它既与动态类型有关又与静态类型有关。 多态性支持“同一接口,多种方法”。 面向对象分析 作为一个比较全面的方法,面向对象分析由五个主要步骤组成,即确定类与对 象,识别结构,识别主题,定义属性和 定义方法。一旦建立了模型,就可以由五个层次来表示,它们是: 主题层 主题给出分析模型的总体概貌。 对象层 对象是数据及其处理的抽象。它反映了系统保存和处理现实世界中 某些事物的信息的能力。 结构层 结构表示问题域的复杂性。类—成员结构反映了一般 — 特殊关 系,整体 — 部分结构反映了整体和部分 的关系。 属性层 属性就是数据元素,可用来描述对象或分类结构的实例,可在图中 给出并在对象的存储中定义。 方法层 方法是在收到消息后必须进行的处理,在图上定义它并在对象的存 储中指定。 一 确定类与对象 1 什么是类 对象 在面向对象分析中对象是一个封装体和抽象体,即是属性和处理这些属性的方 法的封装体以及问题域的抽象体。 类是对一个以上对象的共同属性和方法集合的描述,包括如何在一个类中建立 新对象的描述。 属性以及处理这些属性的方法的封装体对面向对象分析模型的稳定性影响很 大。首先,封装性是可以将属性和方法 看成一个不可分割的整体的基础。第二,封装性有助于减少重复劳动。 在面向对象分析中,对问题域中某件事情的抽象是很重要的。事实上,在每次 分析活动中,分析人员必须首先理解 要分析的问题域。而将对象定义为现实世界的抽象,这样有助于深刻理解问题 域,从而获得系统模型。这种模型至 少可以产生一个现实的 可观察且可管理的模型层集合,包括主题 对象 结 构 属性和方法。 2 为什么要识别对象 识别对象的主要目的是为了使一个系统的技术表示同现实世界更为接近。这种 分析的表示和策略是依据人类的三种基本