首页 > 其他分享 >11.7

11.7

时间:2024-11-13 23:09:14浏览次数:1  
标签:11.7 AbstractFile System fileName add public out

实验10:组合模式

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

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

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

 

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

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

实验要求:

 

类图

 

 

源代码

1、AbstractFile.java

package org.example.shiyanshi;

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

 

2、TextFile.java

package org.example.shiyanshi;

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.println(fileName);
        System.out.println(" TextFile");
    }
}

 

3、VideoFile.java

package org.example.shiyanshi;

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.println(fileName);
        System.out.println(" VideoFile");
    }
}

 

4、ImageFile.java

package org.example.shiyanshi;

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.println(fileName);
        System.out.println(" ImageFile");
    }
}

 

5、Folder.java

package org.example.shiyanshi;

import java.util.ArrayList;

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

 

6、Client.java

package org.example.shiyanshi;

public class Client {
    public static void main(String[] args) {
        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();
    }
}

运行结果截图

 

 

 

标签:11.7,AbstractFile,System,fileName,add,public,out
From: https://www.cnblogs.com/zzqq1314/p/18545037

相关文章

  • CTF学习24.11.7[日志分析和流量分析]
    MISC03日志分析和流量分析01日志分析什么是日志?Web访问日志记录了Web服务器接收处理请求及运行时错误等各种原始信息。通过对Web日志进行的安全分析,不仅可以帮助我们定位攻击者,还可以帮助我们还原攻击路径,找到网站存在的安全漏洞并进行修复。日志记录的内容计算机日志是......
  • GitHub每日最火火火项目(11.7)
    项目名称:DataExpert-io/data-engineer-handbook项目介绍:“DataExpert-io/data-engineer-handbook”是一个非常有价值的资源库。这个项目收集了与数据工程相关的各种学习链接,涵盖了数据工程领域的方方面面。对于想要深入了解数据工程的人来说,它就像是一个知识宝库。无论是......
  • 2024.11.7随笔
    前言觉得就两三个人在机房安静自习真的好,有很多事情要做,规划好后按计划走不会感到迷茫而无所适从,头脑中也有时间的意识。只能说我个人比较喜欢对时间的掌控感,也喜欢安静的环境。明天大家就都要归队了,不知道下一次这么安静又要等到多久?写题今天水了个三倍经验所以就过了六道题,然......
  • 11.7 HTML
    Html一、基本介绍1、定义:html是一种超文本标记语言,也是一种标识性语言(不是编程语言)标记:记号(绰号)超文本:就是页面内容可以包含图片、链接,音乐,视频等素材。2、为什么学习html?(1)测试页面元素,了解页面页面元素(页面是html语言编写的)(2)进行ui自动化需用到元素定位3、html有哪些特点......
  • 11.7日
    创建一个新的DynamicWebProject打开Eclipse。选择File->New->DynamicWebProject。在弹出的对话框中,输入项目名称,例如MyWebApp。确保Targetruntime设置为ApacheTomcatv9.0(或其他你安装的Tomcat版本)。如果没有配置,点击NewRuntime按钮进行配置。点击Finish......
  • 11.7
    通过PreparedStatement实现对数据库的插入和查询操作。importjava.sql.Connection;importjava.sql.DriverManager;importjava.sql.PreparedStatement;importjava.sql.ResultSet;publicclassPreparedStatementExample{publicstaticvoidmain(String[]args){Strin......
  • [考试记录] 2024.11.7 noip模拟赛7
    基础暴力分300pts......
  • 11.7 html
    html一、基本介绍1、定义:html是一种超文本标记语言,也是一种标识性语言(不是编程语言)标记:记号(绰号)超文本:就是页面内容可以包含图片、链接,音乐,视频等素材。2、为什么学习html?(1)测试页面元素,了解页面页面元素(页面是html语言编写的)(2)进行ui自动化需用到元素定位3、html有哪些特点......
  • 基于开源IM即时通讯框架MobileIMSDK:RainbowChat v11.7版已发布
    关于RainbowChatRainbowChat是一套基于开源IM聊天框架 MobileIMSDK 的产品级移动端IM系统。RainbowChat源于真实运营的产品,解决了大量的屏幕适配、细节优化、机器兼容问题(可自行下载体验:专业版下载安装)。* RainbowChat可能是市面上提供im即时通讯聊天源码的,唯一一款同时支持T......
  • 【漏洞复现】通达OA v11.7 moare 反序列化漏洞
    免责声明:        本文内容旨在提供有关特定漏洞或安全漏洞的信息,以帮助用户更好地了解可能存在的风险。公布此类信息的目的在于促进网络安全意识和技术进步,并非出于任何恶意目的。阅读者应该明白,在利用本文提到的漏洞信息或进行相关测试时,可能会违反某些法律法规......