设计模式实验报告
- 格式:doc
- 大小:2.17 MB
- 文档页数:116
预备实验UML建模
实验目的:加深对UML建模的理解
实验环境:MyEclipse(Java)或Rational Rose等
实验内容:
1、需求描述
A.某学校准备开发一套选课管理系统,其主要用户是教师和学生。假设教
师可以查看课程、增加课程和修改课程;学生可以选修一门或多门课程
(为简化起见,学生选修某课程后不允许修改和删除),还能够查看所
选修课程的成绩。其中:课程可由课程编号、课程名称进行描述;教师
可用工号和姓名进行描述;学生可用学号、姓名进行描述。
B. 某信用卡系统账户具有使用状态和冻结状态,其中使用状态又包括正常状态和透支状态两种子状态。如果账户余额小于零则进入透支状态,透支状态时既可以存款又可以取款,但是透支金额不能超过5000元;如果余额大于零则进入正常状态,正常状态时既可以存款又可以取款;如果连续透支100天,则进入冻结状态,冻结状态下既不能存款又不能取款,必须要求银行工作人员解冻。用户可以在使用状态或冻结状态下请求注销账户。根据上述要求,绘制账户类的状态图。
2、用例图
根据上面的需求描述A,运用UML画出用例图。画图中的用例名和参与者均用中文表示;
3、类图
根据上面的需求描述A,运用UML画出初始设计类图(仅含业务类),图中应给出属性和方法的中文名称,类与类之间若存在关联,可不确定关联的方向,但需要标出这些关联的多重性。
4、状态图
根据上面的需求描述B,运用UML画出状态图
实验2 单一职责原则训练
实验目的:加深对单一职责原则的理解
实验环境:C#.Net/VC++.Net或MyEclipse(Java)等
实验内容:
1、实例说明
某基于Java的C/S系统的“登录功能”通过如下登录类(Login)实现:
现使用单一职责原则对其进行重构,并编程实现(可仿真实现数据数据库DAO 形式,当然如果能实现真实的数据库连接并进行数据库的操纵更好)。
package Experiment_One_Code;
import java.sql.*;
/**
*
* @author Author
*
*/
public class DBUtil {
public static Connection getConnction() {
Connection dbConnection = null;
try {
Class.forName(DRIVER_CLASS);
dbConnection = DriverManager.getConnection(DATABASE_URL,
DATABASE_USRE, DATABASE_PASSWORD);
} catch (Exception e) {
e.printStackTrace();
}
return dbConnection;
}
}
package Experiment_One_Code;
/**
*
* @author Author
*
*/
public class UserDAO {
private DBUtil db = new DBUtil();
private String userName;
private String userPassword;
public boolean findUser(String userName, String userPassword) { return false;
}
}
package Experiment_One_Code;
/**
*
* @author Author
*
*/
public class LoginForm {
public LoginForm(UserDAO dao) {
super();
this.dao = dao;
}
public LoginForm() {
super();
}
UserDAO dao = new UserDAO();
public void init() {
}
public void display() {
}
public void validate() {
}
}
package Experiment_One_Code;
/**
*
* @author Author
*
*/
public class MainClass {
public static void main(String[] args) { // TODO Auto-generated method stub
LoginForm loginForm = new LoginForm();
loginForm.init();
loginForm.display();
loginForm.validate();
}
}
2、实例说明
某图形处理系统通过如下类实现:
package compute.area_circle.HKT;
/**
*
* @author Author1
* @date 2019-04-02 上午11:26:41
* 正方形类
*/
public class squareClass {
public void Draw() {
System.out.println("画一个正方形!");
}
public void Area() {
System.out.println("计算正方形的面积!");
}
}
package compute.area_circle.HKT;
/**
*
* @author Author1
* @date 2019-04-02 上午11:49:50
*
*/
public class figure_Draw_Program {
public static void main(String[] args) { // TODO Auto-generated method stub
squareClass square1 = new squareClass();
square1.Draw();
}