第1次任务:购物车程序的面向对象设计

小组分工

任务 姓名
面向对象设计、功能设计、博客制作 郭宇豪
前期调查、编码规范 黄常奇

1.前期调查

京东商城中的购物车

在这里插入图片描述
购物车最主要的功能为商品条目显示、商品小计、商品数量累加、商品单价显示、商品总价。

编码规范

代码中的命名严禁使用拼音与英文混合的方式,更不允许直接使用中文的方式。说明:正确的英文拼写和语法可以让阅读者易于理解,避免歧义。注意,即使纯拼音命名方式也要避免采用。
正例: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、类名为 essageUtils(此规则参考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。

2.系统功能结构图

![在这里插入图片描述](https://img-blog.csdnimg.cn/ff2d611270aa4cf1abbaf6eb5f4fc808.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBASk1VbmV0d29yayAyMA==,size_20,color_FFFFFF,t_70,g_se,x_16

3.系统描述

首先一进入系统应先展示商品名称和单价及功能列表,其次要能输入商品序号数量,然后应当能实现向购物车内增添商品,从购物车里删减商品,对购物车内商品进行小计和购物车内商品总价的计算清空购物车功能,最后要能实现退出购物车功能。

4.UML类图

在这里插入图片描述

5.封装性体现

商品序号、名称、单价是购物车中商品的基本属性,这些属性在本程序的运行过程中不可改变。

6.项目包结构与主要代码及流程图

项目包结构:

Shopping Cart.shoppingcart.MainManu
Shopping Cart.shoppingcart.Cart
Shopping Cart.shoppingcart.ShowItems
设计目的:简单划分便于设计和管理,从而能使用较少的代码量实现所有的主要功能。

主要代码与流程图:

主要代码: Cart类中的方法


	public  void add(int num,int quantity) {
    
    
		arr[num]+=quantity;
	}//添加对应商品


	public boolean delete(int num,int quantity) {
    
    
		if(arr[num]>=quantity)
		{
    
    
			arr[num]=arr[num]-quantity;
			return true;
		}
		else return false;
	}//删除特定商品

	public void clear() {
    
    
		for(int i=1;i<6;i++)
			arr[i]=0;
	}//清空购物车
	
	public void onePrice(int num) {
    
    
		switch(num)
		{
    
    
		case 1:{
    
    
			int s=arr[num]*4;
			if(s>0)
				System.out.println("#  苹果1斤"+"    ("+arr[num]+"),小计:"+s+"元");
			break;
		}
		case 2:{
    
    
			int s=arr[num]*98;
			if(s>0)
				System.out.println("#  《Java学习笔记》"+"    ("+arr[num]+"),小计:"+s+"元");
			break;
		}
		case 3:{
    
    
			int s=arr[num]*79;
			if(s>0)
				System.out.println("#  汤成倍健钙片(50片装)"+"    ("+arr[num]+"),小计:"+s+"元");
			break;
		}
		case 4:{
    
    
			int s=arr[num]*7488;
			if(s>0)
				System.out.println("#  HUAWEI P50 Pro(曜金黑 8GB+512GB)"+"    ("+arr[num]+"),小计:"+s+"元");
			break;
		}
		case 5:{
    
    
			int s=arr[num]*129;
			if(s>0)
				System.out.println("#  铝合金便携五步梯"+"    ("+arr[num]+"),小计:"+s+"元");
			break;
		}
		}
		
	}//每个商品的小计
	
}

流程图:
增添商品到购物车

从购物车中删除商品
在这里插入图片描述

清空购物车

在这里插入图片描述

7.总结和反思

虽说以较少的代码量实现了所有的主要功能,但是却牺牲了封装性,整个系统封装性不佳。代码编写C风格仍可见,还没能很好得掌控面向对象设计,JAVA编程能力仍有很大的提升空间。

猜你喜欢

转载自blog.csdn.net/qq_51726651/article/details/120608174