当前位置:文档之家› 云南大学设计模式实验报告1_策略模式

云南大学设计模式实验报告1_策略模式

云南大学设计模式实验报告1_策略模式
云南大学设计模式实验报告1_策略模式

云南大学软件学院

实验报告

序号:姓名:学号:专业:软件工程日期:2015.12.03成绩:

实验一策略模式的运用

一、实验目的:

策略模式定义了算法族,分别封装起来,让他们之间可以互相替换,此模式让算法的变化独立于使用算法的客户。在熟悉策略模式相关理论知识的基础上,使用策略模式实现一个小游戏。

二、实验要求:

使用策略模式实现一个小游戏,要求如下:

1.游戏中有三个角色:和尚,侠女,忍者;

2.每个角色都有生命值和魔法值,但各角色不同。

3.各角色外观不同。

4.每个角色具有魔法攻击和物理攻击;

5.物理攻击有三种:用刀、用剑、用手;

6.魔法攻击也有三种:火系魔法、金系魔法、水系魔法;

7.各角色可以动态更换物理、魔法攻击方式,也可以动态选择攻击方法。

1、设计并绘制该程序的类图;

2、依照设计的类图使用Java语言编写代码,并实现该程序;

3、除了核心的模式相关类实现外,提供测试环境,按照难度高低,分别是:

a)控制台程序,Client硬编码初始化模式和测试环境,运行结果文本输出;

b)控制台程序,Client初始化测试环境,并根据用户输入运算,运行结果文本输出;

c)设计并实现用户UI,Client初始化测试环境,并根据用户在UI控件上的输入运算,运

行结果文本输出。

三、实验内容:

类图

实验代码

魔法攻击

package Magic;

public interface magic {

public void magic();

}

火系魔法

package Magic;

public class fire implements magic{ public void magic(){

System.out.println("火系魔法攻击");

}

}

金系魔法

package Magic;

public class metal implements magic{ public void magic(){

System.out.println("金系魔法攻击");

}

}

水系魔法

package Magic;

public class water implements magic{ public void magic(){

System.out.println("水系魔法攻击");

}

}

物理攻击

package Physic;

public interface physic {

public void physic();

}

徒手

package Physic;

public class hand implements physic{ public void physic(){

System.out.println("徒手攻击");

}

}

用刀

package Physic;

public class knife implements physic{ public void physic(){

System.out.println("用刀攻击");

}

}

用剑

package Physic;

public class sword implements physic{

public void physic(){

System.out.println("用剑攻击");

}

}

角色

package Role;

import Magic.magic;

import Physic.physic;

public abstract class role {

magic Mattack;

physic Pattack;

int magicValue = 0;

int lifeValue = 0;

public role(){}

public abstract void display();

public void Mattack(){

Mattack.magic();

}

public void Pattack(){

Pattack.physic();

}

public void setP(physic p){

Pattack = p;

}

public void setM(magic m){

Mattack = m;

}

}

和尚

package Role;

import Physic.physic;

public class Buddhistmonk extends role{

public Buddhistmonk(){

magicValue = 90;

lifeValue = 150;

}

public void display(){

System.out.println("****************************");

System.out.println("角色:和尚");

System.out.println("外观:身披袈裟,手持钵盂");

System.out.println("生命值:"+ lifeValue+ " "+ "魔法值:"+ magicValue);

System.out.println("****************************");

}

}

忍者

package Role;

public class Ninjia extends role{

public Ninjia(){

magicValue = 100;

lifeValue = 120;

}

public void display(){

System.out.println("****************************");

System.out.println("角色:忍者");

System.out.println("外观:身着白衣,腰佩宝剑");

System.out.println("生命值:"+ lifeValue+ " "+ "魔法值:"+ magicValue);

System.out.println("****************************");

}

}

侠女

package Role;

public class Swordswomen extends role{

public Swordswomen(){

magicValue = 140;

lifeValue = 80;

}

public void display(){

System.out.println("****************************");

System.out.println("角色:侠女");

System.out.println("外观:身穿黑色忍者服,头戴面具");

System.out.println("生命值:"+ lifeValue+ " "+ "魔法值:"+ magicValue);

System.out.println("****************************");

}

}

测试函数

package test;

import java.util.Scanner;

import Magic.fire;

import Magic.metal;

import Magic.water;

import Physic.hand;

import Physic.knife;

import Physic.sword;

import Role.Buddhistmonk;

import Role.Ninjia;

import Role.Swordswomen;

import Role.role;

public class test {

public static void main(String[] args) {

// TODO Auto-generated method stub

System.out.println("请选择角色:1、和尚 2、女侠 3、忍者");

Scanner in = new Scanner(System.in);

int selectRole =in.nextInt();

role theRole = null;

if(selectRole == 1)

theRole = (Buddhistmonk)new Buddhistmonk();

else if(selectRole == 2)

theRole = (Swordswomen)new Swordswomen();

else if(selectRole == 3)

theRole = (Ninjia)new Ninjia();

else{

System.out.println("输入错误!");

}

theRole.display();

System.out.println("攻击方式:1、魔法攻击 2、物理攻击");

System.out.println("魔法攻击方法:4、火系魔法 5、水系魔法 6、金系魔法");

System.out.println("物理攻击方法:7、用刀攻击 8、用剑攻击 9、徒手攻击");

System.out.println("开始攻击!");

System.out.println("选择攻击方式:");

int MroP =in.nextInt();

while(true){

if(MroP == 1){

System.out.println("正在进行魔法攻击,选择魔法攻击方法:4,5,6");

while(MroP != 2){

MroP =in.nextInt();

switch(MroP){

case 4: theRole.setM(new fire());break;

case 5: theRole.setM(new water());break;

case 6: theRole.setM(new metal());break;

case 2: System.out.println("切换为物理攻击 ");break;

default:System.out.println("输入错误! ");continue;

}

if (MroP != 2 )

theRole.Mattack();

};

}

else if(MroP == 2){

System.out.println("正在进行物理攻击,选择物理攻击方法:7,8,9 ");

while(MroP != 1){

MroP =in.nextInt();

switch(MroP){

case 7: theRole.setP(new knife());break;

case 8: theRole.setP(new sword());break;

case 9: theRole.setP(new hand());break;

case 1: System.out.println("切换为魔法攻击 ");continue;

default:System.out.println("输入错误! ");continue;

};

if (MroP != 1)

theRole.Pattack();

};

}

}

}

}

