设计模式实验报告

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

预备实验UML建模实验目的:加深对UML建模的理解实验环境:MyEclipse(Java)或RationalRose等实验内容: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形式,当然如果能实现真实的数据库连接并进行数据库的操纵更好)。packageExperiment_One_Code;importjava.sql.*;/****@authorAuthor**/publicclassDBUtil{publicstaticConnectiongetConnction(){ConnectiondbConnection=null;try{Class.forName(DRIVER_CLASS);dbConnection=DriverManager.getConnection(DATABASE_URL,DATABASE_USRE,DATABASE_PASSWORD);}catch(Exceptione){e.printStackTrace();}returndbConnection;}}packageExperiment_One_Code;/****@authorAuthor**/publicclassUserDAO{privateDBUtildb=newDBUtil();privateStringuserName;privateStringuserPassword;publicbooleanfindUser(StringuserName,StringuserPassword){returnfalse;}}packageExperiment_One_Code;/****@authorAuthor**/publicclassLoginForm{publicLoginForm(UserDAOdao){super();this.dao=dao;}publicLoginForm(){super();}UserDAOdao=newUserDAO();publicvoidinit(){}publicvoiddisplay(){}publicvoidvalidate(){}}packageExperiment_One_Code;/****@authorAuthor**/publicclassMainClass{publicstaticvoidmain(String[]args){//TODOAuto-generatedmethodstubLoginFormloginForm=newLoginForm();loginForm.init();loginForm.display();loginForm.validate();}}2、实例说明某图形处理系统通过如下类实现:packagecompute.area_circle.HKT;/****@authorAuthor1*@date2019-04-02上午11:26:41*正方形类*/publicclasssquareClass{publicvoidDraw(){System.out.println(画一个正方形!);}publicvoidArea(){System.out.println(计算正方形的面积!);}}packagecompute.area_circle.HKT;/****@authorAuthor1*@date2019-04-02上午11:49:50**/publicclassfigure_Draw_Program{publicstaticvoidmain(String[]args){//TODOAuto-generatedmethodstubsquareClasssquare1=newsquareClass();square1.Draw();}}packagecompute.area_circle.HKT;/***@authorAuthor1*@date2019-04-02上午11:38:47**/publicclassfigure_Compute_Program{/***@paramargs*/publicstaticvoidmain(String[]args){//TODOAuto-generatedmethodstubsquareClasssquare=newsquareClass();square.Area();}}现使用单一职责原则对其进行重构。察看:要求编程实现以上二种体系结构,并比较二种实现的差异。packagecompute.area.draw.improve;publicinterfaceIAbstractSquare{publicvoidArea();publicvoidDraw();}packagecompute.area.draw.improve;publicclassfigure_Compute_ProgramimplementsIAbstractSquare{@OverridepublicvoidArea(){//TODOAuto-generatedmethodstubSystem.out.println(计算正方形的面积!);}@OverridepublicvoidDraw(){//TODOAuto-generatedmethodstub}}packagecompute.area.draw.improve;publicclassfigure_Draw_ProgramimplementsIAbstractSquare{@OverridepublicvoidArea(){//TODOAuto-generatedmethodstub}@OverridepublicvoidDraw(){//TODOAuto-generatedmethodstubSystem.out.println(画一个正方形!);}}实验2开闭原则与里氏代换原则综合训练实验目的:加深对开闭原则与里氏代换原则的理解(如果你能用配置文件,建议用配置文件解决。)实验环境:C#.Net/VC++.Net或MyEclipse(Java)等实验内容:1、问题(一)“长方形和正方形“。试写一个求面积与周长的解决方案,要求画UML图并编程实现,并体现出开闭原则与里氏代换原则。IbstractCompute.javapackagedesinMode.experiment2.code;/****@authorAuthor1*@date2019-04-09上午11:32:57**/publicabstractclassIbstractCompute{//计算周长函数publicabstractvoidcomputePerimeter();//计算面积函数publicabstractvoidcomputeArea();}computeRectangle.javapackagedesinMode.experiment2.code;/****@authorAuthor1*@date2019-04-09上午11:46:38**/publicclasscomputeRectangleextendsIbstractCompute{publicvoidcomputePerimeter(){System.out.println(继承抽象类,实现抽象方法计算长方形的周长(实现开闭原则与里氏代换原则));}//计算面积函数publicvoidcomputeArea(){System.out.println(继承抽象类,实现抽象方法计算长方形的面积(实现开闭原则与里氏代换原则));}}computeSquare.javapackagedesinMode.experiment2.code;/****@authorAuthor1*@date2019-04-09上午11:46:45**/publicclasscomputeSquareextendsIbstractCompute{//计算周长函数publicvoidcomputePerimeter(){System.out.println(继承抽象类,实现抽象方法计算正方形的周长(实现开闭原则与里氏代换原则));}//计算面积函数publicvoidcomputeArea(){System.out.println(继承抽象类,实现抽象方法计算正方形的面积(实现开闭原则与里氏代换原则));}}mainClass.javapackagedesinMode.experiment2.code;/****@authorAuthor1*@date2019-04-09上午11:46:57**/publicclassmainClass{publicstaticvoidmain(String[]args){//TODOAuto-generatedmethodstubIbstractComputeibstractCompute=null;//开闭原则与里氏代换原则正方形ibstractCompute=newcomputeSquare();ibstractCompute.computePerimeter();ibstractCompute.computeArea();////开闭原则与里氏代换原则长方形ibstractCompute=newcomputeRectangle();ibstractCompute.computePerimeter();ibstractCompute.computeArea();}}2、问题(二)“士兵用枪杀敌”UML图理解与编程实现(1)CS游戏中的枪械类图Client.javapackagedesinMode.experiment2.question_2;/****@authorAuthor1*@date2019-04-13上午11:02:30**/publicclassClient{publicstaticvoidmain(String[]args){//TODOAuto-generatedmethodstubAbstractGunabstractGun1=newHandgun();AbstractGunabstractGun2=newRifle();AbstractGunabstractGun3=newMachinegun();Soldiersoldier=newSoldier();soldier.killEnemy(abstractGun1);soldier.killEnemy(ne

1 / 116
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功