知識社群登入
位置: 艾鍗學院 Blog > 專業論壇 > 討論
1樓
 
請問會提供解答嗎?
目前我正在自學JAVA, 準備考SCJP哩~
 
2樓
 
 考SCJP ? 你方向是不是錯了啊~SCJP考的是選擇題,
 主要是在考語法,程式觀念而已. 不會考這種題目!
3樓
 
 好難喔~~程度不佳! 寫到現在都還寫不出來..
.下禮拜就要上android 了 啊~殘念~
 
4樓
 
 有請老師寫個解答給大家參考,希望對各位有所幫助
 老師說"遇到問題很正常,這代表練習還不夠,所以各位更應該多練習
 之後還會有其他題目,但他不會也不該一直寫解答,而是各位把不懂的地方提出來,
 直接討論及解答. 此外, 軟體程式是寫出來的,不是看出來的,也不可能用選擇題去選出來. "
 
  .
 
【員工介面】 
 

package com.ittraining.project;

/**

 * 艾鍗學院 www.ittraining.com.tw

 * Android產訓專班 - 第一階段Java課程

 * 作者: Jarey 2011.10.15

 * 本程式著作權為艾鍗學院所有,轉載使用請保留以上之作著宣告

 */

public interface Employees {

   

    /**

     * 取得績效分數

     * @return

     */

    public int getPerformance();

   

    /**

     * 賣出商品

     * @param product

     */

    public void sellProduct(Product product);

   

}

 

 

 

 

【員工實作類別】

package com.ittraining.project;

 

/**

 *

 * 艾鍗學院 www.ittraining.com.tw

 * Android產訓專班 - 第一階段Java課程

 * 作者: Jarey 2011.10.15

 * 本程式著作權為艾鍗學院所有,轉載使用請保留以上之作著宣告

 */

public class Cashier implements Employees {

    private int performance;

 

    public int getPerformance() {

        return performance;

    }

 

    public void sellProduct(Product product) {

        performance += product.buyCost() - product.getCost();

    }

}

 

 

【產品抽像介面】

package com.ittraining.project;

 

/**

 *

 * 艾鍗學院 www.ittraining.com.tw

 * Android產訓專班 - 第一階段Java課程

 * 作者: Jarey 2011.10.15

 * 本程式著作權為艾鍗學院所有,轉載使用請保留以上之作著宣告

 */

public abstract class Product {

    /* 利潤百分比 */

    private float profite;

 

    @Override

    public String toString() {

        StringBuffer sb = new StringBuffer();

        sb.append("[" + getProductName() + "]\t");

        sb.append("售價:" + buyCost());

        return sb.toString();

    }

 

    /**

     * 設定商品利潤

     *

     * @param profite

     *            定義利潤為百分之多少

     */

    public void setProfit(float profite) {

        this.profite = profite;

    }

 

    /**

     * 買走的價格

     *

     * @return

     */

    public int buyCost() {

        return (int) Math.floor(getCost() + getCost() * profite);

    }

 

    /**

     * 己結帳

     */

    public void isCheckOut() {

 

    }

 

    /**

     * 商品名稱

     *

     * @param productName

     * @return

     */

    protected abstract String getProductName();

 

    /**

     * 商品價格

     *

     * @return

     */

    protected abstract int getCost();

}

 

 

【產品實作類別-咖啡】

package com.ittraining.project;

 

/**

 *

 * 艾鍗學院 www.ittraining.com.tw

 * Android產訓專班 - 第一階段Java課程

 * 作者: Jarey 2011.10.15

 * 本程式著作權為艾鍗學院所有,轉載使用請保留以上之作著宣告

 */

public class ProductCoffee extends Product {

    /* 價格 */

    private int cost;

 

    public ProductCoffee(int cost) {

        super();

        this.cost = cost;

    }

 

    @Override

    protected int getCost() {

        return cost;

    }

    @Override

    protected String getProductName() {

 

        return "咖啡";

    }

}

 

【產品實作類別-可樂】

package com.ittraining.project;

/**

 *

 * 艾鍗學院 www.ittraining.com.tw

 * Android產訓專班 - 第一階段Java課程

 * 作者: Jarey 2011.10.15

 * 本程式著作權為艾鍗學院所有,轉載使用請保留以上之作著宣告

 */

public class ProductCola extends Product {

    /*價格*/

    private int cost;

   

    public ProductCola(int cost) {

        super();

        this.cost = cost;

    }

 

    @Override

    protected int getCost() {

        // TODO Auto-generated method stub

        return cost;

    }

 

    @Override

    protected String getProductName() {

        // TODO Auto-generated method stub

        return "可樂";

    }

}

 

【商品實作類別-Market

package com.ittraining.project;

 

import java.util.LinkedList;

/**

 *

 * 艾鍗學院 www.ittraining.com.tw

 * Android產訓專班 - 第一階段Java課程

 * 作者: Jarey 2011.10.15

 * 本程式著作權為艾鍗學院所有,轉載使用請保留以上之作著宣告

 */

public class Market {

    /* 存放上架商品 */

    LinkedList<Product> coffeeProducts = new LinkedList<Product>();

    LinkedList<Product> colaProducts = new LinkedList<Product>();

 

    /**

     * 初始化,補貨

     */