实验结果

请选择角色:1、和尚 2、女侠 3、忍者

2

****************************

角色:侠女

外观:身穿黑色忍者服,头戴面具

生命值:80 魔法值:140

****************************

攻击方式:1、魔法攻击 2、物理攻击

魔法攻击方法:4、火系魔法 5、水系魔法 6、金系魔法

物理攻击方法:7、用刀攻击 8、用剑攻击 9、徒手攻击

开始攻击!

选择攻击方式:

2

正在进行物理攻击,选择物理攻击方法:7,8,9

7

用刀攻击

8

用剑攻击

9

徒手攻击

4

输入错误!

1

切换为魔法攻击

正在进行魔法攻击,选择魔法攻击方法:4,5,6

4

火系魔法攻击

5

水系魔法攻击

7

输入错误!

6

金系魔法攻击

2

切换为物理攻击

正在进行物理攻击,选择物理攻击方法:7,8,9

1

切换为魔法攻击

正在进行魔法攻击,选择魔法攻击方法:4,5,6

4

火系魔法攻击

四、实验总结:

通过本次实验,我加深了对策略模式的理解,了解了接口和继承的优缺点。算法和使用算法的对象各自独立,分离开来,客户程序可以在运行时动态选择算法,代码的重用性好,利于代码的改进和维护。可见减少代码的重复率,从而减少代码量,还可以减少修改代码时出现不一致的情况。

指导教师签名:

vf课程设计实验报告模板

vf 课程设计实验报告模板 经济管理学院 学生信息管理系统的设计与实现 09年12 月28 日 、课程设计的目的和意义 当今,人类正在步入一个以智力资源的占有和配置,知识生产、分配和使用为最重要因素的知识经济时代,为了适应知识经济时代发展的需要,大力推动信息产业的发展,我们通过对学生信息管理系统的设计,来提高学生的操作能力,及对理论知识的实践能力,从而提高学生的基本素质,使其能更好的满足社会需求。 学生信息管理系统是一个简单实用的系统,它是学校进行学生管理的好帮手。 此软件功能齐全,设计合理,使用方便,适合各种学校对繁杂的学生信息进行统筹管理,具有严格的系统使用权限管理,具有完善的管理功能,强大的查询功能。它可以融入学校的信息管理系统中,不仅方便了学生信息各方面的管理,同时也为教师的管理带来了极大地便利。 我们进行本次课程设计的主要目的是通过上机实践操作,熟练掌握数据库的设 计、表单的设计、表单与数据库的连接、SQL语言的使用和了解它的功能:数据定 义、数据操纵、数据控制,以及简单VF程序的编写。基本实现学生信息的管理, 包括系统的登录、学生信息的录入、学生信息的浏览、学生信息的查询、学生信息的修改和学生信息的删除,并对Visual FoxPro6.0 的各种功能有进一步的了解,为我们更进一步深入的学习奠定基础,并在实践中提高我们的实际应用能力,为我们以后的学习和工作提供方便,使我们更容易融入当今社会,顺应知识经济发展的趋势。 - 1 -

、系统功能设计 通过该系统可以基本实现学生信息的管理,包括系统的登录、学生信息的录 入、学生信息的浏览、学生信息的查询、学生信息的修改和学生信息的删除。系统 功能模块如下图所示。 学生信息管理系统主界面 登录 管理 学学学学学 生生生生生 信信信信信 息息息息息 录查浏修删 入询览改除 三、系统设计内容及步骤 3.1创建项目管理文件 1.启动foxpro 系统,建一个项目管理器,命名为“学生管理”。 哑 目f ■ 也 电 岂同左 矣 氏H. 0 存 JI 蛋誤曾

【精品实验报告】软件体系结构设计模式实验报告

【精品实验报告】软件体系结构设计模式实验报告软件体系结构 设计模式实验报告 学生姓名: 所在学院: 学生学号: 学生班级: 指导老师: 完成日期: 一、实验目的 熟练使用PowerDesigner和任意一种面向对象编程语言实现几种常见的设计模式,包括组合模式、外观模式、代理模式、观察者模式和策略模式,理解每一种设计模式的模式动机,掌握模式结构,学习如何使用代码实现这些模式,并学会分析这些模式的使用效果。 二、实验内容 使用PowerDesigner和任意一种面向对象编程语言实现组合模式、外观模式、代理模式、观察者模式和策略模式,包括根据实例绘制模式结构图、编写模式实例实现代码,运行并测试模式实例代码。 (1) 组合模式 使用组合模式设计一个杀毒软件(AntiVirus)的框架,该软件既可以对某个文件夹(Folder)杀毒,也可以对某个指定的文件(File)进行杀毒,文件种类包括文本文件TextFile、图片文件ImageFile、视频文件VideoFile。绘制类图并编程模拟实现。 (2) 组合模式 某教育机构组织结构如下图所示: 北京总部 教务办公室湖南分校行政办公室 教务办公室长沙教学点湘潭教学点行政办公室

教务办公室行政办公室教务办公室行政办公室 在该教育机构的OA系统中可以给各级办公室下发公文,现采用 组合模式设计该机构的组织结构,绘制相应的类图并编程模拟实现,在客户端代码中模拟下发公文。(注:可以定义一个办公室类为抽象叶子构件类,再将教务办公室和行政办公室作为其子类;可以定义一个教学机构类为抽象容器构件类,将总部、分校和教学点作为其子类。) (3) 外观模式 某系统需要提供一个文件加密模块,加密流程包括三个操作,分别是读取源文件、加密、保存加密之后的文件。读取文件和保存文件使用流来实现,这三个操作相对独立,其业务代码封装在三个不同的类中。现在需要提供一个统一的加密外观类,用户可以直接使用该加密外观类完成文件的读取、加密和保存三个操作,而不需要与每一个类进行交互,使用外观模式设计该加密模块,要求编程模拟实现。参考类图如下: reader = new FileReader();EncryptFacadecipher = new CipherMachine();writer = new FileWriter();-reader: FileReader-cipher: CipherMachine-writer: FileWriter +EncryptFacade () +fileEncrypt (String fileNameSrc,: voidString plainStr=reader.read(fileNameSrc); String fileNameDes)String

