软件架构与设计模式第四章习题.docx

上传人:夏** 文档编号:504587248 上传时间:2023-03-24 格式:DOCX 页数:16 大小:43.76KB
返回 下载 相关 举报
软件架构与设计模式第四章习题.docx_第1页
第1页 / 共16页
软件架构与设计模式第四章习题.docx_第2页
第2页 / 共16页
软件架构与设计模式第四章习题.docx_第3页
第3页 / 共16页
软件架构与设计模式第四章习题.docx_第4页
第4页 / 共16页
软件架构与设计模式第四章习题.docx_第5页
第5页 / 共16页
点击查看更多>>
资源描述

《软件架构与设计模式第四章习题.docx》由会员分享,可在线阅读,更多相关《软件架构与设计模式第四章习题.docx(16页珍藏版)》请在金锄头文库上搜索。

1、第4章习题与参考答案遗产文件更新系统:设计一个文档更新系统,对符合一定格式的输入文档进行更新。 系统功能包括:政治问题。将文档中出现的所有“The United States”改为“Republic of China”。 两千年(Y2K)问题。对文档中所出现的两位数日期形式“XX”改为“19XX”。 按行进行字典排序。即按照字母顺序,或者数字小大顺序,由小到大的形成序列。1. 将遗产文件的输入、政治问题、排序以及输出功能封装在四个类中,让它们实现 一个统一的对外接口 FileUpdatelnterface,每个类都实现一个update()方法从而实现上 述问题。Input类的update()

2、Jj法读入一个遗产文件的全部内容并保持原来的所有行并载 入到一个数据结构arrayList中,然后将其返回给调用者LegacyFileUpdateGUI对象。政 治问题、排序两个类的update()方法输入这个arrayList对象处理后返回给调用者 LegacyFi 1 eUpdateGUI同样经过更新的arrayList对象,Output类输入这个返回的 arrayList对象,然后将其内容写入到一个输出文本文件中,然后再将这个arrayList对象 送还调用者LegacyFileUpdateGUI o每次LegacyFi 1 eUpdateGUI接收到已经处理过的 arrayList对象

3、都将其内容显示在界面上。请基于Java采用面向对象架构实现系统设计。参考答案见随书附的电子资源作业4. 1。2. 使用顺序批处理架构实现遗产文件更新问题,要求Input对象将遗产文件 legacy, txt 次性从某个磁盘全部读入,检查格式,然后以一个中间文件形式存储到另一 个磁盘,并将文件内容显示在界面上,依次顺序为政治问题、排序和输出问题处理,每次 都从上一处理单元保存的文件处取文件并另外保存以及显示,最后Output能够保存并显示 最终结果。请基于Java开展设计。参考答案见随书附的电子资源作业4. 2o3. 使用可复用的管道-过滤器架构实现遗产文件问题。要求InputFilter过滤器

4、负责 从遗产文件读入字符型数据,然后以流的形式写入下游管道,并将处理过的数据显示到界 面上,依次执行Y2K问题,加注释以及输出过滤器,每次过滤器都是从它的上游管道读入 字符型数据,处理后显示并交给其下游管道对象,这里增加一个PipeLineBuilder创建类, 负责根据用户选择不同的管道路线创建管道与过滤器对象并组合在一起动态生成处理流程。 界面类负责接受用户输入,包括下拉列表显示的遗传文件和处理流程方案两个参数,然后 调用PipeLineBuilder并传给它参数。请基于Java开展设计。参考答案见随书附的电子资源作业4. 3o4. 请基于Java使用层次架构风格设计一个GUI用户系统,实

