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

11.5实验10:组合模式

时间:2024-11-18 08:47:30浏览次数:1  
标签:10 组合 11.5 void AbstractFile ele add TODO public

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

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

实验要求:

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

2.提交源代码;

3.注意编程规范。

 

 

public abstract class AbstractFile {

 

    public abstract void add(AbstractFile ele);

    public abstract void remove(AbstractFile ele);

    public abstract void display();

 

}

 

 

import java.util.ArrayList;

 

public class Folder extends AbstractFile{

 

    private String filename;

    private ArrayList al=new ArrayList<>();

    

 

    public Folder(String f) {

        filename=f;

    }

    @Override

    public void add(AbstractFile ele) {

        // TODO Auto-generated method stub

        al.add(ele);

        System.out.println("Folder add");

    }

 

    @Override

    public void remove(AbstractFile ele) {

        // TODO Auto-generated method stub

        al.remove(ele);

        System.out.println("Folder remove");

    }

 

    @Override

    public void display() {

        // TODO Auto-generated method stub

        for(Object object:al)

        {

            ((AbstractFile)object).display();

        }

        System.out.println("Folder:display");

 

    }

 

}

 

 

public class ImageFile extends AbstractFile{

 

    private String filename;

    

    public ImageFile(String f) {

        filename=f;

    }

    @Override

    public void add(AbstractFile ele) {

        // TODO Auto-generated method stub

        System.out.println("添加Image文件");

    }

 

    @Override

    public void remove(AbstractFile ele) {

        // TODO Auto-generated method stub

        System.out.println("删除Image文件");

    }

 

    @Override

    public void display() {

        // TODO Auto-generated method stub

        System.out.println("展示Image文件"+filename);

    }

 

}

 

 

public class TextFile extends AbstractFile{

 

    private String filename;

    

    public TextFile(String f) {

        filename=f;

    }

    @Override

    public void add(AbstractFile ele) {

        // TODO Auto-generated method stub

        System.out.println("添加Text文件");

    }

 

    @Override

    public void remove(AbstractFile ele) {

        // TODO Auto-generated method stub

        System.out.println("删除Text文件");

    }

 

    @Override

    public void display() {

        // TODO Auto-generated method stub

        System.out.println("展示Text文件"+filename);

    }

 

}

 

 

 

 

public class VideoFile extends AbstractFile{

 

    private String filename;

    

    public VideoFile(String f) {

        filename=f;

    }

    @Override

    public void add(AbstractFile ele) {

        // TODO Auto-generated method stub

        System.out.println("添加Video文件");

    }

 

    @Override

    public void remove(AbstractFile ele) {

        // TODO Auto-generated method stub

        System.out.println("删除Video文件");

    }

 

    @Override

    public void display() {

        // TODO Auto-generated method stub

        System.out.println("展示Video文件"+filename);

    }

 

}

 

 

 

public class Client {

    public static void main(String a[])

    {

        AbstractFile obj1,obj2,obj3,obj4,obj5;

        Folder plate1,plate2,plate3;

        obj1=new ImageFile("aaa.png");

        obj2=new TextFile("bbb.txt");

        plate1=new Folder("ccc");

        plate1.add(obj1);

        plate1.add(obj2);

        

        obj3=new VideoFile("ddd.mp3");

        obj4=new VideoFile("eee.mp3");

        plate2=new Folder("fff");

        plate2.add(obj3);

        plate2.add(obj4);

        

        obj5=new ImageFile("ggg.jpg");

        plate3=new Folder("hhh");

        plate3.add(plate1);

        plate3.add(plate2);

        plate3.add(obj5);

        

        plate3.display();

  }

}

标签:10,组合,11.5,void,AbstractFile,ele,add,TODO,public
From: https://www.cnblogs.com/yindantong/p/18551615

