五、实验总结
(1) 单例模式以及策略模式,这是JAVA设计模式的两个非常重要的知识点。通过单例模
式可以保证系统中一个类只有一个实例,这在一些需求上是必要的。策略模式,对于用户来说,通过不同的选择,在代码中提供了不同的解决方式,但是这些解决方式都会走同一条路径去实现问题。这是策略模式提供的一个非常重要的思想。
(2) 对于创建单例这一点还有一种饱汉式单例模式,在类中并不先创建一个该类的实例
对象,而是在别处需要用时再创建而且仅能创建一个。
实验四
一、实验目的
增强使用文件I/O的能力
二、实验内容
实现FileCatalogLoader类,并实现GourmetCoffee类的writeFile方法。 三、实验步骤
(1) 分析要解决的问题,给出你的思路。要求在给出的Catalog.dat文件中,对数据进行切割,并通过判断进行分类,并添加到Catalog上,返回这个Catalog。GourmetCoffee类中writeFile方法要求对特定的文件名创建文件,并将Sales以设置好的格式写入。 (2) 根据对问题的分析,写出你的设计思路,可以用类图等表达。 (3) 给出你的关键数据结构设计。
FileCatalogLoader类的loadCatalog方法。
public Catalog loadCatalog(String fileName) throws
FileNotFoundException, IOException, DataFormatException { File file = new File(fileName); Catalog catalog=new Catalog();
if(!file.exists()||file.isDirectory()){ throw new FileNotFoundException(); }
BufferedReader br=new BufferedReader(new FileReader(file)); String temp=null;
while((temp=br.readLine())!=null){ if(temp.startsWith(\
catalog.addProduct(readProduct(temp)); }
else if(temp.startsWith(\
catalog.addProduct(readCoffee(temp)); } else{
catalog.addProduct(readCoffeeBrewer(temp)); } }
br.close(); return catalog; }
FileCatalogLoader类的readProduct方法。
private Product readProduct(String line)throws DataFormatException {
double d;
StringTokenizer st=new StringTokenizer(line,\ st.nextToken();
String code=st.nextToken();
String description=st.nextToken(); String price=st.nextToken(); try{
d = Double.parseDouble(price); }catch(Exception e){
throw new DataFormatException(); }
Product product=new Product(code,description,d); return product; }
(4) 描述你在进行实现时,主要的功能或方法的实现。 (5) 你在程序设计过程中遇到了怎样的问题?如何解决得? (6) 其它(你认为需要在此说明的)。
四、实验结果
测试FileCatalogLoader类。
测试GourmetCoffee类writeFile方法。
五、实验总结
理解和掌握StringTokenizer的用法,熟悉多种文件输入输出方法,能够熟练运用并做好异常处理。
实验五
一、实验目的
基本掌握JavaGUI的设计,Jlist,Jpanel,JtextArea。
二、实验内容
利用GUI设计出一个简单的商品信息查询界面。
三、实验步骤
(1) 问题是写一个方法,在点击Jlist里面的code时,在Product Information中以JtextArea形式展示出商品信息。信息需要从DataField中获得。并且按照指导书所给格式展示出来。 (2) 利用迭代器将DataField中的商品信息提取出来,在JPanel中,以JLabel展示信息的标题,具体内容用JtextField来展示,并设置为不可编辑。
(3) 实现代码如下:productPanel.setLayout(new GridLayout(10,3)); for (Iterator
(4) 对该panel设置了一下布局,表格形式9行2列。Iterator遍历获得dataFields中的信息,并将其存入存入m1(JLabel),m2(JTextField)中,最后将m1,m2添加进该panel中去。返回panel即可。
(5) 在返回panel对象的时候总是达不到不低效果,后来将returnproductPanel改为return new panel()即可。
四、实验结果
(1) 测试截图如下:
相关推荐: