首页 > 其他分享 >番外-软件设计(7)

番外-软件设计(7)

时间:2023-11-09 12:33:58浏览次数:34  
标签:软件设计 番外 AbstractFile System add void public out

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

实验要求:

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.注意编程规范。

标签:软件设计,番外,AbstractFile,System,add,void,public,out
From: https://www.cnblogs.com/zjsdbk/p/17819445.html

相关文章

  • 番外-软件设计(8)
    用装饰模式模拟手机功能的升级过程:简单的手机(SimplePhone)在接收来电时,会发出声音提醒主人;而JarPhone除了声音还能振动;更高级的手机(ComplexPhone)除了声音、振动外,还有灯光闪烁提示。实验要求:1. 提交类图; 2.提交源代码;packageDecorative_pattern; publicclassClien......
  • 软件设计实验8:适配器模式
    实验8:适配器模式本次实验属于模仿型实验,通过本次实验学生将掌握以下内容:1、理解适配器模式的动机,掌握该模式的结构;2、能够利用适配器模式解决实际问题。 [实验任务一]:双向适配器实现一个双向适配器,使得猫可以学狗叫,狗可以学猫抓老鼠。实验要求:1. 画出对应的类图; 2.......
  • 软件设计实验9:桥接模式
    实验9:桥接模式本次实验属于模仿型实验,通过本次实验学生将掌握以下内容:1、理解桥接模式的动机,掌握该模式的结构;2、能够利用桥接模式解决实际问题。 [实验任务一]:两个维度的桥接模式用桥接模式实现在路上开车这个问题,其中,车可以是car或bus,路可以是水泥路或沥青路。实验要求......
  • 软件设计3
    [实验任务一]:加密算法目前常用的加密算法有DES(DataEncryptionStandard)和IDEA(InternationalDataEncryptionAlgorithm)国际数据加密算法等,请用工厂方法实现加密算法系统。实验要求:1. 画出对应的类图;  2. 提交该系统的代码,该系统务必是一个可以能够直接使用的系统,查阅......
  • 软件设计2
    [实验任务一]:女娲造人使用简单工厂模式模拟女娲(Nvwa)造人(Person),如果传入参数M,则返回一个Man对象,如果传入参数W,则返回一个Woman对象,如果传入参数R,则返回一个Robot对象。请用程序设计实现上述场景。实验要求:1. 画出对应的类图;  2. 提交源代码;1 packagenvwa; ......
  • 番外-软件设计(5)
    实现一个双向适配器,使得猫可以学狗叫,狗可以学猫抓老鼠。实验要求:1. 画出对应的类图;2.提交源代码;#include<iostream>usingnamespacestd;classCat{public:    virtualvoidmiao()=0;    virtualvoidcatchs()=0;};classDog{public:    virtualvoid......
  • 番外-软件设计(6)
    用桥接模式实现在路上开车这个问题,其中,车可以是car或bus,路可以是水泥路或沥青路。实验要求:1. 画出对应的类图;2.提交源代码;packagetest9; publicclassBusimplementsTransport{    @Override    publicvoidrun(){        System.out.print("Bus"......
  • 软件设计1
    [实验任务一]:UML复习阅读教材第一章复习UML,回答下述问题:面向对象程序设计中类与类的关系都有哪几种?分别用类图实例说明。1,关联关系  2,依赖关系  3,泛化关系  4,接口与实现关系    [实验任务二]:单一职责原则登录模块在实际项目开发中很常见,请按照教......
  • 番外-软件设计(3)
    用C++完成数学中向量的封装,其中,用指针和动态申请支持向量长度的改变,使用浅克隆和深克隆复制向量类,比较这两种克隆方式的异同。实验要求:1. 画出对应的类图;2.提交源代码(用C++完成);#include "stdafx.h"using namespace std; class AbstractVector{public: virtual ......
  • 番外-软件设计(4)
    仿照课堂的身份证的例子,实现每个同学仅有一个学号这一问题。实验要求:1. 画出对应的类图;2.提交源代码;1.Clientpackage Singleton_pattern; public class Client{public static void main(String[] args){StudentIDstu1,stu2;stu1=StudentID.getStudentID();......