    public void initProduct() {

        Manufacturers.order(Manufacturers.PRODUCT_COD_COFFEE, 2);

 

        /* 咖啡三罐 */

        coffeeProducts.addAll(setProfit(0.3f, Manufacturers.order(

                Manufacturers.PRODUCT_COD_COFFEE, 3)));

        /* 可樂三罐 */

        colaProducts.addAll(setProfit(0.3f, Manufacturers.order(

                Manufacturers.PRODUCT_CODE_COLA, 3)));

    }

 

    public LinkedList<Product> setProfit(float profit,

            LinkedList<Product> products) {

        for (Product product : products) {

            product.setProfit(profit);

        }

        return products;

    }

 

    /**

     * 買走咖啡

     */

    public Product getCoffee() {

        return coffeeProducts.pollFirst();

    }

 

    /**

     * 買走可藥

     *

     * @return

     */

    public Product getCola() {

        return colaProducts.pollFirst();

    }

 

}

 

【產品供應商實作類別-Manufactureres

package com.ittraining.project;

 

import java.util.LinkedList;

/**

 *

 * 艾鍗學院 www.ittraining.com.tw

 * Android產訓專班 - 第一階段Java課程

 * 作者: Jarey 2011.10.15

 * 本程式著作權為艾鍗學院所有,轉載使用請保留以上之作著宣告

 */

public class Manufacturers {

    public static final int PRODUCT_CODE_COLA = 0;

    public static final int PRODUCT_COD_COFFEE = 1;

   

    public static LinkedList<Product> order(int productCode, int number) {

        LinkedList<Product> orderProductList=new

LinkedList<Product>();

        switch (productCode) {

        case PRODUCT_COD_COFFEE:

            for(int i=0;i<number;i++)

                orderProductList.add(new ProductCoffee(35));

            return orderProductList;

        case PRODUCT_CODE_COLA:

            for(int i=0;i<number;i++)

                orderProductList.add(new ProductCola(20));

            return orderProductList;

        default:

            return null;

        }

    }

}

 

 

【收銀機實作類別-CheckOut

package com.ittraining.project;

 

/**

 *

 * 艾鍗學院 www.ittraining.com.tw

 * Android產訓專班 - 第一階段Java課程

 * 作者: Jarey 2011.10.15

 * 本程式著作權為艾鍗學院所有,轉載使用請保留以上之作著宣告

 */

public class CheckOut {

    /*重商品收入*/

    private static int totalIncome;

    /**

     * 結帳

     * @param employees

     * @param product

     */

    public void checkout(Employees employees,Customer customer){

        System.out.println("\n========收銀機進行結帳=====");

        int totalCost=0;

        Product product=null;

        while((product=customer.getProduct())!=null){

            /*加員工績效*/

            employees.sellProduct(product);

            /*標註己賣出*/

            product.isCheckOut();

            /*加總購買金額*/

            totalCost+=product.buyCost();

            /*印出結帳商品*/

            System.out.println(product.toString());

        }

        /*算總收入*/

        totalIncome+=totalCost;

        System.out.println("總金額="+totalCost);

    }

    /**

     * 印出今日總收入

     */

    public void printTotalIncome(){

        System.out.println("============================");

        System.out.println("今日總收入:"+totalIncome+"");

    }

}

 

 

【顧客實作類別-Customer

package com.ittraining.project;

 

import java.util.LinkedList;

/**

 *

 * 艾鍗學院 www.ittraining.com.tw

 * Android產訓專班 - 第一階段Java課程

 * 作者: Jarey 2011.10.15

 * 本程式著作權為艾鍗學院所有,轉載使用請保留以上之作著宣告

 */

public class Customer {

    /*己購買的商品*/

    private LinkedList<Product> buyList=new LinkedList<Product>();

   

    /*放商品進購物車*/

    public void putProduct(Product product){

        if(product!=null)

            buyList.add(product);

    }

    /*取出商品結帳*/

    public Product getProduct(){

        return buyList.pollFirst();

    }

}

 

 

【主程式-Main

package com.ittraining.project;

/**

 *

 * 艾鍗學院 www.ittraining.com.tw

 * Android產訓專班 - 第一階段Java課程

 * 作者: Jarey 2011.10.15

 * 本程式著作權為艾鍗學院所有,轉載使用請保留以上之作著宣告

 */

public class Main {

    public static void main(String args[]) {

        /*商店*/

        Market market = new Market();

        market.initProduct();

        /*顧客*/

        Customer customer = new Customer();

 

        /* 收銀員 */

        Employees jarey = new Cashier();

        /* 收銀員 */

        Employees john = new Cashier();

       

        /* 收銀機 */

        CheckOut checkOut = new CheckOut();

        /************************

         *  買東西

         ***********************/

       

        /* 買走咖啡 */

        customer.putProduct(market.getCoffee());

 

        /************************

         *  結帳

         ***********************/

        System.out.println("##########艾鍗商城#################");

        checkOut.checkout(jarey, customer);

        /************************

         *  買東西

         ***********************/

        /* 買走咖啡 */

        customer.putProduct(market.getCoffee());

        /* 買走可樂 */

        customer.putProduct(market.getCola());

        /************************

         *  結帳

         ***********************/

        checkOut.checkout(john, customer);

 

        /************************

         *  結算一天的績效

         ***********************/

        checkOut.printTotalIncome();

        System.out.println("\n=======工作績率評估===============");

        System.out.println("Jarey Performance=" +

jarey.getPerformance()

                + "\nJohn Performance=" + john.getPerformance());

    }

}