操作实验报告

《Linux操作系统》实验日志 班级: 姓名: 学号: 指导老师: 实验一:Linux常用命令实验日志 指导教师刘锐实验时间:2009 年10 月13 日学院计算机科学与技术学院专业信息安全 班级学号姓名实验室S308 实验题目: Linux常用命令 实验目的:

●练习并掌握Linux的常用命令 ●使用命令方式对用户,用户组及文件使用进行管理 ●使用图形界面方式对用户,用户组及文件使用进行管理 ●编写一个简单的C语言程序,并在linux环境下调试并运行 实验内容: 1.在命令交互方式下完成添加一个用户AA和一个用户组AAteam,并在AA用 户下建立一个名为test的文件,同时改变对该文件的访问权限。 2.在图形交互方式下添加一个用户BB和一个用户组BBteam,并建立一个名为 test文件,同时设置它的访问权限。 3.用C语言编写一个最简单的hello world程序 实验主要步骤: 1.练习Linux初学者需要掌握的常用50条命令 2.helloworld程序用vi或vim编辑器先编写源代码取名为hello.c 1)退出源文件编辑状态到命令行模式, 2)在命令行模式下输入gcc –o hello hello.c,其中hello是经编译过后生成的可执 行文件 3)用chmod命令修改hello文件的权限 4)在命令行模式下输入./hello 实验结果:

心得体会: 第一次实验课,我们开始接触Linux操作系统,很生疏和平时用的基本不一样。更别说命令方式了。这次实验用户组及文件使用进行管理,使用图形界面方式对用户,用户组及文件使用进行管理编写一个简单的C语言程序,并在linux环境下调试并运行。通过这次试验,我们学习和实践了一些基本命令.这些命令对于linux来说是必须的。-o选项表示我们要求输出的可执行文件名. -c表示只要求编译器输出目标代码,而不必要输出可执行文件. -g 表示要求编译器在编译的时候提供以后对程序进行调试的信息。对于编辑和修改程序我们需要应该运用VI编辑器来修改,而VI编辑器给我们提供了关键字的颜色等等,这使我们能更便捷的找到错误。我想这次实验告诉我如果对于一个陌生的操作系统,不仅要了解其基本理论,对于常用的基本操作也要了解。

设计性实验报告格式

大学物理设计性实验报告 实验项目名称:万用表设计与组装实验仪 姓名:李双阳学号:131409138 专业:数学与应用数学班级:1314091 指导教师:_王朝勇王新练 上课时间:2010 年12 月 6 日

一、实验设计方案 实验名称:万能表的设计与组装试验仪 实验时间:2010年12月6日 小组合作: 是 小组成员:孙超群 1. 实验目的:掌握数字万用表的工作原理、组成和特性。 2. 掌握数字万用表的校准和使用。 3. 掌握多量程数字万用表分压、分流电路计算和连接;学会设计制作、使用多量程数字万用表 2、实验地点及仪器、设备和材料: 万用表设计与组装实验仪、标准数字万用表。 3、实验思路(实验原理、数据处理方法及实验步骤等): 1. 直流电压测量电路 在数字电压表头前面加一级分压电路(分压电阻),可以扩展直流电压测量的量程。 数字万用表的直流电压档分压电路如图一所示,它能在不降低输入阻抗的情况下,达到准确的分压效果。 例如:其中200 V 档的分压比为: 001.010*********==+++++M K R R R R R R R 其余各档的分压比分别为: 档位 200mV 2V 20V 200V 2000V 分压比 1 0.1 0.01 0.001 0.0001 图一 实用分压器电路 实际设计时是根据各档的分压比和总电阻来确定各分压电阻的,如先确定 M R R R R R R 1054321=++++=总 再计算200V 档的电阻:K R R R 10001.021==+总,依次可计算出3R 、4R 、5R 等各档的分压电阻值。换量程时,多刀量程转换开关可以根据档位调整小数点的位置,使用者可方便地直读出测量结果。 尽管上述最高量程档的理论量程是2000V ,但通常的数字万用表出于耐压和安全考虑,规定最高电压量限为1000V 或750V 。

设计模式实验报告

实验一单例模式的应用 1 实验目的 1) 掌握单例模式(Singleton)的特点 2) 分析具体问题,使用单例模式进行设计。 2 实验内容和要求 很多应用项目都有配置文件,这些配置文件里面定义一些应用需要的参数数据。 通常客户端使用这个类是通过new一个AppConfig的实例来得到一个操作配置文件内容的对象。如果在系统运行中,有很多地方都需要使用配置文件的内容,系统中会同时存在多份配置文件的内容,这会严重浪费内存资源。 事实上,对于AppConfig类,在运行期间,只需要一个对象实例就够了。那么应该怎么实现呢?用C#控制台应用程序实现该单例模式。绘制该模式的UML 图。 3 实验代码 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace AppConfig { publicclass Singleton { privatestatic Singleton instance; private Singleton() {

} publicstatic Singleton GetInstance() { if (instance == null) { instance = new Singleton(); } return instance; } } class Program { staticvoid Main(string[] args) { Singleton singletonOne = Singleton.GetInstance(); Singleton singletonTwo = Singleton.GetInstance(); if (singletonOne.Equals(singletonTwo)) { Console.WriteLine("singletonOne 和 singletonTwo 代表的是同一个实例"); } else { Console.WriteLine("singletonOne 和 singletonTwo 代表的是不同实例"); } Console.ReadKey(); } } } 4 实验结果

设计性实验报告

