设计模式实验报告(共116页).doc
《设计模式实验报告(共116页).doc》由会员分享,可在线阅读,更多相关《设计模式实验报告(共116页).doc(116页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、精选优质文档-倾情为你奉上预备实验 UML建模实验目的:加深对UML建模的理解实验环境:MyEclipse(Java)或Rational Rose等实验内容:1、需求描述A. 某学校准备开发一套选课管理系统,其主要用户是教师和学生。假设教师可以查看课程、增加课程和修改课程;学生可以选修一门或多门课程(为简化起见,学生选修某课程后不允许修改和删除),还能够查看所选修课程的成绩。其中:课程可由课程编号、课程名称进行描述;教师可用工号和姓名进行描述;学生可用学号、姓名进行描述。B. 某信用卡系统账户具有使用状态和冻结状态,其中使用状态又包括正常状态和透支状态两种子状态。如果账户余额小于零则进入透支状
2、态,透支状态时既可以存款又可以取款,但是透支金额不能超过5000元;如果余额大于零则进入正常状态,正常状态时既可以存款又可以取款;如果连续透支100天,则进入冻结状态,冻结状态下既不能存款又不能取款,必须要求银行工作人员解冻。用户可以在使用状态或冻结状态下请求注销账户。根据上述要求,绘制账户类的状态图。2、用例图根据上面的需求描述A,运用UML画出用例图。画图中的用例名和参与者均用中文表示;3、类图根据上面的需求描述A,运用UML画出初始设计类图(仅含业务类),图中应给出属性和方法的中文名称,类与类之间若存在关联,可不确定关联的方向,但需要标出这些关联的多重性。4、状态图根据上面的需求描述B,
3、运用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 Connec
4、tion 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
5、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;pub
6、lic 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()
7、; 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(计算正方形的面积!);pac
8、kage 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 stubsquareClass square1 = new squareClass();square1.Draw();package compute.area_circle.HKT;/* * author Author1 * date
9、 2019-04-02 上午11:38:47 * */public class figure_Compute_Program /* * param args */public static void main(String args) / TODO Auto-generated method stubsquareClass square = new squareClass();square.Area();现使用单一职责原则对其进行重构。察看:要求编程实现以上二种体系结构,并比较二种实现的差异。package compute.area.draw.improve;public interface
10、IAbstractSquare public void Area();public void Draw();package compute.area.draw.improve;public class figure_Compute_Program implements IAbstractSquare Overridepublic void Area() / TODO Auto-generated method stubSystem.out.println(计算正方形的面积!);Overridepublic void Draw() / TODO Auto-generated method stu
11、bpackage compute.area.draw.improve;public class figure_Draw_Program implements IAbstractSquare Overridepublic void Area() / TODO Auto-generated method stubOverridepublic void Draw() / TODO Auto-generated method stubSystem.out.println(画一个正方形!);实验2 开闭原则与里氏代换原则综合训练实验目的:加深对开闭原则与里氏代换原则的理解(如果你能用配置文件,建议用配置
12、文件解决。)实验环境:C#.Net/VC+.Net或MyEclipse(Java)等实验内容: 1、问题(一)“长方形和正方形“。试写一个求面积与周长的解决方案,要求画UML图并编程实现,并体现出开闭原则与里氏代换原则。IbstractCompute.javapackage desinMode.experiment2.code;/* * * author Author1 * date 2019-04-09 上午11:32:57 * */public abstract class IbstractCompute /计算周长函数public abstract void computePerimet
13、er();/计算面积函数public abstract void computeArea();computeRectangle.javapackage desinMode.experiment2.code;/* * * author Author1 * date 2019-04-09 上午11:46:38 * */public class computeRectangle extends IbstractCompute public void computePerimeter() System.out.println(继承抽象类,实现抽象方法计算长方形的周长(实现开闭原则与里氏代换原则);/计
14、算面积函数public void computeArea() System.out.println(继承抽象类,实现抽象方法计算长方形的面积(实现开闭原则与里氏代换原则);computeSquare.javapackage desinMode.experiment2.code;/* * * author Author1 * date 2019-04-09 上午11:46:45 * */public class computeSquare extends IbstractCompute /计算周长函数public void computePerimeter() System.out.printl
15、n(继承抽象类,实现抽象方法计算正方形的周长(实现开闭原则与里氏代换原则);/计算面积函数public void computeArea() System.out.println(继承抽象类,实现抽象方法计算正方形的面积(实现开闭原则与里氏代换原则);mainClass.javapackage desinMode.experiment2.code;/* * * author Author1 * date 2019-04-09 上午11:46:57 * */public class mainClass public static void main(String args) / TODO Aut
16、o-generated method stubIbstractCompute ibstractCompute = null;/开闭原则与里氏代换原则 正方形ibstractCompute = new computeSquare();ibstractCputePerimeter();ibstractCputeArea();/开闭原则 与里氏代换原则长方形 ibstractCompute = new computeRectangle(); ibstractCputePerimeter();ibstractCputeArea(); 2、问题(二)“士兵用枪杀敌”UML图理解与编程实现 ()CS游戏中
17、的枪械类图Client.javapackage desinMode.experiment2.question_2;/* * * author Author1 * date 2019-04-13 上午11:02:30 * */public class Client public static void main(String args) / TODO Auto-generated method stubAbstractGun abstractGun1 = new Handgun();AbstractGun abstractGun2 = new Rifle();AbstractGun abstra
18、ctGun3 = new Machinegun();Soldier soldier = new Soldier();soldier.killEnemy(abstractGun1);soldier.killEnemy(new Rifle();soldier.killEnemy(new Machinegun(); Soldier.javapackage desinMode.experiment2.question_2;/* * * author Author1 * date 2019-04-13 上午11:03:06 * */public class Soldier public void kil
19、lEnemy(AbstractGun abstractGun) System.out.print(士兵用);abstractGun.shoot();System.out.println(杀死敌人);AbstractGun.javapackage desinMode.experiment2.question_2;/* * * author Author1 * date 2019-04-13 上午11:02:46 * */public abstract class AbstractGun public abstract void shoot();Handgun.javapackage desinM
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 设计 模式 实验 报告 116
限制150内