#眉標=SD #副標=物件導向分析與塑模 #大標=模型轉換程式碼實作 #作者=文/陳俊吉 -----box----- #程式1 public interface IPersonProfile { //Property Get Accessor public String getName(); public String getAddress(); public String getPhone(); public String getBuildDate(); //Non Conduct Business Service } public interface IPerson extends IPersonProfile { //Genreal //Property Set Accessor public void setName(String name); public void setAddress(String address); public void setPhone(String phone); public void setBuildDate(String buildDate); //Collaborator Accessor public ICustomer getCustomer(); public void AddCustomer(ICustomer customer); public void removeCustomer(ICustomer customer); } -----end----- -----box----- #程式2 public interface ICustomerProfile extends IPersonProfile { //Property Get Accessor public String getCustomerID(); //Non Conduct Business Service } public interface ICustomer extends ICustomerProfile{ //Specific //Property Set Accessor public void setCustomerID(String customerID); //Collaborator Accessor public IPerson getPerson(); public void AddPerson(IPerson person); public void removePerson(IPerson person); } -----end----- -----box----- #程式3 public class Person implements IPerson { //Variable private String name; private String address; private String phone; private String buildDate; //Collaborator private ICustomer customer; //Property Set Accessor public void setName(String name) { this.name = name; } public void setAddress(String address) { this.address = address; } public void setPhone(String phone) { this.phone = phone; } public void setBuildDate(String buildDate) { this.buildDate = buildDate; } //Collaborator Accessor public ICustomer getCustomer() { return customer; } public void AddCustomer(ICustomer customer) { this.customer = customer; } public void removeCustomer(ICustomer customer) { if (this.customer.equals(customer)) { this.customer = null; } } //Property Get Accessor public String getName() { return name; } public String getPhone() { return phone; } public String getAddress() { return address; } public String getBuildDate() { return buildDate; } } public class Customer implements ICustomer { //Variable private String customerID; //Collaborator private IPerson person; //Property Set Accessor public void setCustomerID(String customerID) { this.customerID = customerID; } //Collaborator Accessor public IPerson getPerson() { return person; } public void AddPerson(IPerson person) { this.person = person; } public void removePerson(IPerson person) { if (this.person.equals(person)) { this.person = null; person.removeCustomer(this); } } //Property Get Accessor public String getCustomerID() { return customerID; } //Property Get Accessor public String getName() { return person.getName(); } public String getPhone() { return person.getPhone(); } public String getAddress() { return person.getAddress(); } public String getBuildDate() { return person.getBuildDate(); } } -----end----- -----box----- #程式4 import java.util.List; public interface IStore { //Whole //Property Accessor public String getName(); public void setName(String name); //Collaborator Accessor public List getItems(); public void addItem(IItem item); public void removeItem(IItem item); //Service public long calcByStore(IStore store); } public interface IItem { //Part //Property Accessor public String getSerial(); public void setSerial(String serial); public String getName(); public void setName(String name); public int getPrice(); public void setPrice(int price); //Collaborator Accessor public IStore getStore(); public void addStore(IStore store); public void removeStore(IStore store); //Service public long calcByItem(); public Item getItemBySerial(); } -----end----- -----box----- #程式5 import java.util.Iterator; import java.util.List; public class Store implements IStore { //Variable private String name; //Collaborator private List items; //Property Accessor public String getName() { return name; } public void setName(String name) { this.name = name; } //Collaborator Accessor public List getItems() { return items; } public void addItem(IItem item) { if (!items.contains(item)) { items.add(item); } } public void removeItem(IItem item) { if (items.contains(item)) { items.remove(item); } } //Service public long calcByStore(IStore store) { long total = 0; IItem item; for (Iterator i = items.iterator(); i.hasNext();) { item = (IItem) i.next(); total += item.calcByItem(); } return total; } } import java.util.List; import java.util.Iterator; public class Item implements IItem { //Variable private String serial; private String name; private int price; //Collaborator private IStore store; //For Sample private List saleLineItems; //Property Accessor public String getSerial() { return serial; } public void setSerial(String serial) { this.serial = serial; } 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; } //Collaborator Accessor public IStore getStore() { return store; } public void addStore(IStore store) { this.store = store; } public void removeStore(IStore store) { if (this.store.equals(store)) { this.store = null; store.removeItem(this); } } //Service public long calcByItem() { long total = 0; ISaleLineItem saleLineItem; for (Iterator i = saleLineItems.iterator(); i.hasNext();) { saleLineItem = (ISaleLineItem) i.next(); total += saleLineItem.calcByMonth(); } return total; } public IItem getItemBySerial(String serial) { //Read Data From Data Management Objects } } -----end----- -----box----- #程式6 import java.util.List; public interface IStore { //Specific Item //Property Accessor public String getName(); public void setName(String name); //Collaborator Accessor public List getItems(); public void addItem(IItem item); public void removeItem(IItem item); //Not Add and Remove public void doAddSale(ISale sale); public void doRemoveSale(ISale sale); //Service public long calcByStore(IStore store); } public interface ISale { //Composite Transaction //Property Accessor public String getDateTime(); public void setDateTime(String dateTime); //Collaborator Accessor public IStore getStore(); public void addStore(IStore store); //Service public long getTotal(); public long calcByMonth(); } -----end----- -----box----- #程式7 import java.util.Iterator; import java.util.List; public class Store implements IStore { //Variable private String name; //Collaborator private List items; private List sales; //Property Accessor public String getName() { return name; } public void setName(String name) { this.name = name; } //Collaborator Accessor public List getItems() { return items; } public void addItem(IItem item) { if (!items.contains(item)) { items.add(item); } } public void removeItem(IItem item) { if (items.contains(item)) { items.remove(item); } } public void doAddSale(ISale sale) { if (!sales.contains(sale)) { sales.add(sale); } } public void doRemoveSale(ISale sale) { if (sales.contains(sale)) { sales.remove(sale); } } //Service public long calcByStore(IStore store) { long total = 0; ISale sale; for (Iterator i = sales.iterator(); i.hasNext();) { sale = (ISale) i.next(); total += sale.calcByMonth(); } return total; } } import java.util.List; import java.util.Iterator; public class Sale implements ISale { //Variable private String dateTime; //Collaborator private IStore store; //For Sample private List saleLineItems; //Property Accessor public String getDateTime() { return dateTime; } public void setDateTime(String dateTime) { this.dateTime = dateTime; } //Collaborator Accessor public IStore getStore() { return store; } public void addStore(IStore store) { this.store = store; } //Service public long getTotal() { long total = 0; ISaleLineItem saleLineItem; for (Iterator i = saleLineItems.iterator(); i.hasNext();) { saleLineItem = (ISaleLineItem) i.next(); total += saleLineItem.getTotal(); } return total; } public long clacByMonth() { //Read Data From Data Management Objects   } } -----end-----