2024/11/25

软件设计实验十九

[实验任务一]:虚拟聊天室
在“虚拟聊天室”实例中增加一个新的具体聊天室类和一个新的具体会员类,要求如下:
1. 新的具体聊天室中发送的图片大小不得超过20M。
2. 新的具体聊天室中发送的文字长度不得超过100个字符。
3. 新的具体会员类可以发送图片信息和文本信息。
4. 新的具体会员类在发送文本信息时,可以在信息后加上时间。
修改客户端测试类,注意原有系统类代码和客户端代码的修改。
实验要求:
1.    画出对应的类图;
 
2.    提交源代码;
public abstract class AbstractChatroom
{
    public abstract void register(Member member);
    public abstract void sendText(String from,String to,String message);
    public abstract void sendImage(String from,String to,String message);
}

public abstract class Member
{
    protected AbstractChatroom chatroom;
    protected String name;

    public Member(String name)
    {
        this.name=name;
    }

    public String getName()
    {
        return name;
    }

    public void setName(String name)
    {
        this.name=name;
    }

    public AbstractChatroom getChatroom()
    {
        return chatroom;
    }

    public void setChatroom(AbstractChatroom chatroom)
    {
        this.chatroom=chatroom;
    }

    public abstract void sendText(String to,String message);
    public abstract void sendImage(String to,String image);

    public void receiveText(String from,String message)
    {
        System.out.println(from + "发送文本给" + this.name + ",内容为:" + message);
    }

    public void receiveImage(String from,String image)
    {
        System.out.println(from + "发送图片给" + this.name + ",内容为:" + image);
    }
}

public class ChatGroup extends AbstractChatroom
{
    private Hashtable members=new Hashtable();

    public void register(Member member)
    {
        if(!members.contains(member))
        {
            members.put(member.getName(),member);
            member.setChatroom(this);
        }
    }

    public void sendText(String from,String to,String message)
    {
        Member member=(Member)members.get(to);
        String newMessage=message;
        newMessage=message.replaceAll("日","*");
        member.receiveText(from,newMessage);
    }

    public void sendImage(String from,String to,String image)
    {
        Member member=(Member)members.get(to);
        //模拟图片大小判断
        if(image.length()>5)
        {
            System.out.println("图片太大,发送失败!");
        }
        else
        {
            member.receiveImage(from,image);
        }
    }
}

public class CommonMember extends Member
{
    public CommonMember(String name)
    {
        super(name);
    }

    public void sendText(String to,String message)
    {
        System.out.println("普通会员发送信息:");
        chatroom.sendText(name,to,message);  //发送
    }

    public void sendImage(String to,String image)
    {
        System.out.println("普通会员不能发送图片!");
    }
}

public class DiamondMember extends Member
{
    public DiamondMember(String name)
    {
        super(name);
    }

    public void sendText(String to,String message)
    {
        System.out.println("钻石会员发送信息:");
        chatroom.sendText(name,to,message);  //发送
    }

    public void sendImage(String to,String image)
    {
        System.out.println("钻石会员发送图片:");
        chatroom.sendImage(name,to,image);  //发送
    }
}

public class App
{
    public static void main(String args[])
    {
        AbstractChatroom happyChat=new ChatGroup();
        Member member1,member2,member3,member4,member5;
        member1 = new DiamondMember("龚涵彬");
        member2 = new DiamondMember("王瑞");
        member3 = new CommonMember("贾建超");
        member4 = new CommonMember("张雨锟");
        member5 = new CommonMember("孙博盛");

        happyChat.register(member1);
        happyChat.register(member2);
        happyChat.register(member3);
        happyChat.register(member4);
        happyChat.register(member5);

        member1.sendText("王瑞", "王瑞,你好!");
        member2.sendText("龚涵彬", "龚涵彬,你好!");
        member1.sendText("王瑞", "今天天气不错,有太阳!");
        member2.sendImage("龚涵彬", "一个很大很大的太阳");
        member2.sendImage("龚涵彬", "太阳");
        member3.sendText("张雨锟", "还有问题吗?");
        member4.sendText("张雨锟", "还有问题吗?");
        member3.sendText("贾建超", "没有了,谢谢!");
        member5.sendText("贾建超", "我也没有了!");
        member5.sendImage("贾建超", "谢谢");
    }
}

 

posted @ 2024-11-25 20:00  伐木工熊大  阅读(11)  评论(0)    收藏  举报