计算机与信息工程学院设计性实验报告 一、 实验目的 1.掌握线性时不变系统的两种描述形式—传递函数描述法、零极点增益描述法。 2.掌握两种描述形式之间的转换。 3.掌握连续和离散系统频率响应的求解 二、 实验仪器或设备 装MATLAB 软件的计算机一台。 三、 实验内容 1. 生成20个点的单位脉冲信号、单位阶跃信号,并记录下函数命令和波形。 2. 生成占空比为30%的矩形波。 3. 将连续系统 4)(s )21)(s (s 3) 1)(s -(s 0.5H(s)++++=转化为传递函数模型的描述形式。 4. 将离散系统 4-3-2-1--2 -10.5z 0.9z -1.3z 1.6z -12z 5z 3H(z)++++=转化为传递函数和零极点增益模型的的描述形式。

四、实验步骤(包括主要步骤、代码分析等) 1. 生成20个点的单位脉冲信号、单位阶跃信号,并记录下函数命令和波 形。 程序: clear,clc,close %清除变量空间变量,清除命令窗口命令,关闭图形窗口 t=-10:9; %取20个点 ft1=(t==0); %单位脉冲信号函数 ft2=(t>=0); %单位阶跃信号函数 subplot(1,2,1),stem(t,ft1,'m-o') %图像窗口1行2列的第1个子图绘制单位脉冲信号图形 title('20个点的单位脉冲信号'); %设置标题为“20个点的单位脉冲信号” subplot(1,2,2),stem(t,ft2) %图像窗口1行2列的第2个子图绘制单位阶跃信号图形 title('20个点的单位阶跃信号'); %设置标题为“20个点的单位阶跃信号” 2. 生成占空比为30%的矩形波。 程序: clear,clc,close %清除变量空间变量,清除命令窗口命令 x=0:0.001:0.6; %设置变量x的值范围 y=square(2*pi*10*x,30); %用square函数得到占空比为30%的矩形波 plot(x,y,'m'); %绘制矩形波的图像

软件设计模式与软件体系结构实验报告

《软件体系结构》大作业(1) 学院:软件学院 课程名称:软件体系结构 专业班级: 学生姓名:学号: 学生姓名:学号: 指导教师: 完成时间:年月日 评分表 1、叙述各小组成员完成本题目的分工协作情况。 小组中的每个成员都先理解题目要求及涉及的设计模式,并一起完成代码编写。另外,组长负责文档制作。 2、评分表 序号姓名评分是否组长 1 2 作业正文需要包括以下内容: 1、作业题目内容的详细描述。 2、完成本题目所采用的软件设计模式名称及画出相应的类图,或者是所采用的 软件体系结构名称及画出相应的体系结构图。

3、画出完成本题目所设计程序的设计类图;如还有其他图,也一并画出。 4、完成本题目所设计的程序代码。 5、程序运行的典型界面截图

1、作业题目内容的详细描述。 【作业2.1-1】例2.3为使用工厂方法模式设计的汽车保险管理应用程序实例。现在需要 扩展例2.3的设计图,添加一个名为LuxuryCarInsurance的类,并且需要编写此类和其他需要添加的类的代码,详细要求参见光盘的相应作业部分。 【作业2.1-1】在例2.4中,设计并且实现了豪华(Super)和中等(Medium)别墅(House)与公寓(Condo)的查询。要求在该设计的基础上,增加一个新的类SemiDetacher(半独立式楼宇),并且编写代码,实现相应的查询功能,详细要求参见光盘的相应作业部分。 2、完成本题目所采用的软件设计模式名称及画出相应的类图,或者是所采用的软件体系结构名称及画出相应的体系结构图。 【作业2.1-1】采用的是工厂方法模式 【作业2.1-2】采用的是抽象方法模式

配送中心的区域设计实验报告格式

徐州工程学院 管理学院实验报告 实验课程名称:配送中心规划与管理 实验项目:配送中心的区域设计 实验地点:经济管理实验中心 专业物流工程 班级 11物流2班 学生姓名(学号) 高喜霞 20111515201 明晓 20111515202 王孟伟 20111515203 程凤娇 20111515204 指导老师宋效红 2013 年 11 月 7 日至 2013 年 11 月 21 日

实验报告 实验项目:配送中心的区域设计 实验学时:4学时 实验日期:2013年11月7日~2013年11月21日。 实验要求:为了防止互相抄袭,要求每组同学在已经给出的配送中心空间规划资料的基础上,必须进行数据截取,即在给出的3000多组数据中,每组至少选出100组数据进行分析。要求每组同学每人负责一部分的设计,最终整合成一个完整的报告。规划方案中必须包括通道的设计、收货暂存作业空间的设计、仓储作业空间的设计、拣货区作业空间的设计、集货区的设计等内容,其中应包含动线的设计、设备的选择,作业时序的安排等细节内容,最终形成一个完整的规划设计方案。本设计涉及到课程的第二章、第四章、第五章、第六章的内容,是一个综合性比较强的规划设计方案。实验内容:本次实验主要包括通道的设计、收货暂存作业空间的设计、仓储作业空间的设计、拣货区作业空间的设计、集货区的设计等内容,其中应包含动线的设计、设备的选择,作业时序的安排等细节内容。 一、配送中心的基本概念 所谓配送中心就是从事配送业务且具有完善信息网络的场所或组织是一种多功能、集约化、全方位服务的货物配送设施,是物流系统重要的网络节点之一,是完成物流配送作业的主要场所。其功能主要是把从供应者手中接收的多种大量货物,进行加工、包装、分拣、存储、分货、计费、信息处理等工序,根据用户的订货需求进行配货,以快速实现销售和供应,以令人满意的服务水平进行货物的流通和配送。配送中心的规划设计秉承现状物流、绿色物流的理念,采用了具有效率和成本优势的流程化运作模式,并广泛运用了很多先进的、成熟的技术及设备。 配送中心应基本符合下列要求:主要为特定客户或末端客户提供服务;配送功能健全;辐射范围小;提供高频率、小批量、多批次配送服务。在物流活动中物流配送中心起着协调组织、调度控制和执行主要职能的中心枢纽的作用,具体的可以从以下几个方面来加深认识如流调节作用、物流衔接作用、利益共享作用、信息汇集作用、整合协调作用。在现代物流体系中,物流配送中心是作为物品运输、储存保管、装卸搬运、包装、流通加工和物流信息处理的节点,是商品能够按照客户的要求,完成附加值,并且客服在流通过程中所产生的时间和空隙的障碍。 物流配送中心一旦建成就很难在做大的改动,所以,在规划设计时,必须切实掌握四个原则:系统工程原则,价值工程原则,软件先进、硬盘适度的原则,发展的原则。 二、配送中心规划

设计模式实验报告

计算机科学与技术学院 实验报告 课程名称:软件设计模式 专业:计算机科学与技术班级:班 学号: 姓名:

实验一单例模式的应用 1 实验目的 1) 掌握单例模式(Singleton)的特点 2) 分析具体问题,使用单例模式进行设计。 2 实验内容和要求 很多应用项目都有配置文件,这些配置文件里面定义一些应用需要的参数数据。 通常客户端使用这个类是通过new一个AppConfig的实例来得到一个操作配置文件内容的对象。如果在系统运行中,有很多地方都需要使用配置文件的内容,系统中会同时存在多份配置文件的内容,这会严重浪费内存资源。 事实上,对于AppConfig类,在运行期间,只需要一个对象实例就够了。那么应该怎么实现呢?用C#控制台应用程序实现该单例模式。绘制该模式的UML图。 [代码截图]: namespace实验一_单例模式_ { class Program { static void Main(string[] args) { AppConfig appc1 = AppConfig.GetAppConfig(); AppConfig appc2 = AppConfig.GetAppConfig(); appc1.SetParameterA("hello"); appc2.SetParameterA("hi"); if (appc1.Equals(appc2)){ Console.WriteLine("appc1 和 appc2 代表的是同一个实例"); } else{ Console.WriteLine("appc1 和 appc2 代表的是不同实例"); } Console.WriteLine(appc1.GetParameterA()); Console.WriteLine(appc2.GetParameterA()); Console.ReadKey();

