java程序设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一、
用户封装手机的基本属性和功能,要求手机既可以使用移动公司的SIM卡也可以使用联通公司的SIM卡(可以使用任何公司提供的SIM卡)。
1.问题的分析
如果设计的手机类中用某个具体的公司,比如移动公司,声明了对象,那么手机就缺少弹性,无法使用其他公司的SIM卡,因为一旦用户需要使用其他公司的SIM卡,需要修改手机的代码,比如增加用其他公司声明的成员变量。
如果每当用户有新的需求,就会导致修改类的某部分代码,那么就应当将这部分代码从该类中分割出去,使它和类中其他稳定的代码之间是松耦合关系(否则系统缺乏弹性,难以维护),即将每种可能的变化对应地提交给抽象类的子类负责完成。
2.设计抽象类
根据以上对问题的分析,首先设计一个抽象类SIM,该抽象类有三个抽象方法giveNumber()、setNumber()和giveCorpName(),那么SIM的子类必须实现giveNumber()、setNumber()和giveCorpName()方法。
3.设计手机类
设计MobileTelephone类(模拟手机),该类有一个useSIM(SIM card)方法,该方法的参数是SIM类型。显然,参数card可以是抽象类SIM的任何一个子类对象的上转型对象,即参数card可以调用SIM的子类重写的giveNumber()方法显示手机所使用的号码,调用子类重写的giveCorpName()方法显示该号码所属的公司。
除了子类外,还有SIM类及子类:SIMOFChinaMobile(模拟移动公司提供的卡)、SIMOFChinaUnicom(模拟联通公司提供的卡)和MobileTelephone类。
下图是MobileTelephone、SIM、SIMOFChinaMobile和SIMOFChinaUnicom类的UML 图。
二、
用类描述计算机中CPU的速度和硬盘的容量。要求Java应用程序有4个类,名字分别是PC、CPU、HardDisk和Test,其中Test是主类。
PC类与CPU和HardDisk类关联的UML图如下。
其中,CPU类要求getSpeed()返回speed的值,要求setSpeed(int m)方法将参数m的值赋值给speed。HardDisk类要求getAmount()返回amount的值。要求setAmount(int m)方法将参数的值赋值给amount。PC类要求setCPU(CPU c)将参数c的值赋值给cpu,,要求setHardDisk(HardDisk h)方法将参数h的值赋值给HD。Y要求show()方法能显示cpu的速度和硬盘的容量。
主类Test的要求
(1)main()方法中创建一个CPU对象cpu。cpu将自己的speed设置为2200;
(2)main()方法中创建一个HardDisk对象disk。disk将自己的amount设置为2200;
(3)main()方法中创建一个PC对象pc;
(4)pc调用setCPU(CPU c)方法,调用时实参是cpu;
(5)pc调用setHardDisk(HardDisk h)方法,调用时实参是disk;
(6)pc调用show()方法。
三、
设计一个动物声音“模拟器”,希望模拟器可以模拟许多动物的叫声,要求如下。
编写抽象类Animal
Animal抽象类有2个抽象方法cry()和getAnimaName(),即要求各种具体的动物给出自己的叫声和种类名称。
编写模拟器类Simulator
该类有一个playSound(Animal animal)方法,该方法的参数是Animal类型。即参数animal 可以调用Animal的子类重写的cry()方法播放具体动物的声音,调用子类重写的getAnimalName()方法显示动物种类的名称。
编写Animal类的子类:Dog和Cat类
下图是Simulator、Animal、Dog、Cat的UML图。
编写主类Application(用户程序)
在主类Application的main方法中至少包含如下代码。
Simulator simulator=new Simulator();
Simulator. playSound(new Dog());
Simulator. playSound(new Cat());
四、
使用接口实现下题。
设计一个动物声音“模拟器”,希望模拟器可以模拟许多动物的叫声,要求如下。
编写抽象类Animal
Animal抽象类有2个抽象方法cry()和getAnimaName(),即要求各种具体的动物给出自己的叫声和种类名称。
编写模拟器类Simulator
该类有一个playSound(Animal animal)方法,该方法的参数是Animal类型。即参数animal 可以调用Animal的子类重写的cry()方法播放具体动物的声音,调用子类重写的getAnimalName()方法显示动物种类的名称。
编写Animal类的子类:Dog和Cat类
下图是Simulator、Animal、Dog、Cat的UML图。
编写主类Application(用户程序)
在主类Application的main方法中至少包含如下代码。
Simulator simulator=new Simulator();
Simulator. playSound(new Dog());
Simulator. playSound(new Cat());
五、
设计一个广告牌,希望所设计的广告牌可以展示许多公司的广告词。
1.设计接口
首先设计一个接口Advertisement,该接口有2个方法show-Advertisement()和getCorpName(),那么实现Advertisement接口的类必须重写show-Advertisement()和getCorpName()方法,即要求各个公司给出具体的广告词和公司名称。
2.设计广告牌类
然后我们设计AdvertisementBoard类(广告牌),该类有一个show(Advertisement adevr)方法,该方法的参数adver是Advertisement接口类型(就像人们常说的,广告牌对外留有(接口)。显然,该参数sdver可以存放任何实现Advertisement接口的类的对象的引用,并回调类重