八、新增 Java Model 專案,撰寫控制類別程式碼
1. 新增 Java Model 專案:
-
(1) 將 Eclipse 切至「Java Perspective」。
(2) 新增「Java Project」專案,專案名稱為「烏龜Model」。
(點擊圖片鏈接看原圖)圖 12、在 Eclipse 下新增 Java 專案
2. 撰寫控制 (control)類別與資料傳遞 (data transfer)類別的程式碼框架 (skeleton)
訂購烏龜_Control.java:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | package com.order.control; import java.util.*; import com.order.dto.*; public class 訂購烏龜_Control { public ArrayList<vo_ 烏龜資訊> list烏龜清單() { return null; } public VO_訂購確認資訊 結帳(VO_結帳資訊 m_結帳) { return null; } public boolean SaveOrder() { return false; } } </vo_> |
VO_烏龜資訊.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | package com.order.dto; public class VO_烏龜資訊 { public String getId() { return id; } public void setId(String id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getPrice() { return price; } public void setPrice(int price) { this.price = price; } private String id; private String name; private int price; } |
VO_結帳資訊.java:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | package com.order.dto; public class VO_結帳資訊 { public String getId() { return id; } public void setId(String id) { this.id = id; } public int get數量() { return 數量; } public void set數量(int 數量) { this.數量 = 數量; } private String id; private int 數量; } |
VO_訂購確認資訊.java:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | package com.order.dto; public class VO_訂購確認資訊 { public VO_烏龜資訊 getV烏龜() { return v烏龜; } public void setV烏龜(VO_烏龜資訊 v烏龜) { this.v烏龜 = v烏龜; } public int get總價() { return 總價; } public void set總價(int 總價) { this.總價 = 總價; } private VO_烏龜資訊 v烏龜; private int 總價; } |
筆記重點
- 控制類別的類別與方法 (class and method)名稱均是源自於上圖 4 於 EA 中所設計的 UML 控制類別。
- 訂購烏龜_Control.java 所宣告的三個公用方法 (public method)即是反映「訂購烏龜」使用案例內的動作步驟,參與者 (未來透過 JSP 實作)與系統 (本控制類別)之間的互動共有三次。
- 目前僅定義程式碼的框架 (skeleton),故私有方法 (private method)省略,且回傳值僅回傳空值 (null)即可 (事實上,這可以視團隊開發節奏與寫碼熟悉度而加深細節)。
- 控制性的類別被歸類於「com.order.control」;而資料傳遞 (data transfer)類別則被歸類於「com.order.dto」。
- 以目前 Java 世界的主流,仍以資料物件 (data object)作為物件之間互動的參數傳遞與回傳值型態。相較於 .NET 作法,則以 DataSet (本質為 XML)為參數與回傳值的資料傳遞。
- 命名為 VO_ 開頭的物件 (如 VO_結帳資訊.java)即為資料物件。這類物件僅單純只有 「getter、setter」的取值方法,所以也被稱為「值物件 (value object)」。這些資料型物件就被歸類置於「com.order.dto」套件 (package)內。
- 切記! VO 物件不等同於企業物件 (business object)-著重在企業邏輯的運算,或資料庫內的表格 (從邏輯分析而言應稱為 Entity,實體)-著重在領域概念 (domain concept)的資料結構。它僅是做為方便物件之間 (尤為在不同 tier 的傳遞,如 JSP → Control Object。)傳遞的參數與回傳值而已。
- 一般 VO 物件的設計規劃,並不需要特別嚴謹 (甚至是抱著快速且隨便的態度)。以本例而言,所設計的三種 VO 物件 (VO_烏龜資訊, VO_結帳資訊, VO_確認訂購資訊),僅是在滿足表單與控制類別之間的資料傳遞而已。
- 至於資料庫的表格設計,一般稱之為 E-R (Entity-Relationship)設計,因會考量到共用性需求,所以會嚴謹許多。在未來的系統設計整合階段,VO 物件需經過轉換程序,透過 O-R Mapping 機制 (如 Hibernate),寫入至資料庫 (反之亦然)。