用类描述电商概念
接下来,我们用类来描述一下电商系统中的一些基本概念,电商系统中最基本的有产品、用户和订单。
1)产品:有产品唯一id、名称、描述、图片、价格等属性。
2)用户:有用户名、密码等属性。
3)订单:有订单号、下单用户、选购产品列表及数量、下单时间、收货人、收货地址、联系电话、订单状态等属性。
当然,实际情况可能非常复杂,这是一个非常简化的描述。
产品类Product如代码清单3-3所示。
代码清单3-3 表示产品的类Product
public class Product {
//唯一id
private String id;
//产品名称
private String name;
//产品图片链接
private String pictureUrl;
//产品描述
private String description;
//产品价格
private double price;
}
我们省略了类的构造方法,以及属性的getter/setter方法,下面大部分示例代码也都会省略。
这是用户类User的代码:
public class User {
private String name;
private String password;
}
一个订单可能会有多个产品,每个产品可能有不同的数量,我们用订单条目OrderItem这个类来描述单个产品及选购的数量,如代码清单3-4所示。
代码清单3-4 表示订单条目的类OrderItem
public class OrderItem {
//购买产品
private Product product;
//购买数量
private int quantity;
public OrderItem(Product product, int quantity) {
this.product = product;
this.quantity = quantity;
}
public double computePrice(){
return product.getPrice()*quantity;
}
}
OrderItem引用了产品类Product,我们定义了一个构造方法,以及计算该订单条目价格的方法。
订单类Order如代码清单3-5所示。
代码清单3-5 表示订单的类Order
public class Order {
//订单号
private String id;
//购买用户
private User user;
//购买产品列表及数量
private OrderItem[] items;
//下单时间
private Date createtime;
//收货人
private String receiver;
//收货地址
private String address;
//联系电话
private String phone;
//订单状态
private String status;
public double computeTotalPrice(){
double totalPrice = 0;
if(items!=null){
for(OrderItem item : items){
totalPrice+=item.computePrice();
}
}
return totalPrice;
}
}
Order类引用了用户类User,以及一个订单条目的数组OrderItem,它定义了一个计算总价的方法。这里用一个String类表示状态status,更合适的应该是枚举类型,枚举我们第5章再介绍。
以上类定义是非常简化的,但是大致演示了将现实概念映射为类以及类组合的过程,这个过程大概就是,想想现实问题有哪些概念,这些概念有哪些属性、哪些行为,概念之间有什么关系,然后定义类、定义属性、定义方法、定义类之间的关系。概念的属性和行为可能是非常多的,但定义的类只需要包括那些与现实问题相关的就行了。