软件设计与体系结构课程实验报告书
- 格式:doc
- 大小:382.78 KB
- 文档页数:8
软件设计模式与软件体系结构实验报告《软件体系结构》大作业(1)学院:软件学院课程名称:软件体系结构专业班级:学生姓名:学号:学生姓名:学号:指导教师:完成时间:年月日评分表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】采用的是抽象方法模式3、画出完成本题目所设计程序的设计类图;如还有其它图,也一并画出。
【作业2.1-1】采用的是工厂方法模式。
(此文档为word格式,下载后您可任意编辑修改!) 福建农林大学计算机与信息学院实验报告课程名称:软件设计与体系结构姓名:陈宇翔系:软件工程系专业:软件工程年级:2007学号:指导教师:王李进职称:讲师2009年12月16日实验项目列表福建农林大学计算机与信息学院实验报告学院:计算机与信息学院专业:软件工程系年级:2007 姓名:陈宇翔学号:课程名称:软件设计与体系结构实验时间:实验室田实验室312、313 计算机号024 指导教师签字:成绩:实验1:ACME软件体系结构描述语言应用一、实验目的1)掌握软件体系结构描述的概念2)掌握应用ACMESTUDIO工具描述软件体系结构的基本操作二、实验学时2学时。
三、实验方法由老师提供软件体系结构图形样板供学生参考,学生在样板的指导下修改图形,在老师的指导下进行软件体系结构描述。
四、实验环境计算机及ACMESTUDIO。
五、实验内容利用ACME语言定义软件体系结构风格,修改ACME代码,并进行风格测试。
六、实验操作步骤一、导入Zip文档建立的一个Acme Project,并且命名为AcmeLab2。
如下图:接着导入ZIP文档,导入完ZIP文档后显示的如下图:二、修改风格在AcmeLab2项目中,打开families下的TieredFam.acme.如下图:修改组件外观1. 在组件类型中,双击DataNodeT; 在其右边的编辑器中,将产生预览;选择Modify按钮,将打开外观编辑器对话框。
2. 首先改变图形:找到Basic shape section,在Stock image dropdown menu中选择Repository类型.3. 在ColorLine Properties section修改填充颜色为深蓝色。
4. 在颜色对话框中选择深蓝色,并单击 [OK].5. 修改图形的边框颜色为绿色7. 单击Label tab,在Font Settings section, 设置字体颜色为白色,单击[OK]产生的图形如下图:添加新元素类型1. 在Component Types section选择New按钮2. 在对话框中,类型名称输入LogicNodeT .3. 选择TierNodeT 为父类型.4. 单击 [Finish].5. 按照修改外观的步骤,修改LogicNodeT的外观:填充颜色为浅绿色,边框颜色为黑色,大小为2,其他默认。
软件设计模式与体系结构实验报告在软件开发的世界里,设计模式和体系结构就像调味料,给整个开发过程增添了无限风味。
你知道的,写代码有时候就像做饭,少了调料,味道肯定不行。
先说说设计模式吧,这可真是个绝佳的主意。
想象一下,咱们每次做个项目的时候,脑袋里总是要有个框架,知道怎么来、怎么走,这时候设计模式就像一个好老师,教我们如何优雅地解决常见问题。
说到这里,大家听说过单例模式吗?这个模式就像是“独一无二”的存在,确保你在整个应用中只有一个实例,这样可避免浪费资源,避免重复。
嘿,你敢想象要是你的冰箱里塞满了牛奶,那可真是够烦人的。
再聊聊策略模式,真是聪明的家伙。
就好比你在吃火锅,想换个口味,可以随时调换蘸料,策略模式就是给你提供了这种灵活性。
无论是要排序、计算还是处理数据,你都可以轻松切换。
这就像在生活中,不同的情况要有不同的应对方式。
生活本来就充满变化,代码也是一样嘛。
想到这里,我觉得代码和生活一样,得学会随机应变。
然后说到观察者模式,这可是个有趣的故事。
想象一下,你在看球赛,朋友们都在旁边紧盯着屏幕,眼神不离。
这就是观察者模式的精髓:一个对象变化,所有观察它的人都立刻得到通知,哇,这个效率可真高。
就像你在朋友圈发了条动态,大家立刻围过来评论点赞,简直不要太快。
这种模式让我们在编程中也能保持同步,绝对是个“跟得上”的好帮手。
再说到体系结构,嘿,这可是大事儿。
体系结构就像大楼的蓝图,如果没有好的设计,后面的施工就容易出问题。
想想看,你有没有见过那些盖得歪歪扭扭的楼?那可真是惨不忍睹。
一个好的体系结构可以让整个系统稳定运行,避免后期的各种麻烦,就像一部精密的机器,每个部分都得协同工作。
分层架构、微服务架构,这些概念都是在告诉我们,要有条理,别让代码变成“杂货铺”。
说到微服务架构,这可真是个炫酷的概念。
就好像把大块头的火锅分成一个个小锅,你想吃啥就来啥,各种口味应有尽有。
这种架构让开发变得灵活,团队可以独立开发,互不影响。
软件课程设计实验报告(3篇)【导语】软件课程设计试验报告怎么写出亮点?整理了3篇优秀的《软件课程设计试验报告》通用版范文,有规范的开头结尾写法和标准的书写格式。
是您写出深受大家欢迎的综合报告抱负参考模板,盼望对您有所关心。
【第1篇】软件课程设计试验报告一、目的、要求通过该课程设计要使同学树立起剧烈的工程化意识,用工程化思想和方法开发软件。
切实体会出用软件工程的方法开发系统与一般程序设计方法的不同之处,同学在对所开发的系统进行软件方案、需求分析、设计的基础上,实现并测试实际开发的系统。
通过一系列规范化软件文档的编写和系统实现,使同学具备实际软件项目分析、设计、实现和测试的基本力量。
二、主要内容要求同学把握软件工程的基本概念、基本方法和基本原理,为将来从事软件的研发和管理奠定基础。
每个同学选择一个小型软件项目(内容参照《计算机综合实践指导》,宋雨等编著,清华高校出版社出版),根据软件工程的生命周期,完成软件方案、需求分析、软件设计、编码实现、软件测试及软件维护等软件工程工作,并按要求编写出相应的`文档。
详细的方法可以选用传统的软件工程方法或者面对对象的方法,开发环境和工具不限。
三、进度方案略四、设计成果要求1.至少提交4个文档,包括软件方案、软件需求规格说明书、软件设计说明书、软件测试方案,要求文档格式规范、规律性强(可参考《计算机综合实践指导》中给出的要求及格式)、图表规范;2.独自实现了系统的某些功能,基本达到了要求的性能,经过了测试,基本能运行。
五、考核方式(1)提交的文档规范,工作量大,文档规律性强、正确,按《计算机综合实践指导》标准考核(附《软件工程课程设计》试验报告评分表)占60%(2)系统验收、讲解、答辩占25% (3)考勤占15%软件课程设计试验报告【第2篇】应用软件课程设计报告计算机是一门技术性、工程性和应用性很强的学科,教育部高等学校计算机科学与技术教学指导委员会的进展战略讨论报告中也指出:计算机专业的人才应当被分为科学型、工程型、应用型三类,而绝大多数应当是工程型和应用型的。
实验项目列表实验1:ACME软件体系结构描述语言应用一、实验目的1)掌握软件体系结构描述的概念2)掌握应用ACMESTUDIO工具描述软件体系结构的基本操作二、实验学时2学时。
三、实验方法由老师提供软件体系结构图形样板供学生参考,学生在样板的指导下修改图形,在老师的指导下进行软件体系结构描述。
四、实验环境计算机及ACMESTUDIO。
五、实验内容利用ACME语言定义软件体系结构风格,修改ACME代码,并进行风格测试。
六、实验操作步骤一、导入Zip文档建立的一个Acme Project,并且命名为AcmeLab2。
如下图:接着导入ZIP文档,导入完ZIP文档后显示的如下图:二、修改风格在AcmeLab2项目中,打开families下的TieredFam.acme.如下图:修改组件外观1. 在组件类型中,双击DataNodeT; 在其右边的编辑器中,将产生预览;选择Modify按钮,将打开外观编辑器对话框。
2. 首先改变图形:找到Basic shape section,在Stock image dropdown menu中选择Repository类型.3. 在Color/Line Properties section修改填充颜色为深蓝色。
4. 在颜色对话框中选择深蓝色,并单击[OK].5. 修改图形的边框颜色为绿色7. 单击Label tab,在Font Settings section, 设置字体颜色为白色,单击[OK] 产生的图形如下图:添加新元素类型1. 在Component Types section选择New按钮2. 在对话框中,类型名称输入LogicNodeT .3. 选择TierNodeT 为父类型.4. 单击[Finish].5. 按照修改外观的步骤,修改LogicNodeT的外观:填充颜色为浅绿色,边框颜色为黑色,大小为2,其他默认。
产生的图形如下图:添加新属性类型1. 选择Property Types2. 选择New按钮3. 在对话框中,类型名称为TierPropT4. 类型选择enum5. 值为:client, logic, data6. 单击[OK].添加属性1. 激活属性视图页2. 双击TierNodeT3. 选择Properties tab4. 右击空白位置,或者单击图标,选择新建属性5. 属性名为tier.6. 类型为TierPropT(找不到,则直接输入TieredFam.TierPropT)7.单击[OK].添加规则1. 单击Family editor中的TieredFam (Press to select).2. 选择属性视图中的规则页3. 单击生成新规则4. 规则名为hostCheck,选择invariant单选项5. 在规则框中输入(直接粘贴过去)Forall t1 : TierNodeT in ponents |!t1.allowShareHost -> (Forall t2 : TierNodeT in ponents | t1 != t2 -> t1.host != t2.host)6. 单击[Parse Rule] 以确认无语法错误,有错误,要重新写。
广西师范大学、计算机与信息工程学院《软件体系结构》课程实验三软件版本控制实验一、实验内容版本控制(也称源代码管理)就是要保证及时正确的发布软件,每个版本完成应该完成的功能。
在软件开发过程中,会不断发现新需求,不断发现和修改,如果不做控制,软件将出现今天一个版本,明天又是一个版本的混乱现象,尤其在大型软件协同开发时更为重要。
用源代码管理项目,方便开发和管理组内项目,一个组做同一套项目,可以彼此知道各个模块的进度和开发情况,更好的实现协同开发。
1、了解版本控制软件的基本作用2、学习VSS工具的基本应用,VSS是微软公司的产品,VSS是配置管理的一种很好的入门级的工具。
3、通过实验,学习和了解用VSS(Microsoft Visual Source Safe)建立版本控制(也称源代码管理)服务器;体验开发小组成员使用各自的开发平台(目前采用VS2008)进行软件的团队协作开发。
二、实验条件1、硬件环境:单机/网络系统,X86系列计算机,TCP/IP网络平台2、软件环境:WIN9X/NT/2K/XP 操作系统平台3、开发环境:VC2008软件开发调试的集成环境。
4、版本控制软件使用VSS(Microsoft Visual Source Safe),版本VSS2005。
5、参考资料:VS2008及以上版本资料;VSS2005资料。
三、实验过程基本过程:建立版本控制平台,用VSS2005建立,任务涉及VSS2005系统安装设置等;设置建立开发小组,加入成员;建立共享文件夹;存放协作开发的项目软件代码,用软件开发平台共同开发项目。
(1)下载VSS2005(/soft/13212.html),解压,双击Setup.exe进行安装(2)安装好后运行Microsoft Visual SourceSafe,如图1所示图1(3)进入添加VSS的向导,点击Next,选择第二个“Create a new database”,如图2所示图2(4)点击“下一步”,再在Location里Browser你要放的此次建的VSS地址,如图3所示图3(5)再点击“下一步”,输入你想命的名图4(6)再点击“下一步”,选择第一个“Lock-Modify-Unlock Model...”,如图5所示图5(7)依次点击“下一步”“完成”就建好了。
软件体系结构实验指导书(草稿)计算机系备注:本文大部分实验是以Java为开发语言,大家也可以使用C/C++、C#等其他主流开发语言练习。
实验的目的是体验软件结构、软件接口的设计,不限定开发语言。
软件体系结构实验指导书 (1)实验一经典软件体系结构风格(一) (1)实验目的 (1)实验内容 (1)1.管道-过滤器软件体系结构 (1)2.数据抽象和面向对象软件体系结构(体验继承结构) (2)思考与提高 (4)实验二经典软件体系结构风格(二) (5)实验目的 (5)实现内容 (5)1.基于事件的隐式调用风格 (5)2.层次软件体系结构 (6)实验三分布式软件体系结构风格 (13)实验目的 (13)实验内容 (13)C/S体系结构风格 (13)思考与提高 (14)实验四MVC风格 (15)实验目的 (15)实验内容 (15)MVC的应用和编程实现 (15)实验五软件结构设计的目标 (23)实验目的 (23)实验内容 (23)1.用Java语言实现一个计算器程序 (23)2.健壮性 (23)3.可维护性——基于面向对象技术的计算器程序 (24)4.基于简单工厂模式的计算器程序 (25)5.基于工厂方法模式的计算器程序 (27)实验六软件设计——面向对象方法 (29)实验目的 (29)实验内容 (29)1.问题域部分的设计——对多重继承的调整 (29)2.数据管理部分的设计 (30)实验七设计原则 (35)实验目的 (35)实验内容 (35)1.里氏代换原则 (35)2.合成/聚合复用原则 (35)3.依赖倒转原则 (36)4.迪米特法则 (37)5.接口隔离原则 (37)实验八设计模式 (38)实验目的 (38)实验内容 (38)1.单例模式 (38)2.观察者模式 (38)实验九C2模式 (40)实验目的 (40)实验内容 (40)1.连接件ActiveMQ (40)2.构件C2 Component (40)3.加法构件Add (49)实验十黑盒模型 (51)实验目的 (51)实验内容 (51)1.黑盒构件WorldMatrix (51)2.控制器构件 (51)3.知识源构件 (52)要求: (54)实验十一SOA模式 (55)实验目的 (55)实验内容 (55)实验一经典软件体系结构风格(一)实验目的(1)理解管道-过滤器软件体系结构、面向对象软件体系结构的原理(2)掌握管道-过滤器软件体系结构、面向对象软件体系结构的实例(3)管道-过滤器软件体系结构、面向对象软件体系结构的编程实现实验内容1.管道-过滤器软件体系结构(1)在dos提示符下输入下面的命令:dir | more使得当前目录列表在屏幕上逐屏显示。
实验一、教务系统1. 实验目的:①学习工厂模式;②掌握简单工厂模式的用法,以及其优缺点;③掌握抽象工厂模式的用法,以及其优缺点。
2. 实验内容:1.假设我们开发一个教务管理系统,现在教务处已经购买了Oracle数据库的2年使用权,且数据库中有大量数据,不能短时间内进行数据库迁移。
教务处提出一个要求,希望我们的系统现在可以支持Oracle,但在他们需要的时候,增加支持MySql、SQLServer的功能,请用简单工厂模式实现这一需求。
(提示:具体代码可以数据读取写入工作抽象为一行命令行输出,但是核心的类关系必须给出。
)2.请用抽象工厂模式实现出以上需求。
3. 简单工厂优点:1、工厂方法包含从一个类的结构中选择初始类的业务逻辑。
2、客户类不直接创建产品类的对象。
客户类只作为对象的消费者。
3、简单工厂方法模式实现了责任分离。
4、客户类不负有创建类的对象的责任,因此如果有新产品子类加入,不必修改已有的客户类代码。
缺点:1、简单工厂方法模式不符合开闭原则。
2、简单工厂类只能是一个单独的类,而不能成为一个层次的类4. 抽象工厂优点:1、具体产品从客户代码中被分离出来2、容易改变产品的系列3、将一个系列的产品族统一到一起创建缺点:在产品族中扩展新的产品是很困难的,它需要修改抽象工厂的接口5. 类图6、实验总结对于简单工厂和抽象工厂的学习有了初步的认识,在此学习中基本了解了什么情况下使用简单工厂和抽象工厂。
简单工厂:1、工厂类负责创建的对象比较少;2、客户只知道传入工厂类的参数,对于如何创建对象(逻辑)不关心;3、由于简单工厂很容易违反高内聚责任分配原则,因此一般只在很简单的情况下应用。
抽象工厂:1、一个系统不应当依赖于产品类实例如何被创建、组合和表达的细节,这对于所有形态的工厂模式都是重要的。
2、这个系统有多于一个的产品族,而系统只消费其中某一产品族。
3、同属于同一个产品族的产品是在一起使用的,这一约束必须在系统的设计中体现出来。
4、系统提供一个产品类的库,所有的产品以同样的接口出现,从而使客户端不依赖于实现。
实验二、网络连接1. 实验目的:①学习单例模式;②掌握单例模式的用法,以及其优缺点;2. 实验内容:单例模式是一种常用的软件设计模式。
在它的核心结构中只包含一个被称为单例类的特殊类。
通过单例模式可以保证系统中一个类只有一个实例而且该实例易于外界访问,从而方便对实例个数的控制并节约系统资源。
如果希望在系统中某个类的对象只能存在一个,单例模式是最好的解决方案。
根据下面的UML图,完成相关的代码,要求为:1,成功运行所给代码;2,运用线程安全的单例模式重新设计软件框架;3,用代码完成你的设计。
3.单例模式单例模式:单例模式作为对象的一种创建模式,它的作用是确保某一个类在整个系统中只有一个实例,而且自行实例化并向整个系统提供这个实例。
其特点:1、单例类只能有一个实例2、单例类必须自己创建自己唯一的实例3、单例类必须给所有其他对象提供这一实例优点:1、实例控制单例模式会阻止其他对象实例化其自己的单例对象的副本,从而确保所有对象都访问唯一实例。
2、灵活性因为类控制了实例化过程,所以类可以灵活更改实例化过程。
缺点:1、开销虽然数量很少,但如果每次对象请求引用时都要检查是否存在类的实例,将仍然需要一些开销。
可以通过使用静态初始化解决此问题。
2、可能的开发混淆使用单例对象(尤其在类库中定义的对象)时,开发人员必须记住自己不能使用new关键字实例化对象。
因为可能无法访问库源代码,因此应用程序开发人员可能会意外发现自己无法直接实例化此类。
3、对象生存期不能解决删除单个对象的问题。
在提供内存管理的语言中,只有单例类能够导致实例被取消分配,因为它包含对该实例的私有引用。
在某些语言中,其他类可以删除对象实例,但这样会导致单例类中出现悬浮引用。
4.运行图示:5.相关代码:ClientUI.javaimport java.awt.*;import java.awt.event.*;import javax.swing.*;public class ClientUI extends JFrame{private static final String CONNECT = "Create Connection";private static final String EXIT = "Exit";private JTextField txtInstruction;private SingleLogonGUI objLogon = null;public ClientUI() {super("ClientUI - Singleton Pattern");JButton btnConnect = new JButton(CONNECT);JButton btnExit = new JButton(EXIT);btnConnect.setMnemonic(KeyEvent.VK_S);btnExit.setMnemonic(KeyEvent.VK_X);ButtonHandler vf = new ButtonHandler();btnConnect.addActionListener(vf);btnExit.addActionListener(vf);JPanel buttonPanel = new JPanel();buttonPanel.setBackground(Color.green);buttonPanel.add(btnConnect);buttonPanel.add(btnExit);txtInstruction = new JTextField("Click to get a connection");txtInstruction.setBackground(Color.green);Container contentPane = getContentPane();contentPane.setLayout(new BorderLayout());contentPane.add(buttonPanel, "South");contentPane.add(txtInstruction, "Center");setSize(320, 120);setVisible(true);}private void issueWarning(){txtInstruction.setT ext("Error. You cannot start a second connection."); }class ButtonHandler implements ActionListener {public void actionPerformed(ActionEvent e) {if (e.getActionCommand().equals(EXIT)) {System.exit(1);}else if (e.getActionCommand().equals(CONNECT)) {if(objLogon == null)objLogon = SingleLogonGUI.getInstance();elseissueWarning();}}}public static void main(String[] args) {ClientUI connection = new ClientUI();}}SingleLogonGUI.javaimport java.awt.*;import java.awt.event.*;import javax.swing.*;public class SingleLogonGUI extends JFrame { public static final String LOGON = "Log On";public static final String EXIT = "Exit";private String USERNM="mikesun";private String PASSWD = "opensesame";private JTextField txtUser;private JTextField txtPassWord;private static SingleLogonGUI instance = null;private JTextField txtInstruction;private SingleLogonGUI() {super("SingleLogonGUI - Singleton");initializeGUI();}public static SingleLogonGUI getInstance() { if (instance == null)instance = new SingleLogonGUI();return instance;}public void initializeGUI() {JLabel lblUsrName = new JLabel("User Name");JLabel lblPassWord = new JLabel("Password");txtUser = new JTextField(USERNM);txtPassWord = new JTextField(PASSWD);JButton btnLogon = new JButton(LOGON);btnLogon.setMnemonic(KeyEvent.VK_S);JButton btnExit = new JButton(EXIT);btnExit.setMnemonic(KeyEvent.VK_X);ButtonHandler vf = new ButtonHandler();btnLogon.addActionListener(vf);btnExit.addActionListener(vf);JPanel buttonPanel = new JPanel();GridBagLayout gridbag = new GridBagLayout();buttonPanel.setLayout(gridbag);GridBagConstraints gbc = new GridBagConstraints();buttonPanel.add(lblUsrName);buttonPanel.add(txtUser);buttonPanel.add(lblPassWord);buttonPanel.add(txtPassWord);buttonPanel.add(btnLogon);buttonPanel.add(btnExit);gbc.insets.top = 5;gbc.insets.bottom = 5;gbc.insets.left = 5;gbc.insets.right = 5;gbc.gridx = 0;gbc.gridy = 0;gridbag.setConstraints(lblUsrName, gbc);gbc.anchor = GridBagConstraints.WEST;gbc.gridx = 1;gbc.gridy = 0;gridbag.setConstraints(txtUser, gbc);gbc.gridx = 0;gbc.gridy = 1;gridbag.setConstraints(lblPassWord, gbc);gbc.anchor = GridBagConstraints.WEST;gbc.gridx = 1;gbc.gridy = 1;gridbag.setConstraints(txtPassWord, gbc);gbc.anchor = GridBagConstraints.EAST;gbc.insets.left = 2;gbc.insets.right = 2;gbc.insets.top = 40;gbc.gridx = 0;gbc.gridy = 6;gridbag.setConstraints(btnLogon, gbc);gbc.anchor = GridBagConstraints.WEST;gbc.gridx = 1;gbc.gridy = 6;gridbag.setConstraints(btnExit, gbc);Container contentPane = getContentPane();contentPane.add(buttonPanel, BorderLayout.CENTER);txtInstruction = new JTextField();txtInstruction.setBackground(Color.pink);contentPane.add( txtInstruction, BorderLayout.NORTH);setSize(320, 200);setVisible(true);}public boolean isValideCustomer() {String usr = txtUser.getText();String pwd = txtPassWord.getText();if(usr.equals(USERNM) && pwd.equals(PASSWD))return true;elsereturn false;}private void issueWarning(){txtInstruction.setText("Invalide user name or password.");}private void issueSuccess(){txtInstruction.setText("You have been successfully connected to the web."); }class ButtonHandler implements ActionListener {public void actionPerformed(ActionEvent e) {if (e.getActionCommand().equals(EXIT)) {System.exit(1);}if (e.getActionCommand().equals(LOGON)) {boolean isValideCus = isValideCustomer();if(isValideCus == false){ //logon failedissueWarning();}else{ //logon successfullyissueSuccess();}}}}}// end of class。