设计模式上机实验二实验报告

设计模式实验二 实验报告书 专业班级软件0703 学号24 姓名吉亚云 指导老师刘伟 时间2010年4月24日 中南大学软件学院

实验二设计模式上机实验二 一、实验目的 使用PowerDesigner和任意一种面向对象编程语言实现几种常用的设计模式,加深对这些模式的理解,包括装饰模式、外观模式、代理模式、职责链模式、命令模式、迭代器模式、观察者模式、状态模式、策略模式和模板方法模式。 二、实验内容 使用PowerDesigner和任意一种面向对象编程语言实现装饰模式、外观模式、代理模式、职责链模式、命令模式、迭代器模式、观察者模式、状态模式、策略模式和模板方法模式,包括根据实例绘制相应的模式结构图、编写模式实现代码,运行并测试模式实例代码。 三、实验要求 1. 正确无误绘制装饰模式、外观模式、代理模式、职责链模式、命令模式、迭代器模式、观察者模式、状态模式、策略模式和模板方法模式的模式结构图; 2. 使用任意一种面向对象编程语言实现装饰模式、外观模式、代理模式、职责链模式、命令模式、迭代器模式、观察者模式、状态模式、策略模式和模板方法模式,代码运行正确无误。 四、实验步骤 1. 使用PowerDesigner绘制装饰模式结构图并用面向对象编程语言实现该模式; 2. 使用PowerDesigner绘制外观模式结构图并用面向对象编程语言实现该模式; 3. 使用PowerDesigner绘制代理模式结构图并用面向对象编程语言实现该模式; 4. 使用PowerDesigner绘制职责链模式结构图并用面向对象编程语言实现该模式; 5. 使用PowerDesigner绘制命令模式结构图并用面向对象编程语言实现该模式; 6. 使用PowerDesigner绘制迭代器模式结构图并用面向对象编程语言实现该模式; 7. 使用PowerDesigner绘制观察者模式结构图并用面向对象编程语言实现该模式; 8. 使用PowerDesigner绘制状态模式结构图并用面向对象编程语言实现该模式; 9. 使用PowerDesigner绘制策略模式结构图并用面向对象编程语言实现该模式; 10. 使用PowerDesigner绘制模板方法模式结构图并用面向对象编程语言实现该模式。 五、实验报告要求 1. 提供装饰模式结构图及实现代码; 2. 提供外观模式结构图及实现代码; 3. 提供代理模式结构图及实现代码; 4. 提供职责链模式结构图及实现代码;

苯妥英钠设计性实验报告

设计性实验报告 实验名称:苯妥英钠的制备与分析 姓名:闫洁 班级: 学号:39 日期:2015.11.2

设计性实验报告 一、实验目的 1.学习安息香缩合反应的原理和应用维生素B1及氰化钠为催化剂进行反应的实验方法。 2.学习有害气体的排出方法。 3.学习二苯羟乙酸重排反应机理。 4.掌握用硝酸氧化的实验方法。 二、实验方案一 1、实验原理 1.安息香缩合反应(安息香的制备) 2.氧化反应(二苯乙二酮的制备) 3.二苯羟乙酸重排及缩合反应(苯妥英的制备) 4.成盐反应(苯妥英钠的制备) 2、实验仪器与药品 仪器:烧杯(500 ml 250 ml )量筒、锥形瓶、三颈瓶、抽滤瓶、球形冷凝管、干燥管、水浴锅、布氏漏斗、温度计、玻璃棒、抽滤器、 药品:苯甲醛、盐酸硫胺、氢氧化钠、无水乙醇、硝酸、浓盐酸 CHO VitB 1or NaCN O H HNO 3 O O O O H O O 1.H 2NCO NH 2/NaO H 2.HCl N H O O H 5C 6H 5C 6N H N H N O O Na H 5C 6H 5C 6 N H O OH H 5C 6 H 5C 6N O H 2NaOH

4、实验装置图 5、实验步骤 (一)安息香的制备(盐酸硫胺催化) 1.原料规格及用量配比 名称规格用量摩尔数摩尔比 苯甲醛CP d 1.050 bp179.9℃20 ml0.2 盐酸硫胺原料药 3.5 g 氢氧化钠CP10 ml 2. 操作 在100 ml三口瓶中加入3.5 g盐酸硫胺(Vit.B1)和8 ml水,溶解后加入95%乙醇30 ml。搅拌下滴加2 mol/L NaOH溶液10 m1。再取新蒸苯甲醛20 ml,加入上述反应瓶中。水浴加热至70℃左右反应1.5 h。冷却,抽滤,用少量冷水洗涤。干燥后得粗品。测定熔点,计算收率。mp 136—l37℃ 注:也可采用室温放置的方法制备安息香,即将上述原料依次加入到100 ml三角瓶中,室温放置有结晶析出,抽滤,用冷水洗涤。于燥后得粗品。测定熔点,计算收率。 (二)二苯乙二酮(联苯甲酰)的制备 1.主要原料规格及用量比 名称规格用量摩尔数摩尔比 安息香自制8.5 g0.04 1 硝酸(65%-68%) CP d 1.40 bp122℃25 ml0.379.25 2.操作 取8.5 g粗制的安息香和25 ml硝酸(65%-68%)置于100 ml圆底烧瓶中,安装冷凝器和气体连续吸收装置,低压加热并搅拌,逐渐升高温度,直至二氧化氮逸去(约1.5—2 h)。反应完毕,在搅拌下趁热将反应液倒入盛有150 ml冷水的烧杯中,充分搅拌,直至油状物呈黄色固体全部析出。抽滤,结晶用水充分洗涤至中性,干燥,得粗品。用四氯化碳重结晶(1:2),也可用乙醇重结晶(1:25),mp.94—96℃。 (三)苯妥英的制备

