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

番外-软件设计(15)

时间:2023-11-23 09:12:50浏览次数:46  
标签:15 String sendtext 软件设计 番外 public Member void name

在“虚拟聊天室”实例中增加一个新的具体聊天室类和一个新的具体会员类,要求如下:

1. 新的具体聊天室中发送的图片大小不得超过20M。

2. 新的具体聊天室中发送的文字长度不得超过100个字符。

3. 新的具体会员类可以发送图片信息和文本信息。

4. 新的具体会员类在发送文本信息时,可以在信息后加上时间。

修改客户端测试类,注意原有系统类代码和客户端代码的修改。

实验要求:

1. 提交源代码;

package Intermediary_model;

 

public abstract class AbstractChatroom {

    public abstract void register(Member m);

    public abstract void sendtext(String a,String b,String mess);

    public abstract void sendimage(String a,String b,String mess);

}

 

package Intermediary_model;

 

import java.util.*;

 

public class ChatGroup extends AbstractChatroom{

    private Hashtable ms=new Hashtable();

    public void register(Member m)

    {

        if(!ms.contains(m)){

            ms.put(m.getname(),m);

            m.setroom(this);

        }

    }

    public void sendtext(String a,String b,String c){

        Member m=(Member)ms.get(b);

        String newm=c;

        newm=c.replaceAll("日","*");

        m.receivetext(a,newm);

    }

    public void sendimage(String a,String b,String c){

        Member m=(Member)ms.get(b);

        if(c.length()>5){

            System.out.println("图片较大,发送失败");

        }else{

            m.receiveimage(a,c);

        }

    }

}

package Intermediary_model;

 

public class CommonMember extends Member{

    public CommonMember(String a){

        super(a);

    }

    public void sendtext(String a,String c){

        System.out.println("普通会员发送消息");

        room.sendtext(name,a,c);

    }

    public void sendimage(String a,String c){

        System.out.println("普通会员不能发送图片");

    }

}

package Intermediary_model;

 

public class DiamondMember extends Member{

     public DiamondMember(String a){

               super(a);

            }

     public void sendtext(String a,String c){

                System.out.println("钻石会员发送消息");

                room.sendtext(name,a,c);

             }

     public void sendimage(String a,String c){

              System.out.println("钻石会员发送图片");

              room.sendimage(name,a,c);

           }

 }

package Intermediary_model;

 

public class main {

    public static void main(String args[]){

        AbstractChatroom r1=new NewGroup();

        Member m1,m2,m3;

        m1=new NewMember("小张");

        m2=new NewMember("小王");

        m3=new NewMember("小李");

        r1.register(m1);

        r1.register(m2);

        r1.register(m3);

        m1.sendtext("小张",":小张,你好");

        m2.sendtext("小王",":小王,你好");

        m1.sendtext("小张",":你在家吗?");

        m2.sendtext("小王",":在");

        m1.sendtext("小李",":---------------------------------------------------------------------------------------------------------------------------------------------------------------------------");

        m3.sendimage("小王",":你好.jpg");

        m2.sendimage("小李",":你好.jpg--------------------");

    }

}

package Intermediary_model;

 

public abstract class Member {

    protected AbstractChatroom room;

    protected String name;

    public Member(String a){

        name=a;

    }

    public String getname(){

        return name;

    }

    public void setname(String a){

        name=a;

    }

    public AbstractChatroom getroom(){

        return room;

    }

    public void setroom(AbstractChatroom a){

        room=a;

    }

    public abstract void sendtext(String a,String mess);

    public abstract void sendimage(String a,String image);

    public void receivetext(String a,String mess){

        System.out.println(a+"发送的给"+name+"内容是"+mess);

    }

    public void receiveimage(String a,String image){

        System.out.println(a+"发送的给"+name+"内容是"+image);

    }

}

package Intermediary_model;

 

import java.util.HashMap;

import java.util.Map;

public class NewGroup extends AbstractChatroom{

 

    Map<String,Member> table = new HashMap<>();

    public void register(Member member) {

        table.put(member.getname(), member);

        member.setroom(this);

    }

 

    public void sendtext(String from, String to, String message) {

        if(message.length()>=100){

            System.out.println("超过100个字符,发送失败");

        }else{

            Member member = table.get(to);

            if(member!=null)

                member.receivetext(from, message);

        }

    }

 

    public void sendimage(String from, String to, String message) {

        if(message.length()>=20){

            System.out.println("图片超过20M,发送失败");

        }else{

            Member member = table.get(to);

            if(member!=null)

                member.receiveimage(from, message);

        }

    }

 

}

