《课程设计模板--面向对象技术.doc》由会员分享,可在线阅读,更多相关《课程设计模板--面向对象技术.doc(20页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、通信与信息工程学院面向对象技术II课程设计班 级:物联网1202班姓 名:杨文涛学 号:指导教师:设计时间:12.291.4成 绩:评 语:通信与信息工程学院二一三年目 录1、实验项目一4一、项目名称4创建型模式,属于基础型(工厂模式)4二、模式介绍4三、项目模式分析5(一)选择信息发送方式(抽象工厂模式)51.类图52.程序介绍53.测试结果8(二)、饮料生产(简单工厂模式)91.类图92.程序介绍93测试结果112、实验项目二11一、项目名称11结构型模式,属于创新型11二、模式介绍12三、项目模式分析12(一)川菜师模型121.类图122.程序介绍133测试结果15(二)学生模型151.
2、类图152.程序介绍153.测试结果183.工厂模式和适配器模式优缺点191、实验项目一一、项目名称创建型模式,属于基础型(工厂模式)二、模式介绍(1)实例一用工厂模式设计一个信息发送选择的模拟程序,采用抽象工厂模式,专门定义一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类,完成信息发送。(2)实例二用工厂模式设计一个饮料工厂的模拟程序,采用简单工厂模式,专门定义一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类。它又称为静态工厂方法模式,属于类的创建型模式。简单工厂模式的实质是由一个工厂类根据传入的参数,动态决定应该创建哪一个产品类(这些产品类继承自一个父类或接口)
3、的实例。该模式中包含的角色及其职责(1)工厂角色简单工厂模式的核心,它负责实现创建所有实例的内部逻辑。工厂类可以被外界直接调用,创建所需的产品对象。(2)抽象角色简单工厂模式所创建的所有对象的父类,它负责描述所有实例所共有的公共接口。(3)具体产品角色简单工厂模式的创建目标,所有创建的对象都是充当这个角色的某个具体类的实例。在这个模式中,工厂类是整个模式的关键所在。它包含必要的判断逻辑,能够根据外界给定的信息,决定究竟应该创建哪个具体类的对象。用户在使用时可以直接根据工厂类去创建所需的实例,而无需了解这些对象是如何创建以及如何组织的。有利于整个软件体系结构的优化。三、项目模式分析1.设计的目的
4、、意义 熟练掌握工厂模式的构成,并能够很好的理解并应用,可以使用工厂模式完成实验要求,提高自我动手能和编写代码能力。(一)选择信息发送方式(抽象工厂模式)1.类图2.程序介绍(1).Sender 类package ywt;public abstract class Sender public abstractvoid send();创建一个抽象类,和抽象发送方法send.(2).Mailsend,Smssend 类package ywt;public class Mailsend extends Sender public void send()System.out.println(完成用QQ
5、Mail发送);package ywt;public class Smssend extends Sender public void send() System.out.println(完成用Sms发送); 继承Sender类实现方法send.(3).SendFactory类package ywt;public abstract class SendFactory public abstract Sender send();创建抽象工厂SendFactory,和抽象方法Sender。(4)MailFactory,SmsFactory类package ywt;public class SmsF
6、actory extends SendFactory public Sender send()return new Smssend();package ywt;public class MailFactory extends SendFactory public Sender send()return (new Mailsend();继承实现SendFactory类,子工厂完成对象的实例化。(5)Text类package ywt;import java.util.Scanner;public class Text public static void main(String args) Sys
7、tem.out.println(请输入发送方式:Mail 1 Sms 2);System.out.println(你选择的是:);Scanner input=new Scanner(System.in);int sc=input.nextInt();switch(sc)case 1: SendFactory mf=new MailFactory(); Sender send1=mf.send(); send1.send();break;case 2: SendFactory sf=new SmsFactory(); Sender send2=sf.send(); send2.send();br
8、eak; 对工厂模式结构进行检测,完成工厂模式对象实例化。3.测试结果(1)实例化对象选择(2)完成实例化,输出结果(二)、饮料生产(简单工厂模式)1.类图2.程序介绍(1)drinkfactory类import java.util.Scanner;public class drinkfactory public drink product()System.out.println(请输入生产产品:cola(1) beer(2);System.out.println(你选择的是:);Scanner input=new Scanner(System.in);/this.name=name;Stri
9、ng name=input.nextLine();if(1.equals(name)return (new cola(); else if (2.equals(name)return(new beer(); else return(null) ; 创建工厂,实现产品的实例化。(2)接口drinkpublic interface drink public void product();为客户端提供实例化接口,实现产品生产。(3)cola类,beer类public class cola implements drink public void product()System.out.println
10、(生产出cola完成);public class beer implements drink public void product()System.out.println(生产出beer完成);实现接口的具体方法,完成产品生产。(5)client客户端类package ywt2;public class client public static void main(String args) drinkfactory drinkfactory =new drinkfactory ();drink drink=drinkfactory.product();drink.product();调取相应
11、的方法,通过工厂类完成产品实例化,并执行相应的方法完成产品生产。3测试结果 2、实验项目二一、项目名称结构型模式,属于创新型二、模式介绍(1)实例一用适配器模式设计一个工作的模拟程序,一个人最初是一个面点师,后来学习川菜成为川菜师的过程。(2)实例二用适配器模式设计一个学习的模拟程序,一个学生最初是高中生接受高中教育,然后升学为大学生,完成大学教育的过程。适配器(变压器)模式:把一个类的接口变换成客户端所期待的另一种接口,从而使原本因接口原因不匹配而无法一起工作的两个类能够一起工作。适配类可以根据参数返还一个合适的实例给客户端。 三、项目模式分析1.设计的目的、意义 熟练掌握适配器模式的构成,
12、并能够很好的理解并应用,可以使用适配器模式完成实验要求,提高自我动手能和编写代码能力。(一)川菜师模型1.类图2.程序介绍(1)miadianshi类package ywt3;public abstract class miandianshi public void method1()System.out.println(我会做面点1:土渣饼); public abstract void method2();该类为抽象类,有一个具体方法和一个抽象方法。(2)chuancishi接口package ywt3;public interface chuancaishi void method1();
13、 void method2(); void method3(); void method4(); 该接口创建了四个抽象方法,method1 ,method2通过适配器类完成已有方法利用,method3 method4在适配器类中实现。(3)Jineng类package ywt3;public class Jineng extends miandianshi implements chuancaishipublic Jineng()System.out.println(我是面点师,进行川菜面点技能学习,成为了川菜师);public void method2()System.out.println
14、(我会做面点2:小笼包);public void method3()System.out.println(我会做川菜1:水煮肉片);public void method4()System.out.println(我会做川菜2;青椒肉丝);该类为适配器类,完成抽象类miandianshi的抽象方法实现,和接口chuancaishi中的方法实现。(3)chushi类package ywt3;public class chushi public static void main (String args)chuancaishi ccs=new Jineng();ccs.method1();ccs.m
15、ethod2();ccs.method3();ccs.method4();该类为测试类,创建实例化对象,调用相应方法对适配器功能检测。3测试结果(二)学生模型1.类图2.程序介绍(1)Highstudent类package ywt4;public abstract class Highstudent public void method1()System.out.println(学习了高中英语); public void method2()System.out.println(学习了高中数学); public void method3()System.out.println(学习了高中化学);
16、 public void method4()System.out.println(学习了高中物理); public void method5()System.out.println(学习了高中生物); 创建高中生类,完成相应方法。(2)Collegestudent接口package ywt4;public interface Collegestudent void method1(); void method2(); void method3(); void method4(); void method5(); void method6(); void method7(); void meth
17、od8(); void method9();创建大学生接口抽象方法。(3)Study类package ywt4;public class Study extends Highstudent implements Collegestudent public Study()System.out.println(完成大学学习);public void method6()System.out.println(学习了大学生计算机网络基础); public void method7()System.out.println(学习了大学物理); public void method8()System.out.
18、println(学习了大学英语); public void method9()System.out.println(学习了面线对象及技术); 该类为适配器类,完成方法适配,实现大学生接口中的方法。(4)Student类package ywt4;public class Student public static void main(String args) Collegestudent s=new Study();s.method1();s.method2();s.method3();s.method4();s.method5();s.method6();s.method7();s.metho
19、d8();s.method9();该类为测试类,测试适配器功能。3.测试结果3.工厂模式和适配器模式优缺点(一)适配器模式优点:1、将目标类和适配者类解耦2、增加了类的透明性和复用性,将具体的实现封装在适配者类中,对于客户端类来说是透明的,而且提高了适配者的复用性3、灵活性和扩展性都非常好,符合开闭原则类适配器还有的优点:1、由于适配器类是适配者类的子类,因此可以再适配器类中置换一些适配者的方法,使得适配器的灵活性更强。类适配器的缺点:1、对于Java、C#等不支持多重继承的语言,一次最多只能适配一个适配者类,而且目标抽象类只能为接口,不能为类,其使用有一定的局限性,不能将一个适配者类和他的子类同时适配到目标接口。对象适配器还有的优点:1、把多个不同的适配者适配到同一个目标,也就是说,同一个适配器可以把适配者类和他的子类都适配到目标接口。对象适配器的缺点:1、 与类适配器模式相比,要想置换适配者类的方法就不容易。(二)工厂模式优点:1、抽象工厂模式隔离了具体类的生产,使得客户并不需要知道什么被创建。2、当一个产品族中的多个对象被设计成一起工作时,它能保证客户端始终只使用同一个产品族中的对象。3、增加新的具体工厂和产品族很方便,无须修改已有系统,符合“开闭原则”。缺点:增加新的产品等级结构很复杂,需要修改抽象工厂和所有的具体工厂类,对“开闭原则”的支持呈现倾斜性。