2013年2月8日 星期五

TQC+ JAVA 603 冰品計價系統

參考程式碼:

第一題
package JPA603.JP06_1;
//建立一個共用的方法,以供其他方法繼承
class Unit
{
 double cost,price;
  Unit()
  {
 cost = 0.0;
 price = 0.0;
  }
public double getCost(){return cost;}
public double getPrice(){return price;}
}
//建立每個原料的方法,並且繼承Unit,繼承其方法和成員
class Apple extends Unit{Apple(){cost = 6.0;price=10.0;}}
class Banana extends Unit{Banana(){cost = 2.0;price=5.0;}}
class Pudding extends Unit{Pudding(){cost = 3.0;price=5.0;}}
class Strawberry extends Unit{Strawberry(){cost = 1.0;price=5.0;}}
class Mango extends Unit{Mango(){cost = 2.0;price=5.0;}}


class JPD06_1 {   
    public static void main(String args[]) {
        //產生個原料的物件
     Apple ab = new Apple();
        Banana bb = new Banana();
        Pudding pt = new Pudding();
        System.out.println("Apple cost:" + ab.getCost());
        System.out.println("Apple price:" + ab.getPrice());
        System.out.println("Banana cost:" + bb.getCost());
        System.out.println("Banana price:" + bb.getPrice());
        System.out.println("Pudding cost:" + pt.getCost());
        System.out.println("Pudding price:" + pt.getPrice());
    }
}

第二題
package JPA603.JP06_2;

class Unit
{
 double cost,price;
  Unit()
  {
 cost = 0.0;
 price = 0.0;
  }
public double getCost(){return cost;}
public double getPrice(){return price;}
}

class Apple extends Unit{Apple(){cost = 6.0;price=10.0;}}
class Banana extends Unit{Banana(){cost = 2.0;price=5.0;}}
class Pudding extends Unit{Pudding(){cost = 3.0;price=5.0;}}
class Strawberry extends Unit{Strawberry(){cost = 1.0;price=5.0;}}
class Mango extends Unit{Mango(){cost = 2.0;price=5.0;}}

//建立一個抽象的 product方法,供A、B套餐繼承
abstract class product{
 product(){}
 //抽象取得成本
 abstract double getCost();
 //抽象取得售價
 abstract double getPrice();
 //建立利潤方法
 double getProfit(){return getPrice()-getCost();}
}

//A套餐方法
class A extends product{
 Unit a1,a2;
 //建構子,傳入兩個參數,供初始化
 A(Unit b1,Unit b2)
 {a1=b1;a2=b2;}
 double getCost(){return a1.getCost()+a2.getCost();}
 double getPrice(){return a1.getPrice()+a2.getPrice();}
}
//B套餐方法
class B extends product{
 Unit a1,a2,a3;
 //建構子,傳入三個參數,供初始化
 B(Unit b1,Unit b2,Unit b3)
 {a1=b1;a2=b2;a3=b3;}
 double getCost(){return a1.getCost()+a2.getCost()+a3.getCost();}
 double getPrice(){return a1.getPrice()+a2.getPrice()+a3.getPrice();}
}
class JPD06_2 {
    public static void main(String args[]) {
 //產生A套餐的物件,並傳入兩個原料物件
    A t1 = new A(new Apple(), new Banana());
    //產生B套餐的物件,並傳入三個原料物件
 B t2 = new B(new Banana(), new Pudding(), new Strawberry());
 B t3 = new B(new Apple(), new Banana(), new Mango());

        System.out.println("t1 price:" + t1.getPrice());
        System.out.println("t1 profit:" + t1.getProfit());
        System.out.println("t2 price:" + t2.getPrice());
        System.out.println("t2 profit:" + t2.getProfit());
        System.out.println("t3 price:" + t3.getPrice());
        System.out.println("t3 profit:" + t3.getProfit());
    }
}

第三題
package JPA603.JP06_3;

class Unit
{
 double cost,price;
  Unit()
  {
 cost = 0.0;
 price = 0.0;
  }
public double getCost(){return cost;}
public double getPrice(){return price;}
}

class Apple extends Unit{Apple(){cost = 6.0;price=10.0;}}
class Banana extends Unit{Banana(){cost = 2.0;price=5.0;}}
class Pudding extends Unit{Pudding(){cost = 3.0;price=5.0;}}
class Strawberry extends Unit{Strawberry(){cost = 1.0;price=5.0;}}
class Mango extends Unit{Mango(){cost = 2.0;price=5.0;}}

