Chinaunix首页 | 论坛 | 博客
  • 博客访问: 14424663
  • 博文数量: 5645
  • 博客积分: 9880
  • 博客等级: 中将
  • 技术积分: 68081
  • 用 户 组: 普通用户
  • 注册时间: 2008-04-28 13:35
文章分类

全部博文(5645)

文章存档

2008年(5645)

我的朋友

分类:

2008-04-28 21:43:47

下载本文示例代码
  在JBuilder中通过重构将值域、方法在类的继承体系中上推下移,是非常容易的操作。这了说明这种重构功能,我们先来看下面的类继承体系: 图 15 类的继承类图  Animal类是Cat和Horse和父类,Animal中包含了两个值域和一个方法。可以将Animal中的值域有选择地下移到某个子类中。此外,还可以为Animal提炼超类和接口。  1、搬迁方法  打开Animal.java并将光标定位到howl()方法处,通过Ctrl Shift R->Push Down Method调出下移方法对话框: 图 16 下移方法  ·Method:下移的方法。  ·Keep as abstract in current class:表示在下移方法的同时将类转为抽象类。  ·Selected subclasses:列出当前类的所有子类,默认情况下方法将下移到所有子类中,我们取消Cat,仅将howl()下移到Horse中。   方法howl()中引用到Animal类的一个私有变量private int volume,在下移howl()后,该变量变为protected int volume。  上推和下移是相反的操作,负责将子类中的方法推到父类中去。保存并重新编译工程,打开Horse.java将光标置到howl()方法处:Ctrl Shift R->Pull Up Method调出上推的对话框: 图 17   上推方法  如果需上推的方法引用到了类中的其他方法,这些被引用的方法列在Select dependent members to moves列表中,一般情况下你需要将这些被引用的方法一起上移到父类中。  面向对象的一个重要特性即是子类共享父类的代码,所以当你发现子类的方法或值域是共享性的代码时,你就需要着手将这些代码推到父类中去了,这样代码的复用性将得到提升。  2、搬迁值域  Animal类中有两个值域: 1. protected int weight ;2. protected int volume = weight ;  我们希望将volume下移到子类Cat中,光标定位到volume处:Ctrl Shift R>Push Down Field调出下移值域的对话框: 图 18 下移值域  ·Field:需下移的值域。  ·Select subclasses:当前类的子类。在默认情况下,值域下移到所有的子类中,可以通过子类前的复选框作出选择,这里我们去除Horse类前的勾选,即仅下移到Cat中。  ·Select dependent members to move:和下移值域相关的所有值域,JBuilder通过下移值域右边的赋值语句找出所有关联的值域,通过关联值域前的复选框决定是否需要一起下移到子类。默认情况下,JBuilder将关联的属性weight随volume一起下移。  按OK后完成下移。编译工程,打开Horse.java,我们执行下移值域的反操作:上推值域到Animal类中。  光标定位在Horse.java的volume值域处:Ctrl Shift R->Pull Up Field调出上推值域对话框,如下图所示: 图 19   上推值域  点击OK后,volume值域被上推到Horse父类Animal中。  提示:  遗憾的是,JBuilder上推值域并不会像下移值域一样列出所有相关值域,只是简单的将值域声明代码行上推到父类中。所以如果在值域的定义代码行中引用了类中其它的值域,在上推到父为中时,将会发生语法错误,需要你手工解决。共2页。 1 2 :   在JBuilder中通过重构将值域、方法在类的继承体系中上推下移,是非常容易的操作。这了说明这种重构功能,我们先来看下面的类继承体系: 图 15 类的继承类图  Animal类是Cat和Horse和父类,Animal中包含了两个值域和一个方法。可以将Animal中的值域有选择地下移到某个子类中。此外,还可以为Animal提炼超类和接口。  1、搬迁方法  打开Animal.java并将光标定位到howl()方法处,通过Ctrl Shift R->Push Down Method调出下移方法对话框: 图 16 下移方法  ·Method:下移的方法。  ·Keep as abstract in current class:表示在下移方法的同时将类转为抽象类。  ·Selected subclasses:列出当前类的所有子类,默认情况下方法将下移到所有子类中,我们取消Cat,仅将howl()下移到Horse中。   方法howl()中引用到Animal类的一个私有变量private int volume,在下移howl()后,该变量变为protected int volume。  上推和下移是相反的操作,负责将子类中的方法推到父类中去。保存并重新编译工程,打开Horse.java将光标置到howl()方法处:Ctrl Shift R->Pull Up Method调出上推的对话框: 图 17   上推方法  如果需上推的方法引用到了类中的其他方法,这些被引用的方法列在Select dependent members to moves列表中,一般情况下你需要将这些被引用的方法一起上移到父类中。  面向对象的一个重要特性即是子类共享父类的代码,所以当你发现子类的方法或值域是共享性的代码时,你就需要着手将这些代码推到父类中去了,这样代码的复用性将得到提升。  2、搬迁值域  Animal类中有两个值域: 1. protected int weight ;2. protected int volume = weight ;  我们希望将volume下移到子类Cat中,光标定位到volume处:Ctrl Shift R>Push Down Field调出下移值域的对话框: 图 18 下移值域  ·Field:需下移的值域。  ·Select subclasses:当前类的子类。在默认情况下,值域下移到所有的子类中,可以通过子类前的复选框作出选择,这里我们去除Horse类前的勾选,即仅下移到Cat中。  ·Select dependent members to move:和下移值域相关的所有值域,JBuilder通过下移值域右边的赋值语句找出所有关联的值域,通过关联值域前的复选框决定是否需要一起下移到子类。默认情况下,JBuilder将关联的属性weight随volume一起下移。  按OK后完成下移。编译工程,打开Horse.java,我们执行下移值域的反操作:上推值域到Animal类中。  光标定位在Horse.java的volume值域处:Ctrl Shift R->Pull Up Field调出上推值域对话框,如下图所示: 图 19   上推值域  点击OK后,volume值域被上推到Horse父类Animal中。  提示:  遗憾的是,JBuilder上推值域并不会像下移值域一样列出所有相关值域,只是简单的将值域声明代码行上推到父类中。所以如果在值域的定义代码行中引用了类中其它的值域,在上推到父为中时,将会发生语法错误,需要你手工解决。共2页。 1 2 : 下载本文示例代码


JBuilder2005实现重构之类继承体系间JBuilder2005实现重构之类继承体系间JBuilder2005实现重构之类继承体系间JBuilder2005实现重构之类继承体系间JBuilder2005实现重构之类继承体系间JBuilder2005实现重构之类继承体系间JBuilder2005实现重构之类继承体系间JBuilder2005实现重构之类继承体系间JBuilder2005实现重构之类继承体系间JBuilder2005实现重构之类继承体系间JBuilder2005实现重构之类继承体系间JBuilder2005实现重构之类继承体系间JBuilder2005实现重构之类继承体系间JBuilder2005实现重构之类继承体系间JBuilder2005实现重构之类继承体系间
阅读(208) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~