首页 > 其他分享 >实验10:组合模式

实验10:组合模式

时间:2023-11-26 09:13:45浏览次数:27  
标签:10 组合 void AbstractFile System add 实验 public out

实验10:组合模式

本次实验属于模仿型实验,通过本次实验学生将掌握以下内容:

1、理解组合模式的动机,掌握该模式的结构;

2、能够利用组合模式解决实际问题。

 

[实验任务一]:组合模式

用透明组合模式实现教材中的“文件夹浏览”这个例子。

实验要求:

1. 类图如下

 

 

2. 源代码以及相关截图;

运行截图

 

 

源代码

 

package a10;  
public abstract class AbstractFile  
{  
public abstract void add(AbstractFile element);  
public abstract void remove(AbstractFile element);  
public abstract void display();  
}  
 

package a10;  
import java.util.*;  
public class Folder extends AbstractFile  
{  
private String fileName;  
private ArrayList<AbstractFile> fileList=new ArrayList();  
public Folder(String filename)  
{  
this.fileName=new String();  
this.fileName=filename;  
}  
public void add(AbstractFile element)  
{  
fileList.add(element);  
System.out.println("add Folder");  
}  
public void remove(AbstractFile element)  
{  
fileList.remove(element);  
System.out.println("remove Folder");  
}  
public void display()  
{  
System.out.println(fileName);  
for(Object object:fileList)  
{  
((AbstractFile)object).display();  
}  
System.out.println("****Folder display****");  
}  
}  
package a10;  
public class ImageFile extends AbstractFile  
{  
private String fileName;  
public ImageFile(String filename)  
{  
this.fileName=new String();  
this.fileName=filename;  
}  
public void add(AbstractFile element)  
{  
System.out.println("add ImageFile");  
}  
public void remove(AbstractFile element)  
{  
System.out.println("remove ImageFile");  
}  
public void display()  
{  
System.out.print(fileName);  
System.out.println(" ImageFile");  
}  
}  
package a10;  
public class TextFile extends AbstractFile  
{  
private String fileName;  
public TextFile(String filename)  
{  
this.fileName=new String();  
this.fileName=filename;  
}  
public void add(AbstractFile element)  
{  
System.out.println("add TextFile");  
}  
public void remove(AbstractFile element)  
{  
System.out.println("remove TextFile");  
}  
public void display()  
{  
System.out.print(fileName);  
System.out.println(" TextFile");  
}  
}  
package a10;  
public class VideoFile extends AbstractFile  
{  
private String fileName;  
public VideoFile(String filename)  
{  
this.fileName=new String();  
this.fileName=filename;  
}  
public void add(AbstractFile element)  
{  
System.out.println("add VideoFile");  
}  
public void remove(AbstractFile element)  
{  
System.out.println("remove VideoFile");  
}  
public void display()  
{  
System.out.print(fileName);  
System.out.println(" VideoFile");  
}  
}  
package a10;  
public class Client  
{  
public static void main(String a[])  
{  
AbstractFile obj1,obj2,obj3,obj4;  
Folder plate1,plate2,plate3;  
obj1=new ImageFile("a.jpg");  
obj2=new TextFile("b.txt");  
plate1=new Folder("Image_Text");  
plate1.add(obj1);  
plate1.add(obj2);  
obj3=new VideoFile("c.mp4");  
plate2=new Folder("Image_Video");  
plate2.add(obj1);  
plate2.add(obj3);  
obj4=new ImageFile("d.jpg");  
plate3=new Folder("Image_Text_Video_Folder");  
plate3.add(plate1);  
plate3.add(plate2);  
plate3.add(obj4);  
plate3.display();  
}  

 

 

 

 

 

 

标签:10,组合,void,AbstractFile,System,add,实验,public,out
From: https://www.cnblogs.com/130-gzh/p/17856525.html

相关文章

  • 实验9:桥接模式
    实验9:桥接模式本次实验属于模仿型实验,通过本次实验学生将掌握以下内容:1、理解桥接模式的动机,掌握该模式的结构;2、能够利用桥接模式解决实际问题。 [实验任务一]:两个维度的桥接模式用桥接模式实现在路上开车这个问题,其中,车可以是car或bus,路可以是水泥路或沥青路。实验要求......
  • 实验6:原型模式
    实验6:原型模式本次实验属于模仿型实验,通过本次实验学生将掌握以下内容:1、理解原型模式的动机,掌握该模式的结构;2、能够利用原型模式解决实际问题。 [实验任务一]:向量的原型用C++完成数学中向量的封装,其中,用指针和动态申请支持向量长度的改变,使用浅克隆和深克隆复制向量类,比......
  • 实验7:单例模式
    实验7:单例模式本次实验属于模仿型实验,通过本次实验学生将掌握以下内容:1、理解单例模式的动机,掌握该模式的结构;2、能够利用单列模式解决实际问题。 [实验任务一]:学号的单一仿照课堂的身份证的例子,实现每个同学仅有一个学号这一问题。实验要求:1. 画出对应的类图;  ......
  • 实验8:适配器模式
    实验8:适配器模式本次实验属于模仿型实验,通过本次实验学生将掌握以下内容:1、理解适配器模式的动机,掌握该模式的结构;2、能够利用适配器模式解决实际问题。 [实验任务一]:双向适配器实现一个双向适配器,使得猫可以学狗叫,狗可以学猫抓老鼠。实验要求:1. 对应的类图如下;  ......
  • 编译原理实验
       掌握了LR法进行语法分析的原理,掌握了语法分析器的设计与调试......
  • 第10次-创建一个在线网站
    这个作业属于哪个课程https://edu.cnblogs.com/campus/uzz/cs3这个作业要求在哪里https://edu.cnblogs.com/campus/uzz/cs3/homework/13118这个作业的目标第10次-创建一个在线网站创建一个在线网站我是使用阿里云服务器为平台做了一个在线网站网站的链接:http:......
  • 2023-2024-1 20231410刘珈岐 《计算机基础与程序设计》第9周学习总结
    2023-2024-120231410刘珈岐《计算机基础与程序设计》第9周学习总结作业信息这个作业属于哪个课程(https://edu.cnblogs.com/campus/besti/2023-2024-1-CFAP)这个作业要求在哪里(https://www.cnblogs.com/rocedu/p/9577842.html#WEEK08))这个作业的目标自学教材《......
  • P1091 合唱队形题解(普及/提高−) 题解
    题目传送门这道题是一个很经典的动态规划。因为合唱队形的身高是从低——高——低来排的,所以就可以利用分治的思想将队形分成两个部分:低——高是最长上升子序列;高——低是最长下降子序列。这道题其实可以用二分查找来优化,可是这题n≤100,没有必要优化,需优化题详见P1020导弹拦截......
  • oracle数据库实验
       进行oracle数据库的学习,掌握数据的插入(INSERT)、修改(UPDATE)和删除(DELETE)操作。 掌握不同类型的数据查询(SELECT)操作。......
  • 初中英语优秀范文100篇-008 My Best Friend and I
    PDF格式公众号回复关键字:SHCZFW008记忆树1MynameisMary.翻译我的名字是玛丽简化记忆玛丽句子结构主语(Subject):Myname(我的名字)谓语(Predicate):is(是)表语(PredicateNominative):Mary(玛丽)主语“myname”是一个复合主语,它由代词“my”和名词“name”组成,代表......