小组成员:
徐佳澎、陈俊威
任务分配
任务 | 成员 |
---|
编码规范、前期调查、博客制作 | 陈俊威 | 面向对象设计、功能设计 | 徐佳澎 |
前期调查
1.京东商城中的购物车
每添加一件不同的商品到购物车中,购物车会生成一个条目,条目中显示商品名、单价、商品数量以及小计。购物车中还包括删除商品的功能,也就是直接删除一件商品的条目。
2.编码规范
阿里巴巴Java开发手册 终极版(1.3.0)
代码中的命名严禁使用拼音与英文混合的方式,更不允许直接使用中文的方式。
说明:正确的英文拼写和语法可以让阅读者易于理解,避免歧义。注意,即使纯拼音命名方式 也要避免采用。 正例:alibaba / taobao / youku / hangzhou 等国际通用的名称,可视同英文。 反例:DaZhePromotion [打折] / getPingfenByName() [评分] / int 某变量 = 3
类名使用 UpperCamelCase 风格,必须遵从驼峰形式,但以下情形例外:DO / BO /
DTO / VO / AO 正例:MarcoPolo / UserDO / XmlService / TcpUdpDeal / TaPromotion 反例:macroPolo / UserDo / XMLService / TCPUDPDeal / TAPromotion
方法名、参数名、成员变量、局部变量都统一使用 lowerCamelCase 风格,必须遵从驼峰形式。
正例: localValue / getHttpMessage() / inputUserId
包名统一使用小写,点分隔符之间有且仅有一个自然语义的英语单词。包名统一使用单数形式,但是类名如果有复数含义,类名可以使用复数形式。
正例: 应用工具类包名为 com.alibaba.open.util、类名为 MessageUtils(此规则参考 spring 的框架结构)
各层命名规约:
A) Service/DAO 层方法命名规约 1) 获取单个对象的方法用 get 做前缀。 2) 获取多个对象的方法用 list 做前缀。 3) 获取统计值的方法用 count 做前缀。 4) 插入的方法用 save/insert 做前缀。 5) 删除的方法用 remove/delete 做前缀。 6) 修改的方法用 update 做前缀。 B) 领域模型命名规约 1) 数据对象:xxxDO,xxx 即为数据表名。 2) 数据传输对象:xxxDTO,xxx 为业务领域相关的名称。 3) 展示对象:xxxVO,xxx 一般为网页名称。 4) POJO 是 DO/DTO/BO/VO 的统称,禁止命名成 xxxPOJO。
系统功能描述
UML类图
面向对象的封装性
在Commodity类中name、price、number的构造与调用以及Cartitem类中name、price、number的构造与调用体现了面向对象的封装性。
关键包结构与代码以及流程图
Commodity类,内含商品的属性(名称、价格以及数量)
public class Commodity {
private String name;
private int price;
private int number;
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;
}
public int getNumber() {
return number;
}
public void setNumber(int number) {
this.number = number;
}
public Commodity(String name,int price,int number) {
this.name=name;
this.number=number;
this.price=price;
}
public void Decrease(int number) {
this.number-=number;
}
}
Cartitem类,生成商品放入购物车后生成的条目。
public class Cartitem {
private String name;
private int price;
private int number=0;
public Cartitem(String name,int price,int number) {
this.name=name;
this.price=price;
this.number+=number;
}
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;
}
public int getNumber() {
return number;
}
public void setNumber(int number) {
this.number = number;
}
}
cart类
import java.util.ArrayList;
public class Cart {
private ArrayList<Cartitem> items=new ArrayList<>();
public void addList(String name,int price,int number)//添加商品进购物车
{
int index=0;//记录该商品是否已经添加进购物车
int i=0;
for( i=0;i<items.size();i++) {
if(items.get(i).getName().equals(name))
{index=1;
break;
}
}
if( index!=1)
items.add(new Cartitem(name, price,number));
else {
Cartitem item=new Cartitem(name,price,number);
items.set(i,item);
}
}
public ArrayList<Cartitem> ShowCart(){//输出购物车
return this.items;
}
public int total() {//计算价格
int alltotal=0;
for(int i=0;i<items.size();i++) {
alltotal+=items.get(i).getNumber()*items.get(i).getPrice();
}
return alltotal;
}
public void Deleteitem(String name) {
int index=0;//记录该商品是否已经添加进购物车
int i=0;
for( i=0;i<items.size();i++) {
if(items.get(i).getName().equals(name))
{index=1;
break;
}
}
if( index==1)
items.remove(i);
else {
System.out.println("购物车中没有该商品,请重新选择!");
}
}
public void ClearCart() {
this.items.clear();
}
}
ShoppingCenter类,存储商店中的商品名称以及单价、数量。
import java.util.ArrayList;
public class ShoppingCenter {
private ArrayList<Commodity> list=new ArrayList<>();
public void addList(String name,int price,int number)
{
list.add(new Commodity(name, price, number));
}
public ArrayList<Commodity> ShowList(){
return this.list;
}
{
list.add(new Commodity("牙膏",10,500));
list.add(new Commodity("电脑",2000,10));
list.add(new Commodity("电饭锅",2000,10));
}
public int HaveCommodity(String name) {
int i=0;
for( i=0;i<list.size();i++) {
if(list.get(i).getName().equals(name))
{
return i;
}
}
return -1;
}
流程图:
|