共京部電大学 多态性 ◆多态性( polymorphism)是一种方法,指在不同的类中 可以定义相同的操作,而这些操作在这些类中可 以有不同的实现。 ◆简单说,当将子类对象的引用传给声明为父类的 个对象变量,如果子类有这个方法就调用子类 的方法,如果子类没有这个方法就调用父类的这 个方法。 ◆多态性也是一种特性,这种特性使得一个属性或 变量在不同时期可以表示不同类型的对象。从而 增加了代码的灵活性和扩展性 ⊙2008 BUPT TSEG 北京邮电大学通信软件工程中心 21
© 2008 BUPT TSEG 北京邮电大学 通信软件工程中心 21 多态性 ◆ 多态性(polymorphism)是一种方法,指在不同的类中 可以定义相同的操作,而这些操作在这些类中可 以有不同的实现。 ◆ 简单说,当将子类对象的引用传给声明为父类的 一个对象变量,如果子类有这个方法就调用子类 的方法,如果子类没有这个方法就调用父类的这 个方法。 ◆ 多态性也是一种特性,这种特性使得一个属性或 变量在不同时期可以表示不同类型的对象。从而 增加了代码的灵活性和扩展性
共京部電大学 多态性 ◆设有一个类,称为乐器,表示为 Instrument,在 该类中定义了一个操作 play( ◆类管乐器Wind、打击乐器 Percussion、弦乐器 Stringed和铜管乐器Bras继承类 Instrument而成 为该类的子类,不同的子类对play操作都有不 同的实现 的对象,并让这些对象执行pay操作4个子类 现在,需要写一段代码,分别创建上述 ◆如果要填加以个木管乐器 Woodwind,怎么修改 原有的代码? ⊙2008 BUPT TSEG 北京邮电大学通信软件工程中心 22
© 2008 BUPT TSEG 北京邮电大学 通信软件工程中心 22 多态性 ◆ 设有一个类,称为乐器,表示为Instrument,在 该类中定义了一个操作play(); ◆ 类管乐器Wind、打击乐器Percussion、弦乐器 Stringed和铜管乐器Brass继承类Instrument而成 为该类的子类,不同的子类对play操作都有不 同的实现。 ◆ 现在,需要写一段代码,分别创建上述4个子类 的对象,并让这些对象执行play操作。 ◆ 如果要填加以个木管乐器Woodwind,怎么修改 原有的代码?
共京部電大学 多态性 public class Music i ∥不用关心数组元素具体是绑定到哪种对象 static void tune All(Instrument[ e)( for(int 1=0; i<e length: 1++) ei]. play o: public static void main(Stringl args)( Instrument[ orchestra-new Instrument[ 14] int i=0 ∥将子类对象的引用赋值给引用父类对象的变量 orchestra[i++]=new Windo; orchestra[i++=new Percussion; orchestra[i++=new Stringed orchestra[++=new brasso; tuneAll(orchestra) ⊙2008 BUPT TSEG 北京邮电大学通信软件工程中心 23
© 2008 BUPT TSEG 北京邮电大学 通信软件工程中心 23 多态性 ◆ public class Music { ◆ // 不用关心数组元素具体是绑定到哪种对象 ◆ static void tuneAll(Instrument[] e) { ◆ for(int i = 0; i < e.length(); i++) ◆ e[i].play(); ◆ } ◆ public static void main(String[] args) { ◆ Instrument[] orchestra = new Instrument[4]; ◆ int i = 0; ◆ // 将子类对象的引用赋值给引用父类对象的变量 ◆ orchestra[i++] = new Wind(); ◆ orchestra[i++] = new Percussion(); ◆ orchestra[i++] = new Stringed(); ◆ orchestra[i++] = new Brass(); ◆ tuneAll(orchestra); ◆ } ◆ } //
共京部電大学 83面向对象的分析和设计方法 ◆8.3.1OOA/OOD ◆8.3.,2Booh方法 ◆8.3.3对象建模技术(OMT) ◆8.3.4面向对象软件工程方法(OOSE) ⊙2008 BUPT TSEG 北京邮电大学通信软件工程中心 24
© 2008 BUPT TSEG 北京邮电大学 通信软件工程中心 24 8.3 面向对象的分析和设计方法 ◆ 8.3.1 OOA/OOD ◆ 8.3.2 Booch方法 ◆ 8.3.3 对象建模技术(OMT) ◆ 8.3.4 面向对象软件工程方法(OOSE )
共京部電大学 8.3.100A/OOD ◆ OOA/OOD方法是由 Peter Coad和 Ed Yourdon在1991年提出 的。这是一种逐步进阶的面向对象建模方法,其特点是概 念清晰,简单易 OOA使用了基本的结构化原则并结合了面向对象的概念 包括确定类与对象、标识结构、定义主题、定义属性、定 义服务 ◆OOA的结果是结构化的文档,自顶向下包括五个层次 主题层(只有主题) 类与对象层(上层中加入类与对象) 结构层(上层中加入结构) 属性层(上层中加入属性) 服务层(上层中加入服务) ⊙2008 BUPT TSEG 北京邮电大学通信软件工程中心 25
© 2008 BUPT TSEG 北京邮电大学 通信软件工程中心 25 8.3.1 OOA/OOD ◆ OOA/OOD 方法是由Peter Coad和Ed Yourdon在1991年提出 的。这是一种逐步进阶的面向对象建模方法,其特点是概 念清晰,简单易学。 ◆ OOA使用了基本的结构化原则并结合了面向对象的概念, 包括确定类与对象、标识结构、定义主题、定义属性、定 义服务 ◆ OOA的结果是结构化的文档,自顶向下包括五个层次: ➢ 主题层(只有主题) ➢ 类与对象层(上层中加入类与对象) ➢ 结构层(上层中加入结构) ➢ 属性层(上层中加入属性) ➢ 服务层(上层中加入服务)