5、现三层架构,第一层为 用户界面层,负责与用户交互接受不同人的年龄输入,第二层为控制层,接收到界面层数 据变动时负责调用第三层的业务逻辑对象,由业务逻辑对象生成数据对应的柱状图同时输 出图形和数据到用户界面。参考答案:import java. awt. datal= new DataO ;data2 = new DataO ;data3 = new DataO ;dataO. name 二 jLabel2. getText ():dataO. value = Integer, parselnt (jTextFieldl. getText ();datal. name = jLabel3. get

6、Text ();datal. value = Integer, parselnt (jTextField2. getText (); data2. name 二 jLabel4. getText ();data2. value = Integer, parselnt(jTextField3. getText (); data3. name 二 jLabel5. getText ();data3. value = Integer, parselnt(jTextField4. getText(): Model m 二 new Model(data);this, model. changeModel

7、(m);public static void main(String args) Layer c = new Layer ();c. setSize (475, 350);c. setVisible(true);5. 请基于Java使用观察者模式事件风格实现如下图的计算器。参考答案:import javax. swing. *;import java.awt.*;import java. awt. event. *;public class Jsq extends JFrame implements ActionListenerdouble numl, num2, num3;boolean e

8、nd, add, mul, sub, div;JTextField t=new JTextField (0);JButton bl二newJButton b2=newJButton b3=newJButton b4=newJButton b5=newJButton b6=newJButton b7=newJButton b8=newJButton b9=newJButton(l);JButton(2);JButton (3);JButton(+);JButton(4”);JButton(5”);JButton(6);JButton(-);JButton(7);JButton(8);JButto

9、n(9);JButton(*);JButton (z/.”);JButton (0);JButton (二);JButton(/);JButton b10二newJButton bll=newJButton bl2=newJButton bl3=newJButton bl4二newJButton bl5=newJButton bl6二newJPanel pl=new JPanel():JPanel p2二new JPanel(): public JsqO setTitle(计算器”);setResizable(false);setBounds (100, 100, 230,230);setDe

10、faultCloseOperation(JFrame. EXIT_0N_CL0SE) add(pl, North);t. setEditable (false);t. setHorizontalAlignment(JTextField. CENTER);t. setColumns (18);t. setHorizontalAlignment(JTextField. RIGHT); pl. add(t);GridLayout l=new GridLayout(4, 0);1. setVgap(lO);setHgap (10);p2. setLayout (1);add(p2, Center);p

11、2. add (bl);p2. add(b2);p2. add (b3);p2. add(b4);p2. add (b5);p2. add (b6);p2. add(b7);p2. add (b8);p2. add (b9);p2. add (b 10);p2. add (bl 1);p2. add (bl2);p2. add (bl3);p2. add (bl4);p2. add (bl5);p2. add (bl6);JLabel ll=new JLabel ();I. setPreferredSize(new Dimension(10, 0); add(ll, West);JLabel

12、rl=new JLabel();rl.setPreferredSize(new Dimension(10, 0); add (rl, East);bl. addActionListener (this);b2. addActionListener (this);b3. addActionListener (this);b4. addActionListener (this);b5. addActionListener (this);b6. addActionListener (this);b7. addActionListener (this);b8. addActionListener (t

13、his);b9. addActionListener (this);blO. addActionListener (this);bll. addActionListener (this);bl2. addActionListener (this);bl3. addActionListener (this);bl4. addActionListener (this);bl5. addActionListener (this);bl6. addActionListener (this); setVisible (true);public static void main(String args)

14、Jsq f=new Jsq() :public void num(int i) String s二String, valueOf (i);if (end) ( 判断操作数输入是否结束t. setText (0);end二false;if (t. getText (). equals (0) 如果文本框的内容为零,则覆盖文本框的内容t. setText (s);else/如果文本框的内容不为零,则在内容后面添加数字String str= t. getText() + s;t. setText (str);public void sign(int i) if(i=l)add=true;mul=fa

15、lse;sub二false;div=false;if(i=2)add=false;mul二false;sub二true;div二false;if(i=3)add=false;mul=true;sub=false;div二false;if (i=4)add=false;mul=false;sub=false;div=true;numl二Double. parseDouble (t. getText ();end=true;)public void point () String s;if (t. getText (). indexOf ()0) s= t, getText ()+. ;t. setText (s) ;public void eql () num2=Double. parseDouble(t. getText (); if(add)num3=numl+num2;if(mul) num3=numl*num2;if (sub)num3=numl-num2;if(div) num3=numl/num2;String s=S

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 解决方案

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号