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);
}
【員工實作類別】
*
public class Cashier implements Employees {
private int performance;
public int getPerformance() {
return performance;
public void sellProduct(Product product) {
performance += product.buyCost() - product.getCost();
【產品抽像介面】
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;
* 買走的價格
public int buyCost() {
return (int) Math.floor(getCost() + getCost() * profite);
* 己結帳
public void isCheckOut() {
* 商品名稱
* @param productName
protected abstract String getProductName();
* 商品價格
protected abstract int getCost();
【產品實作類別-咖啡】
public class ProductCoffee extends Product {
/* 價格 */
private int cost;
public ProductCoffee(int cost) {
super();
this.cost = cost;
protected int getCost() {
return cost;
protected String getProductName() {
return "咖啡";
【產品實作類別-可樂】
public class ProductCola extends Product {
/*價格*/
public ProductCola(int cost) {
// TODO Auto-generated method stub
return "可樂";
【商品實作類別-Market】
import java.util.LinkedList;
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();
* 買走可藥
public Product getCola() {
return colaProducts.pollFirst();
【產品供應商實作類別-Manufactureres】
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:
orderProductList.add(new ProductCola(20));
default:
return null;
【收銀機實作類別-CheckOut】
public class CheckOut {
/*重商品收入*/
private static int totalIncome;
* 結帳
* @param employees
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】
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】
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.getCola());
checkOut.checkout(john, customer);
* 結算一天的績效
checkOut.printTotalIncome();
System.out.println("\n=======工作績率評估===============");
System.out.println("Jarey Performance=" +
jarey.getPerformance()
+ "\nJohn Performance=" + john.getPerformance());
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());
}
}