学生探究性实验报告格式

1 1、以D001大孔阳离子交换树脂负载三氯化铁为催化剂催化合成环己酮缩乙二醇,探究不同催化剂用量对催化效果的影响; 2、探究不同的酮醇比对产物收率的影响; 3、用红外光谱和气相色谱对产物进行表征研究。 香、果香香气、留香持久、香气类型多等特点,作为新型香料在日用香精和食品香精中广泛应用 [1,2] ,也常用于用作特殊的反应溶剂[3] ,…………。 三、实验原理 ………… 三、实验所用主要仪器设备和药品 主要仪器设备:数字阿贝折光仪、Agilent-6890气相色谱仪(安捷伦科技制作有限公司)、360型傅立叶变换红外光谱仪(Wartars 公司)、搅拌器等。 药品:D001树脂(市售)、乙二醇(化学纯)、环己酮(分析纯)、环己烷(化学纯)等;………………… 四、实验部分 1、催化剂的制备 (1)树脂处理 (2)催化剂的制备 ①树脂与FeCl 溶液的交换 称取10g 干燥树脂,用去离子水反复洗涤,再用0.02mol/LFeCl 3溶液1000mL 分数次与反复洗涤后的树脂混合搅拌,以6mL/min 的速度动态交换……………………。

2 ②催化剂的焙烧处理 将上述制备的复合物在马沸炉中在一定条件下进行……………………。 2、环己酮缩乙二醇的合成 100ml 三颈圆底烧瓶中加入2g 催化剂,环己酮0.2mol ,乙二醇0.3mol …………。 五、结果与讨论 1、酮醇比对缩酮反应的影响 固定催化剂用量为2g ,环己酮用量为0.2mol ,以20mL 环己烷作带水剂,回流反应3h ,考察不同酮醇比对缩酮反应产率的影响,结果见表1。 n (酮) /n (醇)(mol 比) 1:1.0 1:1.2 1:1.5 1:2.0 1:2.5 缩酮产率(%) 52 80 84 76 72 由表1乙二醇过量……………………………………。 2、催化剂用量对缩酮反应的影响 ………………………… 3、产物的分析结果 (1)缩酮的确认 生成的环己酮缩乙二醇我们主要通过测红外光谱来确证。其图谱如下: 473.73 543.21 619.32 1119.56 1384.26 1618.67 1637.61 2925.04 3415.95 40 45 50 55 60 65 70 75 80 85 90 95 100 105 %T r a n s m t t a n c e 1000 2000 3000 4000 W a v e n u m b e r s (c m -1)

设计模式实验报告-建造者模式

