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("贾建超", "谢谢"); } }