第1次任务:购物车程序的面向对象设计
2021/10/5 1:40:55
本文主要是介绍第1次任务:购物车程序的面向对象设计,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
本次的作业内容:
要求体验商城的商品搜索、购物车中商品的加入和删除操作以及下单等功能。在观察各大网络商城的购物车之后,根据其特点自制一个购物车小程序。
目标:
- 学会使用讲故事的方式找到系统中可能包含的类与属性
- 理解封装
任务:
1.编码规范
驼峰命名法
不使用拼音和英文组合
方法名、参数名、成员变量、局部变量都统一使用 lowerCamelCase 风格
包名统一使用小写,点分隔符之间有且仅有一个自然语义的英语单词。
包名统一使用单数形式,但是类名如果有复数含义,类名可以使用复数形式。
2.前期调查与功能设计
我们以京东商城为例来进行探讨,首先,进入商城主界面时,我们可以看到许多商城中的物品,而上方的搜索栏可以帮助我们搜索想要的物品。
点击物品图标,我们可以看到物品的详细信息,还可以执行“加入购物车“这一操作。
进入购物车时,我们能够看到自己购买了什么东西、购买多少个,以及预估的结算价格,而且我们可以在购物车中执行删除操作,能够删除任意商品、任意数量。
从以上观察的情况来看,购物车程序所需要实现的功能大致有:
- 需要有商品的搜索功能(可能需要一个用户类来识别并执行用户操作)
- 需要有购物车中物品的添加功能和删除功能(需要一个购物车类来存放购买物品的数量和总价)
- 在购物车中需要有显示结算总价的程序(需要一个账单类来打印支付凭条)
- 由于个人设计的程序中的商品不会像网络商场一样多的数不过来,所以可以考虑做出一个可以显示商城中所有商品的商品清单功能。(需要一个商品类来存储商品的基本信息,还可能有全部商品信息输出的功能)
3.面向对象设计
在上述的故事中,用红色字代表可能的对象(名词)或属性,用蓝色字代表可能的方法(动词)。
这样,通过讲故事的方法,我们就可以思路清晰的找出一个程序所需要的类和其中的方法。
4.系统功能结构图
5.系统描述
6.UML类图
7.面向对象的封装性
- Mall类中将商品的属性声明为private并用setter、getter的方法进行数据封装
8.项目包结构与关键代码
项目包结构
1.shopping包
该包中有一个Main类,用来进行用户与程序的人机交互。
2.Mall包
该包主要有商城中商品的信息和购物车的增、删、改、查等一系列操作的核心方法。
3.display包
可视化界面,方便用户操作。
按类进行分包方便后续查找修补,有逻辑性,而且不用在main中频繁的导入类。只需要把Main类导入其他包中的类就可以了。
主要功能
关键代码
商品属性
public class Mall { private static int goodsNumber = 10; private static int[] goodsId = new int[100]; private static String[] goodsName = new String[100]; private static double[] goodsPrice = new double[100]; public static int getGoodsNumber() { return goodsNumber; } public static void setGoodsNumber(int goodsNumber) { Mall.goodsNumber = goodsNumber; } public static int[] getGoodsId() { return goodsId; } public static void setGoodsId(int[] goodsId) { Mall.goodsId = goodsId; } public static String[] getGoodsName() { return goodsName; } public static void setGoodsName(String[] goodsName) { Mall.goodsName = goodsName; } public static double[] getGoodsPrice() { return goodsPrice; } public static void setGoodsPrice(double[] goodsPrice) { Mall.goodsPrice = goodsPrice; } }
功能操作
public class ShoppingCart { private static int[] payNumber = new int[100]; public static int[] getPayNumber() { return payNumber; } public static void setPayNumber(int[] payNumber) { ShoppingCart.payNumber = payNumber; } public static int addGoods(int goodsId, int goodsAddNumber) {// 增加购物车商品 for (int i = 0; i < Mall.getGoodsNumber(); i++) { if (i == goodsId) { payNumber[i] += goodsAddNumber; return 1; } } return 0; } public static int subGoods(int goodsId, int goodsSubNumber) {// 减少购物车商品 for (int i = 0; i < Mall.getGoodsNumber(); i++) { if (i == goodsId) { payNumber[i] = payNumber[i] - goodsSubNumber; if (payNumber[i] < 0) payNumber[i] = 0; return 1; } } return 0; } public static void cleanGoods() {// 清空 for (int i = 0; i < Mall.getGoodsNumber(); i++) { payNumber[i] = 0; } } public static void showCart() {// 显示购物车中的商品 } }
这篇关于第1次任务:购物车程序的面向对象设计的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-06-26结对编程到底难不难?答案在这里
- 2024-06-19《2023版Java工程师》课程升级公告
- 2024-06-15matplotlib作图不显示3D图,怎么办?
- 2024-06-1503-Loki 日志监控
- 2024-06-1504-让LLM理解知识 -Prompt
- 2024-06-05做软件测试需要懂代码吗?
- 2024-06-0514-ShardingSphere的分布式主键实现
- 2024-06-03为什么以及如何要进行架构设计权衡?
- 2024-05-31全网首发第二弹!软考2024年5月《软件设计师》真题+解析+答案!(11-20题)
- 2024-05-31全网首发!软考2024年5月《软件设计师》真题+解析+答案!(21-30题)