package Intermediary_model;

 

public class NewMember extends Member{

    public NewMember(String a){

        super(a);

    }

    public void sendtext(String a,String c){

        System.out.println("新会员发送消息:");

        room.sendtext(name,a,c);

    }

    public void sendimage(String a,String c){

        System.out.println("新会员发送图片:");

        room.sendimage(name,a,c);

    }

}

2. 注意编程规范。

 

 

标签:15,String,sendtext,软件设计,番外,public,Member,void,name
From: https://www.cnblogs.com/zjsdbk/p/17850792.html

相关文章

  • 番外-软件设计(16)
    改进课堂上的“用户信息操作撤销”实例,使得系统可以实现多次撤销(可以使用HashMap、ArrayList等集合数据结构实现)。实验要求:1. 提交源代码;packageMemorandum_mode; publicclassCaretaker{    privateMemento[]array=null;    privateintindex;    ......
  • CF1506C Epic Transformation
    CF1506CEpicTransformationEpicTransformation-洛谷算是今天的题目里边思维难度最高的一道了,但是代码真的简单的要死题意你有一个长度为 \(n\) 的序列 \(a\),你可以对其进行下列操作:选择 \(i,j\) 满足 \(a_i\neqa_j\) 然后删除 \(*a_i,a_j*\) 两个数。求序......
  • 2024年面向Java程序员的20个系统和软件设计面试题
    0前言系统设计问题是编程面试的重要组成部分,如果你想取得好成绩,就必须准备。在我的网站,分享了八股面试题时,也分享了一些系统设计问题,但粉丝们一直在要求更多问题,因为这个主题的确很难掌握,需要更多练习。我自己也收集了一些从朋友和同事那里获得的面试题,但为了这篇文章和自己的准......
  • pythonDay15
    函数嵌套中*和**以及什么叫装饰器 案例      无参装饰器的模板及简洁的调用方式登录功能案例 有参函数装饰器的用法 ......
  • CSC3150 指令集
    一个简单且类似Unix的教学操作系统,作为指导您实现间接块以支持大文件管理。在现有实现时,单个间接块可以处理对大文件无效的有限块经营在这个分配中,您将把xv6文件的最大大小增加实现用于进一步扩展的双重间接块。我们建议您在编写代码之前先阅读第8章:文件系统。准备工作mkfs程序......
  • 159.102 C++问题求解
    一家生产纽扣的工厂给了你一份合同。工厂识别损坏的按钮,使其不会提供给商店。这家工厂有一台可以拍摄纽扣的照片。这台相机只能用黑白(没有颜色),分辨率不是很高很好,但这不是问题。你的工作是编写一个C++程序,识别照片中任何损坏的按钮。你需要生成一个图像,在每个按钮周围显示一个框。......
  • CSE 158/258 设计与实现
    任务定于11月20日星期一完成,但请确保将解决方案上传到排行榜有规律地您应该提交两个文件:writeup.txt对每个任务的解决方案进行简要的纯文本描述;请在提交截止日期提前;这只是为了帮助我们遵循您的代码,不需要待详细说明。assignment1.py包含解决方案的工作代码的python文件。自动标......
  • 15-基础SQL-函数
    什么是函数:是指一段可以直接被另一段程序调用的程序或代码MySQL的函数主要包括:字符串函数、数值函数、日期函数、流程函数。字符串函数MySQL中内置了很多字符串函数,常用的几个如下:CONCAT演示:SELECTCONCAT("Hello","MySQL"); LOWER......
  • 基于增强型ARM Cortex M0+内核平台的MSPM0G1106TRHBR、MSPM0G1507SRHBR混合信号微控制
    一、MSPM0G1106TRHBR 基于增强型Arm®Cortex®-M0+32位内核,具有64KB闪存、80MHz频率MSPM0G110x微控制器(MCU)属于MSP高度集成的超低功耗32位MCU系列,该MCU系列基于增强型Arm®Cortex®-M0+32位内核平台,工作频率最高可达80MHz。这些成本优化型MCU提供高性能模......
  • Java下跌,Kotlin闯进前15,后生可畏
    近年来,Android开发由Java转Kotlin似乎成为了一种潮流。谷歌甚至曾公开表示:“Android的开发将越来越以Kotlin为先。”当前,作为移动开发中Java的劲敌,Kotlin在Tiobe流行指数中表现强劲。根据TIOBE11月发布的编程语言排行榜,Kotlin以1.15%的占比位列第15,较之10月上升3位。而在今......