abstract class product{
 product(){}
 abstract double getCost();
 abstract double getPrice();
 double getProfit(){return getPrice()-getCost();}
}
//建立C套餐的方法,由A套餐改造而來的,僅修改成本部分
class C extends product{
 Unit a1,a2;
 C(Unit b1,Unit b2)
 {a1=b1;a2=b2;}
 double getCost(){return a1.getCost()+a2.getCost()+2;}
 double getPrice(){return (a1.getPrice()+a2.getPrice())*1.5;}
}
//建立D套餐的方法,由B套餐改造而來的,僅修改成本部分
class D extends product{
 Unit a1,a2,a3;
 D(Unit b1,Unit b2,Unit b3)
 {a1=b1;a2=b2;a3=b3;}
 double getCost(){return a1.getCost()+a2.getCost()+a3.getCost()+2;}
 double getPrice(){return (a1.getPrice()+a2.getPrice()+a3.getPrice())*1.5;}
}

class JPD06_3 {
    public static void main(String args[]) {
        //建立套餐的物件,將原料物件傳入套餐中
     C t1 = new C (new Apple(), new Banana());
     D t2 = new D (new Banana(), new Pudding(), new Strawberry());
     D t3 = new D (new Apple(), new Banana(), new Mango());

        System.out.println("t1 cost:" + t1.getCost());
     System.out.println("t1 price:" + t1.getPrice());
        System.out.println("t1 profit:" + t1.getProfit());
        System.out.println("t2 cost:" + t2.getCost());
     System.out.println("t2 price:" + t2.getPrice());
        System.out.println("t2 profit:" + t2.getProfit());
        System.out.println("t3 cost:" + t3.getCost());
     System.out.println("t3 price:" + t3.getPrice());
        System.out.println("t3 profit:" + t3.getProfit());
    }
}

第四題
package JPA603.JP06_4;

import java.util.*;

class Unit
{
 double cost,price;
  Unit()
  {
 cost = 0.0;
 price = 0.0;
  }
public double getCost(){return cost;}
public double getPrice(){return price;}
}

class Apple extends Unit{Apple(){cost = 6.0;price=10.0;}}
class Banana extends Unit{Banana(){cost = 2.0;price=5.0;}}
class Pudding extends Unit{Pudding(){cost = 3.0;price=5.0;}}
class Strawberry extends Unit{Strawberry(){cost = 1.0;price=5.0;}}
class Mango extends Unit{Mango(){cost = 2.0;price=5.0;}}

abstract class product{
 product(){}
 abstract double getCost();
 abstract double getPrice();
 double getProfit(){return getPrice()-getCost();}
}

class A extends product{
 Unit a1,a2;
 A(Unit b1,Unit b2) {a1=b1;a2=b2;}
 
 double getCost(){return a1.getCost()+a2.getCost();}
 double getPrice(){return a1.getPrice()+a2.getPrice();}
}

class B extends product{
 Unit a1,a2,a3;
 B(Unit b1,Unit b2,Unit b3){a1=b1;a2=b2;a3=b3;}
 
 double getCost(){return a1.getCost()+a2.getCost()+a3.getCost();}
 double getPrice(){return a1.getPrice()+a2.getPrice()+a3.getPrice();}
}

class Deliver{
 //建立一個LinkedList來存放套餐的物件
 LinkedList ap;
 //利用建構子產生LinkedList的物件
 Deliver()
 {ap=new LinkedList();}
 //建立加入套餐的物件
 void addProduct(product p)
 {ap.add(p);}
 
 double getTotalPrice()
 {
  double d=0.0;
  for(Iterator iterator=ap.iterator();iterator.hasNext();)
  {
   product p = (product)iterator.next();
   d+=p.getPrice();//累加售價
  }
  return d;
 }
 
 double getTotalCost()
 {
  double d=0.0;
  for(Iterator iterator=ap.iterator();iterator.hasNext();)
  {
   product p = (product)iterator.next();
    d+=p.getCost();//累加成本
  }
  return d;
 } 
 
 double getTotalProfit()
 {
  double d=0.0;
  for(Iterator iterator=ap.iterator();iterator.hasNext();)
  {
   product p = (product)iterator.next();
    d+=(p.getPrice()-p.getCost());//累加利潤
  }
  return d;
 } 
 
}

class JPD06_4 {
    public static void main(String args[]){
        //產生外送物件
     Deliver d1 = new Deliver();
        //將A套餐的物件放入,A套餐又放入兩個原料來組成
     d1.addProduct(new A(new Apple(), new Banana()));
     //將B套餐的物件放入,B套餐又放入三個原料來組成
     d1.addProduct(new B(new Banana(), new Pudding(), new Strawberry()));
        System.out.println("a Price: " + d1.getTotalPrice());
        System.out.println("a Cost: " + d1.getTotalCost());
        System.out.println("a Profit: " + d1.getTotalProfit());
        Deliver d2 = new Deliver();
        d2.addProduct(new B(new Apple(), new Banana(), new Mango()));
        d2.addProduct(new A(new Apple(), new Banana()));
        d2.addProduct(new B(new Banana(), new Pudding(), new Strawberry()));
        d2.addProduct(new B(new Apple(), new Banana(), new Mango()));
        System.out.println("b Price: " + d2.getTotalPrice());
        System.out.println("b Cost: " + d2.getTotalCost());
        System.out.println("b Profit: " + d2.getTotalProfit());
    }
}

