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

人员分工

任务姓名
前期调查与功能设计;Commodity、ShoppingCart、ShoppingMall;撰写报告组长:lrui1
配置开发环境;idea与eclipse的兼容;Menu、Main;组员:梦尘

前期调查

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

顾客在商城(ShoppingMall)中浏览商品(Commidity),选中商品加入购物车(ShoppingCart),最后购物车结算,结束一次购物

系统功能结构图。

在这里插入图片描述

系统描述:一段用来描述系统功能与流程的文字,用红色字代表可能的对象(名词)或属性,用蓝色字代表可能的方法(动词)。

使用购物车的购物流程:顾客在商城中浏览商品,看到喜爱的商品后将商品加入购物车;顾客可以随时查看购物车内的商品情况和数量,随时增加或减少商品。最后在购物车确认无误后结算,完成一次购买。

类设计说明:类概述(有什么用)、类的属性与方法、类与类之间的关系。UML

类的大致说明

  • Commodity 存放商品基本信息;查看或修改商品的属性等;public
  • Main main方法,测试购物车的基本功能,public
  • Menu showMenu()方法,展示菜单,public
  • ShoppingCart 购物车,存放商品列表;增删改查等基本功能;public
  • ShoppingMall 商城,存放所有的商品;增删改查等基本功能;public

UML

在这里插入图片描述

本系统哪里体现了面向对象的封装性?

1、在ShoppingCart类,外部的类可以通过其提供的功能,来完成商品放入购物车等操作。外部的类是不能直接访问到ShoppingCart类的items。此举体现了封装性。

2、隐藏购物车和商城实现的细节,可以让Main测试类调用时用简洁明了的代码来实现许多复杂的功能

3、封装使得:购物车,商城,商品成为一个真正能够复用的对象

4、保护了购物车,商城,商品的实现细节,使得这三个类在整体的代码框架的功能是一致的

项目包结构(package的划分)与关键代码:项目的包结构(为什么要这样设计包结构),主要功能的关键代码。

1、商品,商城,购物车 功能比较简单,放在同一个包可以加快开发效率

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ohEf743U-1664289605521)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20220927223138210.png)]

2、关键代码

(1)购物车新增商品

public class ShoppingCart {
	private ArrayList<ArrayList<Commodity>> items = new ArrayList<>();//存放商品的容器
	public void add(Commodity item) {
		// 遍历
		for(ArrayList<Commodity> k : items) {
			if(k.get(0).equals(item)) {
				k.add(item);	//	旧商品
				return;
			}
		}
		// 新商品
		ArrayList<Commodity> newItem = new ArrayList<>();
		newItem.add(item);
		items.add(newItem);
	}
    ···
}

(2)1.0 菜单

public class Menu {
    public static void showMenu(int menu) {
        System.out.println("==================================================================");
        System.out.println("请您选择如下命令进行操作:");
        System.out.println("1.商城功能列表");
        System.out.println("2.购物车功能列表");
        System.out.println("==================================================================");
        if(menu==1){         System.out.println("==================================================================");
            System.out.println("1.打开商城 openmall");
            System.out.println("2.加入商品到商城 addmall");
            System.out.println("3.从商城删除商品 delmall");
            System.out.println("4.查找商城商品 findmall");
            System.out.println("5.显示商城商品列表 mallmenu");
            System.out.println("6.结束程序 end");
            System.out.println("==================================================================");
        }
        if(menu==2){
            System.out.println("==================================================================");
            System.out.println("1.添加商品到购物车 add");
            System.out.println("2.查看购物车商品 query");
            System.out.println("3.修改商品的数量 amend");
            System.out.println("4.删除相应的商品 delete");
            System.out.println("5.结算购物车商品金额 pay");
            System.out.println("6.结束程序 end");
            System.out.println("==================================================================");
        }
    }
}

部分Git提交记录(中途冲突有回炉重造)

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值