管道 过滤器风格 java_完成基于管道过滤器风格的KWI实现.doc

完成基于管道过滤器风格的KWI实现.doc

实验2:软件体系结构风格实现

一、实验目的

初步了解不同的体系结构风格

掌握不同体系结构风格的实现

二、实验学时

4学时。

三、实验方法

根据KWIC的描述,用所熟悉的语言,完成实验内容。

四、实验环境

Windows7 旗舰版 jdkl.6 Eel ipse3. 7.0

五、实验内容

2)完成基于管道过滤器风格的KWIC实现

六、实验操作步骤

1. KWIC描述:KWIC索引系统接受一些行,每行有若干字,每个字由若干字 符组成;每行都可以循环移位。重复地把第一个字删除,然后接到行末;KWIC 把所有行的各种移位情况按照字母表顺序输出。

完成基于管道过滤器风格的KW1C实现

Main 类

package kwic pipe;

import java. io. File;

import java. util. Scanner;

public class Main {

public static void main(String[] args) {

File infile = new File("e:\\mykwic_in. txt");

File outfile = new File(z,e:\\mykwic out. txt");

Scanner inputfilc; Scanner outputfile;

trv{

inputflie = new Scanner (infile); outputfile = new Scanner(outfile):

//定义三个管道

Pipe pipel = new PipeO ;

Pipe pipe2 = new PipeO ;

Pipe pipe3 = new PipeO ;

//定义四种过滤器

Input input = new Input (infilc, pipel);

Shift shift = new Shift(pipel, pipe2);

Output output = new Output (pipe3, outfile);

//启动四种过滤器的线程

input, transform() shift, transform 0;

output, transform ();

//直接输出结果

System, out. print In (,z i nf lie ’0 ;

String str = null;

while (inputfile. hasNcxtLincO) {

str = inputfile. nextLineO :

System, out. print In (str);

}

System, out. prindn(〃input end〃);

Thread.sleep(3000);

System, out. printlnC outfile ");

while (outputfile. hasNextLine()){

System, out. print In (str);

}

inputfile. close0; outputfile. close():

}

catch (Exception e){ e. getMessage ();

}

}

}

Filter 类

package kwic_pipe;

import java. io. TOException;

public abstract class Filter { //定义输入管道 protected Pipe input;

//定义输岀管道

protected Pipe output: private boolean isStart = false;

Filter (Pipe input, Pipe output){ this, input = input: this.output = output;

}

//防止多次调用,调用之后线程开始执行

public void start(){

if(!isStart){

isStart = true;

Thread thread = new Thread (); thread, start ();

}

}

//线程的run方法 public void run(){

try{

this, transform();

)catch (IOExccption c){ e. getMessageO :

}

}

//将输入数据转换为所需数据并写入输出管道 //由子类实现抽象方法

protected abstract void transform()throws lOException;

}

Pipe 类

package kwic_pipe;

import java. io. TOException;

import java. io. PipedR

你可能感兴趣的:(管道,过滤器风格,java)