第五題
package JPA603.JP06_5;

import java.util.*;

class Unit
{
 double cost,price;
  Unit()
  {
 cost = 0.0;
 price = 0.0;
  }
public double getCost(){return cost;}
public double getPrice(){return price;}
}

class Apple extends Unit{Apple(){cost = 6.0;price=10.0;}}
class Banana extends Unit{Banana(){cost = 2.0;price=5.0;}}
class Pudding extends Unit{Pudding(){cost = 3.0;price=5.0;}}
class Strawberry extends Unit{Strawberry(){cost = 1.0;price=5.0;}}
class Mango extends Unit{Mango(){cost = 2.0;price=5.0;}}

abstract class product{
 product(){}
 abstract double getCost();
 abstract double getPrice();
 double getProfit(){return getPrice()-getCost();}
}

class A extends product{
 Unit a1,a2;
 A(Unit b1,Unit b2){a1=b1;a2=b2;}
 double getCost(){return a1.getCost()+a2.getCost();}
 double getPrice(){return a1.getPrice()+a2.getPrice();}
}

class B extends product{
 Unit a1,a2,a3;
 B(Unit b1,Unit b2,Unit b3){a1=b1;a2=b2;a3=b3;}
 double getCost(){return a1.getCost()+a2.getCost()+a3.getCost();}
 double getPrice(){return a1.getPrice()+a2.getPrice()+a3.getPrice();}
}

class Deliver{
 LinkedList ap;
 Deliver(){ap=new LinkedList();}
 void addProduct(product p){ap.add(p);}
 //建立一個檢查的方法,若有符合特定條件,則丟出Exception來警示
 double checkOut() throws notenoughorder
 {
  double d = getTotalPrice();
  if(d<50)
   throw new notenoughorder(this);
  else
   return d;
 } 
 
 double getTotalPrice()
 {
  double d=0.0;
  for(Iterator iterator=ap.iterator();iterator.hasNext();)
  {
   product p = (product)iterator.next();
   d+=p.getPrice();
  }
  return d;
 }
 
 double getTotalCost()
 {
  double d=0.0;
  for(Iterator iterator=ap.iterator();iterator.hasNext();)
  {
   product p = (product)iterator.next();
   d+=p.getCost();
  }
  return d;
 } 
 
 double getTotalProfit()
 {
  double d=0.0;
  for(Iterator iterator=ap.iterator();iterator.hasNext();)
  {
   product p = (product)iterator.next();
   d+=(p.getPrice()-p.getCost());
  }
  return d;
 } 
 
}


//建立一個Exception的方法,並傳入外送物件
class notenoughorder extends Exception{
 static Deliver d;
 notenoughorder(Deliver deliver){d=deliver;}
 //在裡面再建立一個order的方法,回傳外送總價
 static double order(){return d.getTotalPrice();}
}

class JPD06_5 {
    public static void main(String args[]) {
       //利用try-catch包住整個main的程式
     try{
            Deliver d1 = new Deliver();
            d1.addProduct(new A(new Apple(), new Banana()));
            d1.addProduct(new B(new Banana(), new Pudding(), new Strawberry()));
            d1.addProduct(new B(new Banana(), new Pudding(), new Strawberry()));
            d1.addProduct(new B(new Apple(), new Banana(), new Mango()));
            System.out.println("a Price: " + d1.getTotalPrice());
            System.out.println("a Cost: " + d1.getTotalCost());
            System.out.println("a Profit: " + d1.getTotalProfit());
            System.out.println("");
            //進行外送的檢查
            d1.checkOut();            
            Deliver d2 = new Deliver();
            d2.addProduct(new B(new Apple(), new Banana(), new Mango()));
            d2.addProduct(new A(new Apple(), new Banana()));
            System.out.println("b Price: " + d2.getTotalPrice());
            System.out.println("b Cost: " + d2.getTotalCost());
            System.out.println("b Profit: " + d2.getTotalProfit());
             //進行外送的檢查
            d2.checkOut();   
       }
        catch(notenoughorder e)//抓取錯誤的catch
            {
         //抓取到錯誤後,會進來此block,執行程式
          System.out.println("Not enough order for carry out:"+
             notenoughorder.order()); 
            }
        }
    }




TQC+ JAVA6 試題總覽:連結


聲明:

本篇教學的程式碼皆由作者群編輯,歡迎轉貼本教學,但請全文轉貼,尊重一下作者群的心血喔 ^_^

沒有留言:

張貼留言