相关文章

  • 7.1 7.3 7.4 7.7 7.10
    7.1点击查看代码importnumpyasnpimportscipy.interpolateasspiimportscipy.integrateasspi_integratedefg(x):return((3*x**2+4*x+6)*np.sin(x))/(x**2+8*x+6)x_values=np.linspace(0,10,1000)y_values=g(x_values)spline=spi.C......
  • P10124 [USACO18OPEN] Family Tree B 题解
    思路这道题目很像找\(2\)头牛的最近公共祖先,即lca,但是并不用那么麻烦.因为数据很小,我们可以写一个山寨版的lca.具体如下.intmother(stringx,stringy){ intres=0; while(y!=""){//有名字的牛 if(x==y)returnres;//两头牛的名字相等,说明是同......
  • 010 Including Bootstrap 4
    CDNGetstartedwithBootstrap·Bootstrapv5.3Template<!doctypehtml><htmllang="en"><head><metacharset="utf-8"><metaname="viewport"content="width=device-width,initial-scal......
  • P1045麦森数
    使用对数lg直接估算所求位数,每次乘以2^60大大加快速度(不够60再乘以更小的)9*2^60为10,376,293,541,461,622,784刚好不会超ull范围(18,446,744,073,709,551,616)#include<iostream>#include<cstdio>#include<cmath>usingnamespacestd;typedefunsignedlonglongull;......
  • 10.C++面向对象7(友元,匿名对象)
    ⭐本篇重点:友元,内部类,匿名对象⭐本篇代码:c++学习/03.c++类与对象-下篇·橘子真甜/c++-learning-of-yzc-码云-开源中国(gitee.com)目录一.友元1.1友元函数 1.2友元类 二.匿名对象 一.友元友元分为友元函数和友元类,它可以帮助我们突破封装的限制。在......
  • 20241023 模拟赛
    20241023模拟赛A.浇水考虑统计每个点被浇水了几次,容易用二维前缀和维护,最后如果这个点在对应颜色的矩阵里就扣除一个次数,最后有次数的就枯萎。B.藤养巴士赛时考虑树形dp,和树上差分解法殊途同归。设\(f_u\)表示,假设所有目标在\(u\)子树中的人都已经到了\(u\)子树中,......
  • 20241022 模拟赛
    20241022模拟赛A.枚举高手考虑dp,设\(f_{i,j}\)表示考虑到第\(i\)个数,和为\(j\)的答案,\(g_{i,j}\)表示方案数。考虑两种转移:一种是在原序列的末尾加上一个\(1\),一种是把现有的数一起加上\(1\),容易发现这样既能保证有序性又能不重不漏。时间复杂度\(O(nm)\)。最近总......
  • 10款免费开源的CMS建站系统,拿去接活吧!
    以下是10款轻量级免费开源CMS建站系统,支持独立建站私有化部署,并标注是否支持商用,拿去接私活吧:1.WordPress简介:WordPress是开源CMS。支持商用:✅可商用(GPLv2.0许可证)。特点:插件和主题生态。对SEO友好,适合博客、企业网站。2.DedeCMS(织梦CMS)简介:国内流行的......
  • 102. 二叉树的层序遍历【 力扣(LeetCode) 】
    文章目录零、原题链接一、题目描述二、测试用例三、解题思路四、参考代码零、原题链接102.二叉树的层序遍历一、题目描述给你二叉树的根节点root,返回其节点值的层序遍历。(即逐层地,从左到右访问所有节点)。二、测试用例示例1:输入:root=[3,9,20,null,nul......
  • STM32F103开发
    本节我们将会对STM32的硬件资源进行介绍,包括如下内容:点亮LED;检测按键按下和松开事件;串口;点亮128*128TFT_LCD液晶屏;一、点亮LED1.1电路原理图LED电路原理图如下图所示:其中:LED1连接到PA8`引脚,低电平点亮;LED2连接到PD2引脚,低电平点亮;1.2GPIO引脚介绍STM32F103RTC......