首页 > 其他分享 >软件设计实验10:组合模式

软件设计实验10:组合模式

时间:2023-11-13 09:26:38浏览次数:28  
标签:10 组合 软件设计 void AbstractFile System fileName add public

实验10:组合模式

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

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

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

 

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

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

实验要求:

1. 文件的执行不需真正实现,只需简单提示即可;

 

 

2. 提交源代码;

public abstract class AbstractFile

{

    public abstract void add(AbstractFile element);

    public abstract void remove(AbstractFile element);

    public abstract void display();

}

 

 

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();

 

    }

}

 

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****");

    }

}

 

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");

    }

}

 

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");

    }

}

 

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");

    }

}

 

3.注意编程规范。

 

标签:10,组合,软件设计,void,AbstractFile,System,fileName,add,public
From: https://www.cnblogs.com/DREAM2021/p/17828430.html

相关文章

  • 软件设计实验11:装饰模式
    实验11:装饰模式本次实验属于模仿型实验,通过本次实验学生将掌握以下内容: 1、理解装饰模式的动机,掌握该模式的结构;2、能够利用装饰模式解决实际问题。 [实验任务一]:手机功能的升级用装饰模式模拟手机功能的升级过程:简单的手机(SimplePhone)在接收来电时,会发出声音提醒主人;而......
  • 2023-2024-1 20232421 《网络空间安全导论》第10周学习总结
    教材学习总结国内外网络安全的现状网络空间安全的内容网络空间安全受到重视的原因课程涵盖内容思维导图教材学习中的问题和解决过程问题1:混淆信息安全与网络空间安全的概念,并执着于将其区分开。问题1解决办法:研读教材:教材中由信息安全引出网络空间安全,援引信息论的论述......
  • 10月30日总结
    今天的上午进行了机器人的拆装实训,感觉还是比较简单的,毕竟是自己拆自己安装。下午进行了一次数据库连接的增删改查的web页面的可视化。感觉还是比较难,但是由于是限时测试,还是没有做完。还是在课下继续努力练习。......
  • 2023-2024-1 学号:20231310《计算机基础与程序设计》第7周学习总结
    作业信息这个作业属于哪个课程<班级的链接>https://www.cnblogs.com/rocedu/p/9577842.html#WEEK01这个作业要求在哪里<作业要求的链接>https://edu.cnblogs.com/campus/besti/2022-2023-1-CFAP/homework/12754这个作业的目标<自学教材计算机科学概论第8章并完成......
  • Win10完美克隆迁移120g ssd升级500g
    120gssd升级500g、win10完美克隆迁移只是后面多了三个螺丝、问题不大、反正能用!新的500gssd硬盘装硬盘盒,进入winPE,使用DiskGenius克隆旧硬盘的系统和资料到新硬盘;拆机打开笔记本内部,准备更新SSD新旧SSD的合照;进入系统,通过磁盘管理工具调整一下硬盘的分区,然后......
  • 每天5道Java面试题(第10天)
    1. 自己实现一个HashMap?HashMap的实现思路:1,利用key的hashCode计算当前对象在数组中的下标。2,存储时,如果出现hash值相同的key,此时有两种情况。(1)如果key相同,覆盖原始值;(2)如果key不同(出现冲突),则将当前key-value放入链表中3,获取值时,直接找到对应hash值对应的下标,再进行判断key是否相同,......
  • 龙芯发布 .NET 8 SDK 8.0.100-rc2 LoongArch64
    随着.NET8的发布的临近,国内的社区朋友们也很关心龙芯.NET团队对于Loongarch.NET8的发布时间,目前从龙芯.NET编译器团队的可靠信息,Loongarch.NET8的发布会在2023年11月14日正式发布后也会发布,从龙芯2019年启动.NET的研发工作,2022年完成了LoongArch64架构代码合并到.NET社区......
  • 2023.11.10测试
    \[\text{NOIP模拟赛-2023.11.10}\]T1进步科学一棵以\(1\)为根的\(n\)个点的树,初始时所有点的点权都是\(0\),每个点有期望的点权(\(0\)或\(1\))。每次操作可以选择一个点\(i\)变化它的点权,这个操作效果会在一秒后传给它的父亲,在\(j\)秒后传给它的\(j\)级祖先。特别的,......
  • 11.9~10
    上午就上了节化学就来机房了,试图用一种新的方式敲扫描线,然后失败,滚去做P1502窗口的星星了DZ别再直接把我一包纸拿走去上厕所了╰(‵□′)╯贺题解ing下午发现我的方法好像才是很新的方法,然而这道题好像和板子不太一样?反正没看到有我那种写法,恼了看着题解改一天了,都怀疑是我......
  • KubeSphere 社区双周报 | KubeSphere 3.4.1 发布 | 2023.10.27-11.09
    KubeSphere社区双周报主要整理展示新增的贡献者名单和证书、新增的讲师证书以及两周内提交过commit的贡献者,并对近期重要的PR进行解析,同时还包含了线上/线下活动和布道推广等一系列社区动态。本次双周报涵盖时间为:2023.10.27-2023.11.09。贡献者名单新晋KubeSphereCon......