体系结构-41309050219

上传人:第*** 文档编号:34215394 上传时间:2018-02-22 格式:DOC 页数:10 大小:262KB
返回 下载 相关 举报
体系结构-41309050219_第1页
第1页 / 共10页
体系结构-41309050219_第2页
第2页 / 共10页
体系结构-41309050219_第3页
第3页 / 共10页
体系结构-41309050219_第4页
第4页 / 共10页
体系结构-41309050219_第5页
第5页 / 共10页
点击查看更多>>
资源描述

《体系结构-41309050219》由会员分享,可在线阅读,更多相关《体系结构-41309050219(10页珍藏版)》请在金锄头文库上搜索。

1、 实验一: 软件体系结构描述语言与建模实验实验要求: 利用 Acme Studio进行软件体系结构风格建模。要求: 描述 C2软件体系结构风格 设计此体系结构风格的一实例实验目的: 1: 学习软件体系结构描述语言 Acme,掌握建立体系结构模型的一般原则和方法。2: 熟悉 Acme Studio的使用方法。3: 熟悉软件体系结构风格。参考模型:C2 软件体系结构模型实验内容:C2软件体系结构风格:通过连接件绑定在一起的按照一组规则运作的并行构件网络。C2 风格中的系统组织规则如下:1) 、系统中的构件和连接件都有一个顶部和底部;2) 、构件的顶部应连接到某连接件的底部,构件的底部应连接到某连接

2、件的顶部,而构件与构件之间直接连接是不允许的;3) 、一个连接件可以和任意数目的其他构件和连接件连接;3) 、当两个连接件进行直接连接时,必须由其中一个底部到另一个顶部。实例:水温报警:Datebase:数据库访问构件;Class_fuwu:该构件封装了监测类,负责类的信息及相应操作;Baojing:报警构件,设置报警信息,报警级别;Fasong:发送构件,监测水温的变化幅度,时间。Shebei_jiankong:设备监控构件,监测设备是异常,正常;Baojing_fuwu:报警服务构件,从数据库中获取监控信息;System c2 = Component baojing = Port port

3、3 = Port port4 = Component datebase = Port port1 = Component fasong = Port port5 = Port port6 = Component shebei_jiankong = Port port7 = Port port8 = Component baojing_fuwu = Port port10 = Component class_fuwu = Port port1 = Port port2 = Connector con1 = Role role0 = Role role1 = Connector con2 = Ro

4、le role0 = Role role1 = Role we = Connector con3 = Role role0 = Role role1 = Role we1 = Connector con4 = Role role0 = Role role1 = Attachment class_fuwu.port1 to con1.role0; Attachment datebase.port1 to con1.role1;Attachment baojing.port4 to con2.role1;Attachment fasong.port6 to con2.we;Attachment c

5、lass_fuwu.port2 to con2.role0;Attachment baojing.port3 to con3.role1;Attachment fasong.port5 to con3.role0;Attachment shebei_jiankong.port8 to con3.we1;Attachment baojing_fuwu.port10 to con4.role0;Attachment shebei_jiankong.port7 to con4.role1;实验二:软件体系结构的设计模式设计实验实验要求: 利用设计模式设计构件的业务逻辑要求: 设计一创建型设计模式实例

6、 设计一结构型设计模式实例 设计一行为型设计模式实例 完成相应的类结构图、顺序图实验目的: 1:掌握设计模式的思想、设计过程、适用环境、实现方法2:掌握构件业务逻辑的 UML描述参考模型:类结构图:顺序图:实验内容:创建型设计模式实例:简单工厂:提供创建对象的接口实例:电影订票/测试类public class Test public static void main(String args)Ticket ticket1 = FactoryTicket.CreatTicket(普通票);ticket1.GetTicket();Ticket ticket2= FactoryTicket.Creat

7、Ticket(会员票);ticket2.GetTicket();/电影票工厂public class FactoryTicket public static Ticket CreatTicket(String type)Ticket ticket = null;switch(type)case会员票:ticket = new Member_Ticket();break;case普通票:ticket = new General_Ticket();break;return ticket;/电影票父类public class Ticket private int money;public void

8、GetTicket() /普通票public class General_Ticket extends Ticketprivate int money = 200;public void GetTicket()System.out.println(您选择的是普通票价为:+money+元);/会员票public class Member_Ticket extends Ticket private int money = 100;public void GetTicket()System.out.println(您选择的是会员票价为:+money+元);结果:类图:顺序图:结构型设计模式实例:桥接

9、模式:将抽象部分与它的实现部分分离,使他们都可以独立的改变;将抽象与现实解耦;实例:不同影城不同影票/Abstraction类public abstract class Ticket public Cinema cinema;public void setCinema(Cinema cinema)this.cinema = cinema;public abstract void print();/普通类public class General extends Ticket Overridepublic void print() cinema.run();System.out.println(普

10、通票);/会员类public class Member extends Ticket Overridepublic void print() cinema.run();System.out.println(会员票);/Implementor类public abstract class Cinema public abstract void run();/影城:曲江国际影城public class Qujiang_cinema extends Cinema Overridepublic void run() System.out.print(曲江国际影城:);/影城:万达影城public cla

11、ss Wanda_cinema extends CinemaOverridepublic void run() System.out.print(万达影城:);/测试类public class Test public static void main(String args)Ticket ticket1 = new General();ticket1.setCinema(new Wanda_cinema();ticket1.print();Ticket ticket2 = new Member();ticket2.setCinema(new Wanda_cinema();ticket2.pri

12、nt();Ticket ticket3 = new General();ticket3.setCinema(new Qujiang_cinema();ticket3.print();Ticket ticket4 = new Member();ticket4.setCinema(new Qujiang_cinema();ticket4.print();结果:类图:顺序图:行为型设计模式实例:策略模式:定义一系列算法,把它们一个个封装起来,并且使它们可相互替换,本模式使得算法可独立于使用它的客户而变化。这个模式涉及到三个角色:环境(Context)角色:持有一个 Strategy的引用。抽象策略(

13、Strategy)角色:这是一个抽象角色,通常由一个接口或抽象类实现。此角色给出所有的具体策略类所需的接口。具体策略(ConcreteStrategy)角色:包装了相关的算法或行为。实例:会员买票/抽象策略类public abstract Strategy public double calcPrice(double booksPrice);/具体策略类public class GeneralStrategy extends Strategypublic double calcPrice (double booksPrice) System.out.println(对于普通会员的无折扣);re

14、turn booksPrice; public class MemberStrategy extends Strategypublic double calcPrice (double booksPrice) System.out.println(对于会员的折扣为20%);return booksPrice * 0.8;/环境角色public class Price private Strategy strategy;public Price(Strategy strategy)this.strategy = strategy;public double quote(double booksP

15、rice)return this.strategy.calcPrice(booksPrice);/测试类public class Test public static void main(String args) /创建需要使用的策略对象Strategy strategy = new GeneralStrategy();Strategy strategy1 = new MemberStrategy();/创建环境Price price = new Price(strategy);Price price1 = new Price(strategy1);/计算价格double quote = price.quote(300);System.out.println(图书的最终价格为: + quote);double quote1 = price1.quote(300); System.out.println(图书的最终价格为: + quote1);结果:类图:顺序图:

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 解决方案

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号