面向对象系统分析和设计综合实验报告4 下载本文

西南科技大学计算机学院 《面向对象系统分析和设计》实验报告

@Override

public String fly() {

System.out.println(\亚音速飞行\); return \亚音速飞行\; } }

public interface state {

public String takeOff();//起飞 public String fly();//飞行 }

public class Client {

public static void main(String args[]) {

plane plane = new plane();

plane.setplanetype(\歼击机\); plane.takeoff(); plane.fly(); } }

3) 实现结果:

5. 儿子、妈妈、父亲三人合作画一幅画,儿子负责画出一朵花的轮廓,妈妈负责涂上颜色、父亲负责将画裱在画框里。现请使用装饰模式模拟这个过程。

1) 类图

9

西南科技大学计算机学院 《面向对象系统分析和设计》实验报告

2) 实现代码:

public interface painting { public String Draw();

}

public class Son implements painting{ @Override

public String Draw() {

System.out.println(\儿子用笔画出了花的轮廓\); return \儿子用笔画出了花的轮廓\; } }

public class Father implements painting{

private painting painting;//被装饰者 public Father(painting painting) { this.painting =painting; }

private Father() {} public void paint() {

//爸爸装饰者做的职责

System.out.println(\爸爸正在做上画框前的准备工作\); painting.Draw();//爸爸装饰者做职责

System.out.println(\父亲将画裱在画框里\); }

@Override

public String Draw() {

System.out.println(\父亲将画裱在画框里\); return \父亲将画裱在画框里\; } }

public class Mother implements painting{

private painting painting;//被装饰者

10

西南科技大学计算机学院 《面向对象系统分析和设计》实验报告

public Mother(painting painting) { this.painting =painting; }

private Mother() {} public void paint() {

System.out.println(\妈妈正在做给画上颜色前的准备工作。\); painting.Draw();//妈妈装饰者做的职责

System.out.println(\妈妈给画上好了颜色\); }

@Override

public String Draw() {

System.out.println(\妈妈给画上好了颜色\); return \妈妈给画上好了颜色\; }

}

public class Client {

public static void main(String[] args){ painting painting =new Son(); painting.Draw();

painting = new Mother(painting); painting.Draw();

painting = new Father(painting); painting.Draw(); }

}

3) 实现结果:

6. 某公司想通过网络传输数据,但是担心文件被窃取。他们的所有数据都采用字符的方式传送。现在他们开发了一个数据加密模块,可以对字符串进行加密,以便数据更安全地传送。最简单的加密算法通过对字母向后移动6位来实现,同时还提供了稍复杂的逆向输出加密,还提供了更为高级的求模加密,让每一位与6求模。

用户先使用最简单的加密算法对字符串进行加密,再对加密之后的结果使用复杂加密算

11

西南科技大学计算机学院 《面向对象系统分析和设计》实验报告 法进行二次加密,再对二次加密结果用高级加密算法进行第三次加密。现请使用装饰模式模拟这个过程。

1) 类图

2) 实现代码:

public class ConcreteEncrypt implements EncryptComponet{ private EncryptComponet encryptComponet;

public ConcreteEncrypt(EncryptComponet encryptComponet) { super();

this.encryptComponet = encryptComponet; }

public void encrypt() {

encryptComponet.encrypt(); }

}

public interface EncryptComponet { public abstract void encrypt();

}

public class RawData implements EncryptComponet{ public void encrypt() {

System.out.println(\这是要发送的数据\); } }

public class ReversEncrypt implements EncryptComponet{

public ReversEncrypt(EncryptComponet encryptComponet) { addReservesEncrypt(); }

12