首页 > 其他分享 >软件设计10

软件设计10

时间:2023-12-07 12:11:22浏览次数:33  
标签:10 软件设计 void AbstractFile System add public out

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

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

实验要求:

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

2.提交源代码;

 

 

//AbstractFile.java

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,add,public,out
From: https://www.cnblogs.com/renliqin/p/17881720.html

相关文章

  • Jamf Pro 10.27: IT管理员的幸福指数的又一次提升
    1JamfPro10.27,旨在提升IT管理员的幸福指数。我们听取了您的反馈和要求,并很荣幸为您带来此最新版本。JamfPro10.27专注于改善管理员的日常操作,使Jamf易于使用且设备管理更简单。我们已听取了反馈,并相信10.27会体现出这些工作流程的改进请求。此外,此版本还包括了与JamfProtect的......
  • Exploring Advanced WiFi 6 Solutions: QCN6122 vs. QCN6102 with IPQ5018 Platform
    ExploringAdvancedWiFi6Solutions:QCN6122vs.QCN6102withIPQ5018PlatformIntherealmofhigh-performanceWiFi6solutions,theQCN6122andQCN6102,bothintegratedwiththeIPQ5018platform,standoutfortheirversatilityinembeddedandindustrial......
  • 架构师的知行合一(内容由AI的全文生成,满分100分我打99分)
    大型架构是怎么来的随着科技的不断发展,越来越多的企业和组织开始意识到数字化转型的重要性。为了更好地适应市场的变化,满足客户的需求,提高企业的竞争力,大型架构成为了企业和组织不可或缺的一部分。那么,大型架构到底是怎么来的呢?本文将为您深入剖析。一、业务需求推动架构演进......
  • 初中英语优秀范文100篇-019A Meaningful Activity-一次有意义的活动
    PDF格式公众号回复关键字:SHCZFW019记忆树1I'malwayshappywhenImemorizethatmeaningfulactivity.翻译我总是很高兴,当我记住那些有意义的活动。简化记忆高兴句子结构这个句子的结构如下:主语:I(我)谓语:am(是)表语:alwayshappy(总是快乐)状语从句:whenIm......
  • 100G大表Alter更改表结构技术方案探讨
    JAVA研发需求:需要对A表的XXX字段扩容至varchar(500)目前的现状:线上A表有100G+的数据,如果直接modifyXXXvarchar(500),会锁全表,即使用pt-osc工具凌晨搞,预估一宿加不完,并且从库会出现大面积延迟,读取的数据将不准确。https://dev.mysql.com/doc/refman/8.0/en/innodb-online-ddl-opera......
  • P3205 [HNOI2010] 合唱队
    原题链接导入1.对于一个给定的序列,最后一个加进来的元素不是最左端就是最右端,如果是最左端,那么代表去掉最左端的序列中最后一个加进来的元素比最左端小,最右端同理。2.对于一个给定的序列,可能的排序结果无非两类,一类是以最左端的元素结尾的,一类是以最右端的元素结尾的。因此设\(......
  • 韩国网费比其他国家贵10倍?—— 因网费太高,直播平台 Twitch 宣布2024年2月退出韩国市场
    看新闻,说直播平台Twitch因为韩国的网费太贵宣布退出韩国,这个新闻给我看纳闷了,从来么有听说过哪个视频或直播公司因为网费贵而关停,这个估计是这种原因关停的第一家吧,于是比较好奇。 相关:https://www.ali213.net/news/html/2023-12/800437.htmlhttps://baijiahao.baidu.com/s?......
  • 第10章. 红黑树
    红黑树(RedBlackTree)红黑树性质null节点只是一种记号,并不存储真实数据,也不是红黑树中的实际节点,其作用是方便程序员在设计和编程时理解节点的操作规则,在实际应用中并没有实际意义。红黑树的等价变换红黑树和4阶B树(2-3-4树)具有等价性红黑树是平衡二叉搜索树,而B树是......
  • 打印1-100之间素数及其个数 点赞
    6-1打印1-100之间素数及其个数打印出1-100之间的全部素数及其个数,其中判断一个数是否为素数用函数实现。函数接口定义:intprime(intx)其中x是用户传入的参数,如果x是素数则函数返回1,否则函数返回0。裁判测试程序样例:#include<stdio.h>intprime(intx);intmain()......
  • 软件设计模式的七大原则
    1.单一职责原则一个类应该有且仅有一个引起它变化的原因例如实现登录功能,不应该设计一个类,即负责数据库的连接,又负责页面的初始化,又负责数据的接收和处理而应该把这些功能分开,分成多个不同的类,各司其职2.开闭原则一个软件实体应该对拓展开放对修改关闭,也就是说,当需要修改功......