IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> 购物车程序的面向对象设计:第1次任务 -> 正文阅读

[Java知识库]购物车程序的面向对象设计:第1次任务

小组成员:

徐佳澎、陈俊威

任务分配

任务成员
编码规范、前期调查、博客制作陈俊威
面向对象设计、功能设计徐佳澎

前期调查

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;
	}

流程图:
在这里插入图片描述

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2021-10-03 16:57:32  更:2021-10-03 16:58:53 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/27 11:06:05-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码