您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 项目/工程管理 > 面向对象技术实验指导书(2011新)
1实验一面向对象程序设计一、实验配置:安装C++和JAVA程序的PC机。二、实验内容:编写一个统计动物种类的程序。练习应用类的继承,加深理解继承的概念。首先声明一个名为Animal(动物)的基类,然后再创建两个派生类,一个是Mammal(哺乳动物),Bird(鸟类)。子类Mammal含有子女数和读取子女数的成员函数NumOffspring();子类Bird含有生蛋数、是否筑巢,及取生蛋的成员函数GetEggs()。成员函数ShowMannal()和ShowBird()的功能是分别输出各自的对象参数。三、部分类定义AnimalBird类的定义如下:ClassAnimal{Public:Animal(constchar*s){strncpy(name,s,29);}//构造函数Constchar*GetName(){returnname;}//取动物的名称Private:Charname[30];//动物的名称}Mammal类的定义如下:ClassMammal:publicAnimal//继承了Animal类{public:Mammal(constchar*s,intnc):Animal(s){offspring=nc;}//构造函数intNumOffspring(){returnoffspring;}//取子女数目函数voidShowMammal();//输出对象的参数2private:intoffspring;//记录哺乳动物子女的数目};Bird类的定义如下:ClassBird:publicAnimal//继承了Animal类{Public:Bird(constchar*s,intne,intnests);//构造函数intGetEggs(){returneggs;}//取生蛋数目constchar*BuildNest();//判断是否筑巢voidShowBird();//输出Bird类对象的参数private:integgs;//生蛋数intnesting;;//若筑巢则为真};3实验二外观模式的运用一、实验配置:安装C++和JAVA程序的PC机。二、实验内容:案例描述:今年十一国庆节,我呆在家里美美的享受了一下家的温馨。首先让我来介绍一下我的家庭成员:妻子(Wife)女儿(Daughter)我(Me)我们都是家庭(Family)的一分子,我们是以家庭对外的。就象我们国家对外是以“中国”,外国人都称我们是中国人,但在中国这个大家庭内部,包括了汉、回、蒙……等56个民族一样。可见对外我们是要以统一的身份,或叫统一的外观(Facade)进行展现。三、部分类定义:分析:应先定义家庭的各个成员类,但这些类应给定统一的外观展现类。类定义如下:妻子(Wife):publicclassWife{protectedWife(){System.out.println(妻子美丽!);}}女儿(Daughter):publicclassDaughter{protectedDaughter(){System.out.println(女儿可爱!);}}我(Me):publicclassMe{protectedMe(){System.out.println(我爱我家!);4}}定义家庭对外展现(FamilyOutShow)类:publicclassFamilyOutShow{publicvoidMyFamily(){WifemyWife=newWife();//我的妻子DaughtermyDaughter=newDaughter();//我的女儿Meme=newMe();//我自己}}3、编写测试类:publicclassMyFamilyTest{publicstaticvoidmain(String[]args){FamilyOutShowmyFamily=newFamilyOutShow();myFamily.MyFamily();}}4、说明:A:Facade的定义:为子系统中的一组接口提供一个一致的界面。B:使用统一对外接口,可以降低系统的复杂性,增加了灵活性。从本例可以看到,外界只是访问了家庭对外展现(FamilyOutShow)类,而没有直接与成员类打交道。这样比如说增加了一个新的成员类(比如说儿子(Son)类),只要修改家庭对外展现(FamilyOutShow)类即可,而不用修改调用。5实验三适配器模式的运用一、实验配置:安装C++和JAVA程序的PC机。二、实验内容:案例描述:小美和小芳是好朋友,两人都喜欢三件事情:美食、购物、旅游,但是这三件事情都是小芳母亲最厌恶的,她希望自己的女儿能做两件事情:读书、练字,可是姑娘一听见这些东西就头痛。小美和小芳约定好暗号,出门的时候要说母亲爱听的,实际上做的是姑娘们爱做的,说一套做一套,这样两个人就可以搞定了。暗号如下:Reading:老母亲以为是去读书,实际上出了门就去Eating和Shopping了,Writing:老母亲以为是去练字,实际上出了门就去Travelling了。三、部分类定义:案例分析:这套暗号约定实际上就是个适配器。它把对外的接口从姑娘们希望的Eating、Shopping、Travelling变成了母亲希望的Reading和Writing,这样就可以顺利通过母亲这一关了;但实际上做的还是姑娘希望的Eating、Shopping、Travelling。事情从表面上看是一回事,实际上内部的实现可能是另一回事。最后当然是姑娘们胜利了。部分类定义及实现代码:usingSystem;usingSystem.Collections.Generic;usingSystem.Text;namespaceAdapter...{publicclassGirl...{publicvoidEating()...{System.Console.WriteLine(不用装样子了,我要吃大闸蟹!);System.Console.WriteLine();6}publicvoidShopping()...{System.Console.WriteLine(不用装样子了,买一件今年最流行的小背心!);System.Console.WriteLine();}publicvoidTravelling()...{System.Console.WriteLine(不用装样子了,千山是个不错的地方哦!);System.Console.WriteLine();}}publicinterfaceMother...{voidReading();voidWriting();}publicclassAgreement:Mother...{Girlgirl=newGirl();publicvoidReading()...{girl.Eating();girl.Shopping();}publicvoidWriting()...{girl.Travelling();}}}客户端:Client.csusingSystem;usingSystem.Collections.Generic;7usingSystem.Text;namespaceAdapter...{classClient...{staticvoidMain(string[]args)...{Agreementag=newAgreement();Console.WriteLine(小美:老母亲,我们去读书了!);Console.WriteLine(老母亲:乖,好好读呀!);ag.Reading();Console.WriteLine();Console.WriteLine(小美:老母亲,我们去练字了!);Console.WriteLine(老母亲:好呀好呀!);ag.Writing();System.Console.Read();}}}8实验四桥接模式的运用一、实验配置:安装C++和JAVA程序的PC机。二、实验内容:案例描述:设计模式之Bridge——游戏篇今天从电子市场买来两张游戏碟,一张是三国游戏(SanGuoGame),一张是CS游戏(CSGame)。玩过游戏的人可能都知道,游戏对计算机系统(ComputerSystem)是有要求的,可能一个游戏在Windows98系统下能玩,到了Windows2000系统下就不能玩了,因此为了不走冤枉路,先看看游戏要求的计算机系统(ComputerSystem)可是一个好习惯呦!三、案例分析及部分类定义桥接模式的意图就是将抽象和行为划分开来,各自独立,但能动态的结合。从本例中我们可以看到,不同的游戏对系统的要求是不同的,三国和CS可能都需要Windows98系统,也可能需要Windows2000系统,甚至要求不相同的系统,因此处理这类问题,我们就可以用Bridge这种模式了。这里行为是指游戏,抽象是指操作系统。部分类定义:1、在这里,先定义计算机系统(ComputerSystem)接口类:publicinterfaceComputerSystem{publicabstractvoidplayGame();//玩游戏}2、再定义对计算机系统(ComputerSystem)接口的具体实现类:A:Windows98系统publicclassWindows98implementsComputerSystem{publicvoidplayGame(){System.out.println(玩Windows98游戏!);}}B:Windows2000系统publicclassWindows2000implementsComputerSystem{publicvoidplayGame(){System.out.println(玩Windows2000游戏!);9}}3、定义游戏(Game)类:publicabstractclassGame{publicabstractvoidplay();//玩游戏protectedComputerSystemgetSetupSystem(Stringtype){//获得要安装的系统if(type.equals(Windows98)){//如果游戏要求必须安装在Windows98下returnnewWindows98();//使用Windows98系统}elseif(type.equals(Windows2000)){//如果游戏要求必须安装在Windows2000下returnnewWindows2000();//使用Windows2000系统}else{returnnewWindows98();//默认启动的是Windows98系统}}}4、定义游戏(Game)类的子类:A:三国游戏(SanGuoGame)publicclassSanGuoGameextendsGame{privateComputerSystemcomputerSystem;publicSanGuoGame(Stringtype){//看游戏要求安装在那个系统上computerSystem=getSetupSystem(type);//那么使用这个系统}publicvoidplay(){//玩游戏computerSystem.playGame();System.out.println(我正在玩三国,不要烦我!);}}B:CS游戏(CSGame)publicclassCSGameextendsGame{privateComputerSystemcomputerSystem;publicCSGame(Stringtype){//看游戏要求安装在那个系统上computerSystem=getSetupSystem(type);//那么使用这个系统}10publicvoidplay(){//玩游戏computerSystem.playGame();System.out.println(我正在玩CS,不要烦我!);}}5、编写测试类:publicclassTest{publicstaticvoidmain(String[]args){
本文标题:面向对象技术实验指导书(2011新)
链接地址:https://www.777doc.com/doc-1980796 .html