面向对象系统分析和设计综合实验报告4Word下载.doc
《面向对象系统分析和设计综合实验报告4Word下载.doc》由会员分享,可在线阅读,更多相关《面向对象系统分析和设计综合实验报告4Word下载.doc(18页珍藏版)》请在冰豆网上搜索。
publicclassIdClient{
publicstaticvoidmain(String[]args){
IdentityCardNo.getInstance();
}
}
packageRefactoring1;
publicclassIdentityCardNo{
privatestaticIdentityCardNoinstance;
privateStringno;
privateIdentityCardNo(){
publicstaticIdentityCardNogetInstance(){
if(instance==null){
System.out.println("
第一次办理身份证,分配新号码"
);
instance=newIdentityCardNo();
instance.setNo("
No6000654321"
身份证号码为:
"
+instance.getNo());
}else{
重复办理身份证,获取旧号码!
}
returninstance;
publicStringgetNo(){
returnno;
publicvoidsetNo(Stringno){
this.no=no;
2.每一麻将局都有两个骰子,因此骰子就应当是双例类。
现使用多例模式模拟该场景。
importjava.util.Date;
importjava.util.Random;
publicclassDice{
privatestaticDicedie1=newDice();
privatestaticDicedie2=newDice();
privateDice(){
publicstaticDicegetInstance(intwhichOne){
if(whichOne==1){
returndie1;
returndie2;
publicsynchronizedintdice(){
Dated=newDate();
Randomr=newRandom(d.getTime());
intvalue=r.nextInt();
value=Math.abs(value);
value=value%6;
value+=1;
returnvalue;
publicclassDiceClient{
privatestaticDicedie1,die2;
die1=Dice.getInstance
(1);
die2=Dice.getInstance
(2);
System.out.println("
第一骰子骰出:
"
+die1.dice());
第二骰子骰出:
+die2.dice());
3.某软件公司为某电影院开发了一套影院售票系统,在该系统中需要为不同类型的用户提供不同的电影票(MovieTicket)打折(Discount)方式,具体打折方案如下:
²
学生凭学生证可享受票价8折优惠;
年龄在10周岁及以下的儿童可享受每张票减免10元的优惠(原始票价需大于等于20元);
影院VIP用户除享受票价半价优惠外还可进行积分,积分累计到一定额度可换取电影院赠送的奖品。
该系统在将来可能还要根据需要引入新的打折方式。
试使用策略模式设计并编程模拟实现该影院售票系统。
publicinterfaceDiscount{
publicdoublecalculate(doubleprice);
publicclassMovieTicket{
privatedoubleprice;
privateDiscountdiscount;
//维持一个对抽象折扣类的引用
publicvoidsetPrice(doubleprice){
this.price=price;
}
//注入一个折扣类对象
publicvoidsetDiscount(Discountdiscount){
this.discount=discount;
publicdoublegetPrice(){
//调用折扣类的折扣价计算方法
returndiscount.calculate(this.price);
}
//VIP会员票折扣类:
具体策略类
publicclassVIPDiscountimplementsDiscount{
publicdoublecalculate(doubleprice){
System.out.println("
VIP票:
增加积分!
returnprice*0.5;
}
//学生票折扣类:
publicclassStudentDiscountimplementsDiscount{
publicdoublecalculate(doubleprice){
System.out.println("
学生票:
returnprice*0.8;
//儿童票折扣类:
publicclassChildrenDiscountimplementsDiscount{
儿童票:
returnprice-10;
publicclassMoviceClient{
publicstaticvoidmain(Stringargs[]){
MovieTicketmt=newMovieTicket();
doubleoriginalPrice=60.0;
doublecurrentPrice;
mt.setPrice(originalPrice);
System.out.println("
原始价为:
+originalPrice);
---------------------------------"
Discountdiscount=newVIPDiscount();
//vip用户
mt.setDiscount(discount);
//注入折扣对象
currentPrice=mt.getPrice();
折后价为:
+currentPrice);
discount=newStudentDiscount();
//学生用户
discount=newChildrenDiscount();
//儿童用户
}
3)实现结果:
4.某软件公司欲开发一款飞机模拟系统,该系统主要模拟不同种类飞机的飞行特征与起飞特征,需要模拟的飞机种类及其特征如表1所示:
表1飞机种类及特征一览表
飞机种类
起飞特征
飞行特征
直升机(Helicopter)
垂直起飞(VerticalTakeOff)
亚音速飞行(SubSonicFly)
客机(AirPlane)
长距离起飞(LongDistanceTakeOff)
歼击机(Fighter)
超音速飞行(SuperSonicFly)
鹞式战斗机(Harrier)
超音速飞行(SuperSonicFl