922对象、类及类之间关系的分析 1.类与对象的关系 类给出了属于该类的全部对象的抽象定义,而对象则是符合 这种定义的 对象 类 (Instance 山地自行车:自行车 自行车类 类是静态的 型号:26 抽象成x… 型号 轮子尺寸 定义,但对 排挡 材料 和删除对象 抽象成、女式自行车:自行车 换挡 类代表一类 型号:24 移动 修理 在的类的实 图95类与对象的关系示意图 2021年1月27日 第9章面向对象方法学 第16页
2021年1月27日 第9章 面向对象方法学 第16页 9.2.2 对象、类及类之间关系的分析 1.类与对象的关系 ➢ 类给出了属于该类的全部对象的抽象定义,而对象则是符合 这种定义的一个实体。因此,对象又称为是类的一个“实例 (Instance)”,类又称为是对象的“模板(Template)” ➢ 类是静态的,类的语义和类之间的关系在程序执行之前已经 定义,但对象是动态的,在程序执行过程中可以动态地创建 和删除对象; ➢ 类代表一类抽象的概念或事物,对象是在客观世界中实际存 在的类的实例
922对象、类及类之间关系的分析 2.类与类之间的关系 (1)继承( nheritance) >继承是子类自动地共享父类中定义的数据和方法的机制 反过来,从子类抽取共同通用的特征形成父类的过程也叫 做泛化( Generalization) 继承可以表示类与类、接口与接口之间的继承关系,或类 单继承 多继承 交通工具 窗口 玩具 车 汽车 渡轮 火车 编辑窗口 对话窗口 玩具车 图96继承关系示意图 图97单继承和多继承示意图 2021年1月27日 第9章面向对象方法学 第17页
2021年1月27日 第9章 面向对象方法学 第17页 2.类与类之间的关系 (1)继承(Inheritance) ➢ 继承是子类自动地共享父类中定义的数据和方法的机制; ➢ 反过来,从子类抽取共同通用的特征形成父类的过程也叫 做泛化(Generalization); ➢ 继承可以表示类与类、接口与接口之间的继承关系,或类 与接口之间的实现关系; ➢ 具有继承关系的类之间,既具有共享特性又具有差别或新 增部分,并且类之间具有层次结构; ➢ 继承具有传递性。 9.2.2 对象、类及类之间关系的分析
922对象、类及类之间关系的分析 2.类与类之间的关系 (2)多态性( Polymorp Trap 指子类对象可以像父类对象那样 作名,然而却有不同的实现方氵 draw o 定义的属性或操作被子类继承 或表现出不同的行为 多态性的实现有两种形式: Circle Rectangle 编译时的多态性; draw o dra aw >运行时的多态性。 图98多态性示意图 2021年1月27日 第9章面向对象方法学 第18页
2021年1月27日 第9章 面向对象方法学 第18页 2.类与类之间的关系 (2)多态性(Polymorphism) 指子类对象可以像父类对象那样使用,它们可以共享一个操 作名,然而却有不同的实现方法,换句话说,指在父类中 定义的属性或操作被子类继承后可以具有不同的数据类型 或表现出不同的行为。 多态性的实现有两种形式: ➢ 编译时的多态性; ➢ 运行时的多态性。 9.2.2 对象、类及类之间关系的分析
922对象、类及类之间关系的分析 2.类与类之间的关系 (3)关联( Association) >关联体现的是两个类之间语义级别的一种强依赖关系, 般是长期性的,而且双方的关系一般是平等的。 >关联可以是单向的、双向的。 >表现在代码层面,被关联类B以类的属性形式出现在关联 类A中,也可能是关联类A引用了一个类型为被关联类B 的全局变量。 Class_A Class B 0.1 0. classB Class B 图99类之间单向关联示意图 2021年1月27日 第9章面向对象方法学 第19页
2021年1月27日 第9章 面向对象方法学 第19页 2.类与类之间的关系 (3)关联(Association) ➢ 关联体现的是两个类之间语义级别的一种强依赖关系,一 般是长期性的,而且双方的关系一般是平等的。 ➢ 关联可以是单向的、双向的。 ➢ 表现在代码层面,被关联类B 以类的属性形式出现在关联 类A 中,也可能是关联类A 引用了一个类型为被关联类B 的全局变量。 9.2.2 对象、类及类之间关系的分析
922对象、类及类之间关系的分析 关于关联关系和依赖关系有一个简单的判断原则: 某个类以成员变量的形式出现在另一个类中,二者 是关联关系;某个类以局部变量的形式出现在另 个类中,二者是依赖关系。 Class A Class b t depend( ClassB_class B): vold 图910类之间依赖关系示意图 2021年1月27日 第9章面向对象方法学 第20页
第9章 面向对象方法学 2.类与类之间的关系 (4)依赖(Dependancy) ➢ 依赖就是一个类A 使用到了另一个类B,而这种使用关系 是具有偶然性的、临时性的、非常弱的,但是类B 的变化 会影响到类A。 ➢ 表现在代码层面,假如类A 的某个方法中使用了类B,那 么就说类A 依赖于类B,它们是依赖关系。类B 在类A 中 都是以局部变量的形式存在的。 ➢ 在UML类图设计中,依赖关系用由类A 指向类B 的带箭 头虚线表示,虚线箭头表示依赖,箭头指向被依赖的类, 参见图9.10。 2021年1月27日 第20页 9.2.2 对象、类及类之间关系的分析 关于关联关系和依赖关系有一个简单的判断原则: 某个类以成员变量的形式出现在另一个类中,二者 是关联关系;某个类以局部变量的形式出现在另一 个类中,二者是依赖关系