信息系统分析与设计 看程序绘图题

一、

abstract class Command {
	public abstract void execute();
}
class AddCommand extends Command{
	private Receiver receiver;
	public void AddCommand(Receiver r) {
		this.receiver = r;
	}
	public void execute() {
receiver.action();
}
}
class PrintCommand extends Command{
	private Receiver receiver;
	public void PrintCommand(Receiver r) {
		this.receiver = r;
	}
	public void execute() {
receiver.action();
}
}
class Invoker {
	private Command command;
	public void setCommand(Command cmd) {
		this.command = cmd;
	}
public void call() {
command.execute();
}
}
class Receiver {
	public void action() {.}
}
class Client {
	public static void main(String args[]) {
Command c1,c2;
Receiver r = new Receiver();
c1 = new AddCommand(r);
c2 = new PrintCommand(r);

Invoker in = new Invoker();
in.setCommand(c1);
in.call();
in.setCommand(c2);
in.call();
}
}

1、 绘制上述代码的类图(6分)。
在这里插入图片描述

评分标准:每个类及方法正确各得1分,关系正确2分。

2、 绘制上述主程序main的顺序图,要求消息(构造消息可忽略)使用层次编号,对象应有名称和类型。(10分)
在这里插入图片描述
评分标准:对象及名称正确得2分,主要方法(setCommand,call,execute,action)及发送对象正确每个得1分,共4分,消息层次正确得2分。(创建消息可以省略)

二、

abstract class AbstractCommand {
	public abstract int execute(int value);
	public abstract int undo()
}
class AddCommand extends AbstractCommand{
	private Adder adder = new Adder();
private int value;

	public int execute(int v) {
this.value = v;
int result = adder.add(value);
return result;
}
	public int undo() {
int result = adder.add(-value);
return result;
}
}
class Calculator {
	private AbstractCommand command;
	public void setCommand(AbstractCommand cmd) {
		this.command = cmd;
	}
public void compute(int v) {
int sum = command.execute(v);}
public void undo() {
int sum = command.undo();}
}
class Adder {
	public int add(int v) {.}
}
class Client {
	public static void main(String args[]) {
Calculator c1 = new Calculator();
AbstractorCommand cmd;
cmd = new AddCommand();
c1.setCommand(cmd);

c1.compute(10);
c1.compute(4);
c1.compute(4);
c1.undo();
}
}

1、 绘制上述代码的类图(6分)。
在这里插入图片描述
评分标准:每个类及方法正确各得1分,关系正确2分。
2、 绘制上述主程序main的顺序图,要求消息(构造消息可忽略)使用层次编号,对象应有名称和类型。(10分)
在这里插入图片描述
评分标准:对象及名称正确得2分,重点方法(setCommand,undo,execute,add)及发送对象正确每个得1分(共6分),消息层次正确得2分。创建方法可以省略。

三、

class A {
private void x( ){}
	public static void main( ) {
x( );
B b1 = new B( );
b1.y( );
C c1 = new C1( );
c1.z( );
}
}

Class B {
	public void y( ) {
y1();
y2();
D d1 = new D();
d1.y3( );
	}
	private void y1( ) {}
	private void y2() {}
}

Class C {
    public void z( ) {}
}

Class D {
    public void y3( ) {}
}

1、 绘制上述代码的类图(6分)。
在这里插入图片描述
评分标准:每个类及方法正确各得1分,依赖关系正确得2分。

2、请绘制出下列描述的顺序图(10分)
当用户按下一个字母或数字键时,GUI对象和其它对象之间的交互情况如下:
(1)GUI将击键事件通知给操作系统。
(2)操作系统接着通知CPU。
(3)操作系统更新GUI。
(4)CPU又通知图形卡。
(5)图形卡向显示器发送一个显示消息。
(6)显示器将字母字符显示在屏幕上,给用户提供了图形化的反馈信号。
在这里插入图片描述
评分标准:对象及名称正确得4分,发送对象正确得3分,消息层次正确得3分。

四、

class Form1 {
private void checkInput( ){}
	public static void main( ) 
{
……
checkInput();
LoginControl lc = new LoginControl();

if(lc.UserLogin(username, pwd))				
   System.Out.Println("登录成功!");
else
   System.Out.Println ("登录失败!");
}
}

class LoginControl {
public bool UserLogin(string userName, string password)
    {
            User u1 = new User();
            Group g1 = new Group();
          
            if (u1.queryUser(userName, password))  	
            {
                g1 = u1.userGroup;					
                if (g1.hasRight())  
return (true);	  	
}
            return (false);
}
}

class User {
private String userName;
private String password;
private Group userGroup;

public User(String name, String password) {……}
public bool queryUser(string userName,string userPwd) {
……
userGroup = new Group();
userGroup.queryGroup(groupName);			
}
}

class Group {
private String groupName;
private String description;

public void queryGroup(string name) {……}
public bool hasRight() {……}
}

1、以上简化版代码完成登录功能,根据用户名和密码查询用户信息,之后根据用户的组名查询用户组信息,并判断用户组是否有操作权限。请绘制代码的类图(10分)。
在这里插入图片描述
评分标准:每个类及方法正确各得2分,依赖关系正确得2分。

2、绘制上述主程序main的顺序图,要求消息(构造消息可忽略)使用层次编号,对象应有名称和类型。(6分)
在这里插入图片描述
评分标准:对象及名称正确得4分,消息正确得2分。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值