一个朋友找我帮忙做了几个关于uml的题目,放上来备忘
1.设计一个课件类,主要的属性有课件编号、课程名称名称,课件类型等等信息。要求对课件进行管理时能够及时记载已经创建了多少个课件的实例。写出java代码
package exam2; public class Exam2 { private String CoursewareCode; private String CoursewareName; private String CoursewareType; private static int instanceCount = 0; public Exam2() { super(); instanceCount++; } public String getCoursewareCode() { return CoursewareCode; } public void setCoursewareCode(String coursewareCode) { CoursewareCode = coursewareCode; } public String getCoursewareName() { return CoursewareName; } public void setCoursewareName(String coursewareName) { CoursewareName = coursewareName; } public String getCoursewareType() { return CoursewareType; } public void setCoursewareType(String coursewareType) { CoursewareType = coursewareType; } /** * 获取课件实例化的数量 * @return */ public static int getInstanceCount() { return instanceCount; } }
2.客户浏览了目录,并向购物篮里添加了一些要买的物品。当客户希望付款时,他给出送货和信用卡信息,并对这一销售予以确认。系统核查信用卡许可并立即对销售确认,紧接着发一份电子邮件。请根据上述描述画出用例图
3.请建造一扇门,可以在门上喷漆,在门上可以安装门把手,也可以安装锁。实现先喷漆,后加把手,最后安装锁。请问用什么样的设计模式来实现?写出实现的UML和JAVA代码
采用Build模式实现
//门的附件 public interface DoorAppendix { public void install(Door door); } package wang.exam5; //油漆 public class Pigment implements DoorAppendix { public Pigment(){ } public void finalize() throws Throwable { } public void install(Door door){ } } package wang.exam5; //门锁 public class Lock implements DoorAppendix { public Lock(){ } public void finalize() throws Throwable { } public void install(Door door){ } } package wang.exam5; //把手 public class Hand implements DoorAppendix { public Hand(){ } public void finalize() throws Throwable { } public void install(Door door){ } } package wang.exam5; //门 public class Door { private DoorAppendix hand; private DoorAppendix lock; private DoorAppendix pigment; public Door(){ hand = new Hand(); Lock = new Lock(); pigment = new Pigment(); } public void build(){ pigment.install(this); hand.install(this); lock.install(this); } }
3.学校的公告发布可以采用邮件列表的形式来发布,当发布一个新的公告的时候,通知所有订阅的人员,接到邮件的人员到指定的位置把公告取出来。请问用什么样的设计模式来实现。画出UML图
采用观察者模式实现
4.学生要注册某个讨论班。学生向注册员提交其姓名和学生编号。这样他可被验证是否有资格在这所学校注册这个讨论班。注册员验证后,他可从可供选择的讨论班列表中选择出他所希望注册的讨论班。注册员验证学生是否有资格注册这门课,并且验证这门讨论班是否适合该学生现有的课程安排。注册员根据讨论班目录中公布的费用计算出这门课的收费并通知学生。确认学生愿意注册该讨论班后,注册员把学生注册到该讨论班,把相应的费用加到学生账单中,并向学生提供已经注册成功的确认。画出用例图和类图。
用例图:
类图:
5.考虑一下美女梳妆的情景,她会盘弄自己的头发,填加首饰在自己头上,可能还有耳环一类的东西。但每个美女身上的饰物并不相同。请问,用哪种设计模式来实现?给出该设计模式的UML图。
使用工厂模式实现