11.5实验10:组合模式

news/2024/11/18 8:53:42/文章来源:https://www.cnblogs.com/yindantong/p/18551615

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

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

实验要求:

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

  }

}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/836000.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【解密】什么样的跨网文件摆渡软件 可以让传输又简单又安全?

跨网文件摆渡软件,就是解决不同网络、网段、安全域之间的文件传输交换问题。这些网络和安全域之间,可能是纯物理隔离,也可能是用防火墙、VLAN、虚拟化这些手段做的逻辑隔离,但是不管是哪种隔离方式,最终都会用到跨网文件摆渡软件! 使用跨网文件摆渡软件的必要性 使用跨网…

11.21

在计算机主机(Mainframe)中,只需要按下主机的开机按钮(on()),即可调用其他硬件设备和软件的启动方法 ,如内存(Memory)的自检(check())、CPU的运行(run())、硬盘(HardDisk)的读取(read())、操作系统(OS)的载入(load()),如果某一过程发生错误则计算机启动失败。 实验要求:提…

C# 入门深度学习:万字长文讲解微积分和梯度下降

教程名称:使用 C# 入门深度学习 作者:痴者工良 地址: https://torch.whuanle.cn 目录微积分极限导数求导公式乘除求导例题复合函数求导的链式法则Sigmoid 函数的导数求最小值问题微分积分偏导数多元函数定义域多元函数的值多元函数的极限偏导数全微分偏导数求最小值拉格朗日…

11.19

实验10:组合模式 本次实验属于模仿型实验,通过本次实验学生将掌握以下内容: 1、理解组合模式的动机,掌握该模式的结构; 2、能够利用组合模式解决实际问题。 [实验任务一]:组合模式 用透明组合模式实现教材中的“文件夹浏览”这个例子。 实验要求:文件的执行不需真正实现…

数据分析:完整的成体系的生存分析的结果汇总

本章节全面汇总了生存分析的相关各类分析方法,形成了一个系统化的生存分析教程。通过这个教程,读者可以深入了解生存分析所涵盖的多种分析技术。详细情况请前往 数据分析:完整的成体系的生存分析的结果汇总 科研绘图系列:组合多个文章图 介绍 本章节全面汇总了生存分析的相…

20222417 2024-2025-1 《网络与系统攻防技术》实验六实验报告

1.本周内容回顾Metasploit Framework(MSF)是一款开源安全漏洞检测工具,附带数千个已知的软件漏洞,并保持持续更新。Metasploit可以用来信息收集、漏洞探测、漏洞利用等渗透测试的全流程,被安全社区冠以“可以黑掉整个宇宙”之名。旨在帮助安全专家和IT专家识别安全问题、验证…

Red Hat Enterprise Linux 9.5 发布下载,新增功能亮点概述

Red Hat Enterprise Linux 9.5 发布下载,新增功能亮点概述Red Hat Enterprise Linux 9.5 发布下载,新增功能亮点概述 Red Hat Enterprise Linux 9.5 (x86_64, aarch64) - 红帽企业 Linux RHEL 9 | 红帽企业 Linux 9 请访问原文链接:https://sysin.org/blog/rhel-9/ 查看最新…

2024.11.14(周四)

某物资管理系统中物资采购需要分级审批,主任可以审批1万元及以下的采购单,部门经理可以审批5万元及以下的采购单,副总经理可以审批10万元及以下的采购单,总经理可以审批20万元及以下的采购单,20万元以上的采购单需要开职工大会确定。现用职责链模式设计该系统。 实验要求:…

2024.11.15(周五)

某系统需要提供一个命令集合(注:可以使用链表,栈等集合对象实现),用于存储一系列命令对象,并通过该命令集合实现多次undo()和redo()操作,可以使用加法运算来模拟实现。 实验要求: 1. 提交类图; 2. 提交源代码; 3. 注意编程规范。1、类图2、源代码 #include<iostre…

C#/.NET/.NET Core技术前沿周刊 | 第 13 期(2024年11.11-11.17)

前言 C#/.NET/.NET Core技术前沿周刊,你的每周技术指南针!记录、追踪C#/.NET/.NET Core领域、生态的每周最新、最实用、最有价值的技术文章、社区动态、优质项目和学习资源等。让你时刻站在技术前沿,助力技术成长与视野拓宽。欢迎投稿、推荐或自荐优质文章、项目、学习资源等…

2024.11.13(周三)

婚介所其实就是找对象的一个代理,请仿照我们的课堂例子“论坛权限控制代理”完成这个实际问题,其中如果年纪小于18周岁,婚介所会提示“对不起,不能早恋!”,并终止业务。 实验要求: 1. 提交类图; 2. 提交源代码; 3. 注意编程规范。1、类图2、源代码 #include <iostr…

读数据质量管理:数据可靠性与数据质量问题解决之道07异常检测

异常检测1. 监控和异常检测 1.1. 在数据方面,所有明面上的测试和数据质量检查都不能完全保护你免受数据宕机的影响1.1.1. 宕机可能由于各种原因而出现在管道内部和外部的各个阶段1.1.2. 这些原因通常与数据本身无关1.2. 要了解数据何时中断,最好的做法是依靠数据监控,特别是…