建造者模式 建造者 建造者设计模式定义了处理其他对象的复杂构建的对象设计。 问题:创建复杂对象时候,构造函数的创建会涉及通用体系结构判定。某些编程人员认为任何构造函数都应当执行适当的逻辑以创建整个对象。另外一些编程人员则认识到将某些逻辑分解入其他方法才是有意义的。采用后一种样式设计的构造函数基本上是一系列请求实例化的方法。上述两种解决方案都不是特别灵活。事实上,它们根本就是错误的解决方案。 解决方案:我们可以基于一组业务逻辑的结果来构造对象。在示例中,对象只有特定的部分必须被创建。如果完全定义对象的所有部分,那么可能导致完全预见不能的结果。 多个方法调用的复杂性问题在使用之处似乎并非太严重,但该复杂性却是缓慢增长的。如果需要经常调用这些方法,那么就应当创建一个Builder对象。 UML MyObject MyObjectBuilder -MyObject:MyObect +complexFunctionA() +createInstanceOfMyObject() +complexFunctionB() +buideMyObject(configurationOptions) +getBuiltMyObject() *MyObject类具有能够完全实现对象构造的两个方法。为了具有完整的Myobject对象,需要执行complexFunctionA()和complexFunctionB()方法。 * MyObjectBuilder类包含一个名为createInstanceOfMyObject()的方法。这个类负责创建Myobject类的一个简单实例。需要注意没有用于进一步构造的配置选项。这个类还存储MyObjectBuilder类创建的实例中的私有实例。 *buildMyObject()方法接受参数configurationOption。这个方法用于调用在MyObjectBuilder 对象中存储的MyObject对象的complexFunctionA()和complexFunctionB()方法。 *getBuildObject()方法返回MyObjectBuilder对象内部Myobject对象的私有实例,该实例既是完整的,也是正常构建的。 示例代码演示: _type=$type; } public function setSize($size) {

网络实验报告总结.doc

实验 1 PacketTrace基本使用 一、实验目的 掌握 Cisco Packet Tracer软件的使用方法。 二、实验任务 在 Cisco Packet Tracer中用HUB组建局域网,利用PING命令检测机器的互通性。 三、实验设备 集线器( HUB)一台,工作站PC三台,直连电缆三条。 四、实验环境 实验环境如图1-1 所示。 图 1-1交换机基本配置实验环境 五、实验步骤 (一)安装模拟器 1、运行“ PacketTracer53_setup”文件,并按如下图所示完成安装; 点“ Next ”

选择“ I accept the agreement”后,点“ next”不用更改安装目录,直接点“ next ” 点“ next ”

点“ next ” 点“ install”

正在安装 点“ Finish ”,安装完成。 2、进入页面。 (二)使用模拟器 1、运行Cisco Packet Tracer 软件,在逻辑工作区放入一台集线器和三台终端设备PC,用 直连线按下图将HUB 和PC工作站连接起 来, HUB端 接 Port 口, PC端分别接以太网口。

2、分别点击各工作站PC,进入其配置窗口,选择桌面项,选择运行IP 地址配置(IP Configuration ),设置IP 地址和子网掩码分别为PC0:1.1.1.1 ,255.255.255.0 ;PC1:1.1.1.2 ,255.255.255.0 ; PC2: 1.1.1.3 , 255.255.255.0 。 3、点击 Cisco Packet Tracer软件右下方的仿真模式按钮,如图1-2所示。将Cisco Packet Tracer的工作状态由实时模式转换为仿真模式。 图1-2 按Simulation Mode 按钮 4、点击PC0进入配置窗口,选择桌面Desktop 项,选择运行命令提示符Command Prompt,如图1-3 所示。 图5、在上述DOS命令行窗口中,输入(Simulation Panel)中点击自动捕获1-3进入PC配置窗口 Ping 1.1.1.3命令,回车运行。然后在仿真面板 / 播放( Auto Capture/Play)按钮,如图1-4 所示。 图 1-4 点击自动抓取 /运行按钮 6、观察数据包发送的演示过程,对应地在仿真面板的事件列表( 的类型。如图1-5 和图 1-6 所示。 Event List )中观察数据包

大学物理设计性实验设计性实验报告

大学物理实验设计性实 验 --电位差计测金属丝电 阻率 姓名:马野 班级:土木0944 学号: 0905411418 指导教师:曹艳玲 实验地点:大学物理实验教学中心

【实验目的】 1. 了解电位差计的结构,正确使用电位差计; 2掌握电位差的工作原理—补偿原理。 3能用电位差计校准电表和电阻率的测定。 4学习简单电路的设计方法,培养独立工作的能力。 【实验原理】 利用电位差计,通过补偿原理,来测定未知电阻和已知电阻两端的 电压,利用分压原理,算出未知电阻的阻值,利用螺旋测微器和刻度尺测出电阻丝的长度和横截面积的直径,通过电阻率公式即可计算出电阻率。 补偿原理 在图1的电路中,设E 0是电动势可调的标准电源,Ex 是待测电池的电动势(或待测电压Ux ),它们的正负极相对并接,在回路串联上一只检流计G ,用来检测回路中有无电流通过。设E 0的内阻为r 0;Ex 的内阻为 rx 。根据欧姆定律,回路的总电流为: 电位差原理 如果我们调节E 0使E 0和Ex 相等,由(1)式可知,此时I =0,回路无电流通过,即检流计指针不发生偏转。此时称电路的电位达到补偿。在电位补 R R r r E E I g x x +++-= 00 图1 补偿原理 x

偿的情况下,若已知E 0的大小,就可确定Ex 的大小。这种测定电动势或电压的方法就叫做补偿法。 显然,用补偿法测定Ex ,必须要求E 0可调,而且E 0的最大值E 0max >Ex ,此外E 0还要在整个测量过程中保持稳定,又能准确读数。在电位差计中,E 0是用一个稳定性好的电池(E )加上精密电阻接成的分压器来代替的,如图2所示。 图2中,由电源E 、限流电阻R 1以及均匀电阻丝RAD 构成的回路叫做工作回路。由它提供稳定的工作电流I 0,并在电阻RAD 上产生均匀的电压降。改变B 、C 之间的距离,可以从中引出大小连续变化的电压来,起到了与E 0相似的作用。为了能够准确读出该电压的读数,使用一个标准电池进行校准。换接开关K 倒向“1”端,接入标准电池E S ,由E S 、限流电阻R 2、检流计G 和RBC 构成的回路称为校准回路。把B 、C 固定在适当的位置(如图中的位置),设RBC =R S ,调节R 1(即调节I 0),总可以使校准回路的电流为零,即R S 上的电压降与E S 之间的电位差为零,达到补偿。 图2 电位差计原理图 x

胰岛素设计性实验报告doc

胰岛素设计性实验报告 篇一:实验设计-修订版 胰岛素所致的低血糖休克及药物 和激素对血糖的影响 第一临床医学院XX级医学检验一班 设计人:郭英刘雨霏刘妮彭超 XX年3月12日 【题目】胰岛素所致低血糖休克及药物和激素对血糖的影响 【背景】 胰岛素是重要的内分泌激素之一,主要生理作用是全面地调节糖类代谢,同时也相应地调节脂肪和蛋白代谢。正常动物由于神经系统的调节和激素的相互作用,血液中胰岛素浓度是相对稳定的。若给正常动物注射胰岛素,可造成人胰岛素性低血糖症状。血糖浓度持续降低而出现交感神经兴奋性增高和脑功能障碍症群而导致的综合症就是低血糖休克。在实验条件下如果给动物注射过量的胰岛素,使动物体内胰岛素量骤然升高,可造成动物实验性低血糖,会使神经组织的正常代谢和功能发生障碍,以至产生痉挛昏迷,外部表现为惊厥,称之为胰岛素休克。小鼠的低血糖休克实验属于经典实验.传统的胰岛素休克实验目的是观察人工胰岛素性低血糖休克以及注射葡萄糖后的消失过程,以加深对胰岛素

生理作用的理解.但实验中一般不测定小鼠血糖的变化,只是观察胰岛素造成低血糖休克时的行为变化。 现阶段对胰岛素降低血糖的原理研究较多,其他药物和激素如甲状腺素、生长激素、糖皮质激素对血糖的研究也以较多,但都是单量试验,并未将多种激素和药物联合起来观察对血糖影响的研究。本次试验将通过制作胰岛素低血糖休克模型来同时观察多种药物和激素对血糖的影响。 体内降低血糖的激素只有胰岛素一种,但升高血糖的激素却不止胰高血糖素一种。糖皮质激素是一种胰岛素拮抗激素,可以增强肝脏中的糖原异生,促进肝糖原分解,抑制外周组织对葡萄糖的摄取和利用,从而导致血糖升高。而甲状腺素有促进生长发育的作用,也能够促进糖的吸收和糖异生,也可升高血糖。生长激素的主要生理功能是促进神经组织以外的所有其他组织生长;促进机体合成代谢和蛋白质合成;促进脂肪分解;对胰岛素有拮抗作用;抑制葡萄糖利用而使血糖升高等作用。但其剂量不同,对血糖的影响亦不同,本次试验就胰岛素等临床常见的与血糖有关的药物和激素对血糖的影响做相应的探讨。 【目的】 学习检测血糖的方法,观察胰岛素及药物和激素对血糖的影响,同时验证不同剂量的生长激素对血糖的影响不同,从而加深理解药物和激素影响血糖水平的机制。

软件设计模式实验报告

应用4+1视图法及UML设计软件体系架构及设计模式实践 一实验目的 通过对实际案例进行软件设计来掌握软件体系架构模式的选择应用以及典型4+1视图软件架构设计方法的应用,并能熟练掌握如何利用Rational Rose 软件进行软件架构设计。 二实验内容 (1)根据“信用卡申请件处理外包业务处理平台设计”需求选定软件体系结 构模式 (2)利用UML软件进行4+1视图架构设计,包括逻辑视图、开发视图、进程 视图、物理视图和场景视图。’ A逻辑视图描述系统的功能需求,系统分解成一系列的功能抽象,采用时序图、协作图、类图等来表示; B开发视图描述软件在开发环境下的静态组织。开发视图关注程序包,应用的统一框架,引用的类库、SDK和中间件,以及工程和包 的划分规则等,规范、约束开发环境的结构; C进程试图侧重系统的运行特性,关注非功能性的需求(性能,可用性)。服务于系统集成人员,方便后续性能测试。强调并发性、分 布性、集成性、鲁棒性(容错)、可扩充性、吞吐量等。定义逻辑 视图中的各个类的具体操作是在哪一个进程和线程中被执行,可以 组件图为基础表示; D物理试图主要描述硬件配置。服务于系统工程人员,解决系统的拓扑结构、系统安装、通信等问题。主要考虑如何把软件映射到硬件 上,也要考虑系统性能、规模、可靠性等。可以与进程视图一起映 射; E场景用于刻画构件之间的相互关系,将四个视图有机地联系起来。

可以描述一个特定的视图内的构件关系,也可以描述不同视图间的 构件关系。通常用Use Case图来描述。 (3)设计模式的实践,从创建者模式、结构型模式和行为模式三大类模式进 行对象设计,每种类型的模式至少应用一种,并用应用了设计模式后的 类设计修订逻辑视图中的类图。 三 SOA架构模式及流程分析(湛滨瑜) 3.1 SOA架构介绍 SOA是英文Service-Oriented Architecture,即面向服务架构的缩写。 面向服务的体系结构(service-oriented architecture,SOA)是一个组件模型,它将应用程序的不同功能单元(称为服务)通过这些服务之间定义良好的接口和契约联系起来。接口是采用中立的方式进行定义的,它应该独立于实现服务的硬件平台、操作系统和编程语言。这使得构建在各种这样的系统中的服务可以以一种统一和通用的方式进行交互。 这种具有中立的接口定义(没有强制绑定到特定的实现上)的特征称为服务之间的松耦合。松耦合系统的好处有两点,一点是它的灵活性,另一点是,当组成整个应用程序的每个服务的内部结构和实现逐渐地发生改变时,它能够继续存在。而另一方面,紧耦合意味着应用程序的不同组件之间的接口与其功能和结构是紧密相连的,因而当需要对部分或整个应用程序进行某种形式的更改时,它们就显得非常脆弱。 对松耦合的系统的需要来源于业务应用程序需要根据业务的需要变得更加灵活,以适应不断变化的环境,比如经常改变的政策、业务级别、业务重点、合作伙伴关系、行业地位以及其他与业务有关的因素,这些因素甚至会影响业务的性质。我们称能够灵活地适应环境变化的业务为按需(On demand)业务,在按需业务中,一旦需要,就可以对完成或执行任务的方式进行必要的更改。 SOA三大基本特征

计算机程序设计类实验报告格式

江西理工大学软件学院计算机类课程实验报告 课程名称: 班级: 姓名: 学号: 江西理工大学软件学院

实验一 实验名称C#编程环境实验日期2013-3-5 实验成绩 实验目的、要求及内容(给出本次实验所涉及并要求掌握的知识点及实验内容具体描述) 一、实验目的: 1.熟练掌握C#开发环境Visual https://www.doczj.com/doc/7f10362608.html, 2008及其使用。 2.编写控制台和Window应用程序两个版本的范例程序,初步了解这两种方式编程的特点。 3.了解注释方法。 二、实验内容: 1.根据个人习惯配置开发环境,设置键盘方案,窗口的布局等。 2.控制台应用程序的开发过程 3.Windows窗体应用程序的开发过程 实验环境(列出本次实验所使用的平台和相关软件)地点:3423机房 OS:Wxp C#环境:1、VS2008 2、.NetFramework3.5

算法描述及实验步骤(用适当的形式表达算法设计思想与算法实现步骤) 1.启动VS2008的过程:开始 双击桌面上的visual studio2008快捷方式,在弹出的“选择默认环境设置”对话框中的“选择默认环境设 置”列表框中选择“Visual C# 开发设置”选项,单击“启动Visual Studio”按钮。 2.配置环境,采用默认的配置环境。 3.新建一个控制台应用程序: 1)新建的过程:在起始页中单击“新建项目”,在弹出的“新建项目” 对话框左侧的列表框中单击“Visual C#”选项下的“Windows”项 目类型,在右侧的“模板”栏中单击“控制台应用程序”,在“名称” 栏中输入“MyTest”,在“位置”栏中输入“E:\LHT\”,“解决方案 名称”为默认的与项目名称相同,单击“确定”。 2)运行的过程:在源代码文件中输入代码,单击“调试”→“开始执行”。 3)自己完成:命令行操作 4.新建一个窗体应用程序 1)新建的过程:与控制台应用程序新建过程一样,唯一的不同就是在“新建项目”对话框中选的是“Window窗体应用程序”模板,然 后在工具箱中选择“Bottom”按钮控件并将其拖拽到Form1窗体中, 双击此按钮。 2)运行的过程:在光标闪烁的源代码文件中输入代码,单击“调试” →“开始执行”,在弹出的“Form1”对话框中双击“button1”。 3)自己完成:命令行操作

相关主题
文本预览
相关文档 最新文档