第1次任务:购物车程序的面向对象设计
2021/10/7 20:42:57
本文主要是介绍第1次任务:购物车程序的面向对象设计,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
本次任务,按小组完成。每组最多2人。
目标:
学会使用讲故事的方式找到系统中可能包含的类与属性 理解封装
任务:
编码规范:使用英文对类、方法、包进行命名(查英文词典,不得出现拼音)。参考JAVA编码规范,进行类命名,方法命名、包命名,合适的缩进,有意义的变量名。见参考资料1中的1.1-1.4。 前期调查与功能设计:调查京东商城或者亚马逊商城中的购物车,体验从搜索商品、加入购物车、操作购物车、下单全过程,思考该过程可能包含的类。演示中要求图多字少。 面向对象设计:以面向对象的方法编写购物车代码。先设计有什么类,再考虑什么方法放到那个类中合适。初期可不用完成具体功能,只要将类名、类之间的关系、方法名设计好即可。见参考资料2、3。注意学习类与类之间的关系(先重点掌握关联关系与依赖关系)。 PPT制作或博客制作并上台演示:演示前,请务必自己在同学面前预演一遍。
注意:初期将重点放在面向对象设计、命名规范。
以上任务,请小组组长明确分工,课堂展示时教师将针对每个组员负责的部分进行提问检查。
未完成所负责任务,考核不合格。
分工表格示例(请组长将上述任务妥善分配):
任务 | 姓名 |
---|---|
编码规范、前期调查与功能设计 | 卢伟杰 |
面向对象设计、PPT制作或博客制作 | 胡旻轩 |
- 1.前期调查。
- 2.系统功能结构图。
- 购物流程图
- 购物车功能结构图
- 3.系统描述:一段用来描述系统功能与流程的文字,用红色字代表可能的对象(名词)或属性,用蓝色字代表可能的方法(动词)。
- 4.UML类图:类的关键属性与方法、类与类之间的关系。每个类的功能描述。可使用ProcessOn绘制。
- 5.本系统哪里体现了面向对象的封装性。
- 6.项目包结构与关键代码:项目的包结构(为什么要这样设计包结构),主要功能(如网购物车添加、删除商品)的流程图与关键代码。
1.前期调查。
通过对京东商城的调查,商城需要具有搜索、添加购物车功能,购物车的属性有商品名、商品数量以及商品价格;且购物车需要具有添加商品、删除商品、计算商品总价格和结算生成订单功能。
2.系统功能结构图。
购物流程图
购物车功能结构图
3.系统描述:一段用来描述系统功能与流程的文字,用红色字代表可能的对象(名词)或属性,用蓝色字代表可能的方法(动词)。
- 首先进行搜索商品,可通过商品名称或编号进行相应的搜索,然后可添加至购物车中,即可在购物车中进行商品的添加、删除、以及进行结算。
4.UML类图:类的关键属性与方法、类与类之间的关系。每个类的功能描述。可使用ProcessOn绘制。
5.本系统哪里体现了面向对象的封装性。
- 商品的属性上体现了面对对象的封装,private就是一种私有化的封装。
class shangping { private long bianhao; //商品编号 private String name; //商品名称 private int shuliang; //商品数量 private double jiage; //商品价格 private String leibie; //商品类别 public long getBianhao() { return bianhao; } public void setBianhao(long bianhao) { this.bianhao = bianhao; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getShuliang() { return shuliang; } public void setShuliang(int shuliang) { this.shuliang = shuliang; } public double getJiage() { return jiage; } public void setJiage(double jiage) { this.jiage = jiage; } public String getLeibie() { return leibie; } public void setLeibie(String leibie) { this.leibie = leibie; } @Override public String toString() { return "shangping [bianhao=" + bianhao + ", name=" + name + ", shuliang=" + shuliang + ", jiage=" + jiage + ", leibie=" + leibie + "]"; } public shangping(long bianhao, String name, int shuliang, double jiage, String leibie) { super(); this.bianhao = bianhao; this.name = name; this.shuliang = shuliang; this.jiage = jiage; this.leibie = leibie; } }
6.项目包结构与关键代码:项目的包结构(为什么要这样设计包结构),主要功能(如网购物车添加、删除商品)的流程图与关键代码。
- 商品的加购
private static void jiagou(yonghu loginuser, int i, shangcheng sc) { // TODO Auto-generated method stub gouwuche gou = new gouwuche(sc.getShangpings().get(i), 1); sc.getShangpings().get(i).setShuliang(sc.getShangpings().get(i).getShuliang() - 1); loginuser.getGouwuches().add(gou); }
- 商品的查询
private static int chaxun(String searchname, shangcheng sc) { // TODO Auto-generated method stub int s = -1; for (int i = 0; i < sc.getShangpings().size(); i++) { if (sc.getShangpings().get(i).getName().equals(searchname)) { System.out.println("编号:" + sc.getShangpings().get(i).getBianhao()); System.out.println("名称:" + sc.getShangpings().get(i).getName()); System.out.println("价格:" + sc.getShangpings().get(i).getJiage()); System.out.println("库存:" + sc.getShangpings().get(i).getShuliang()); System.out.println("类别:" + sc.getShangpings().get(i).getLeibie()); s = i; } } return s; }
- 商品的结算
private static double jiesuan(yonghu loginuser) { // TODO Auto-generated method stub double sum = 0; for (int i = 0; i < loginuser.getGouwuches().size(); i++) { sum += loginuser.getGouwuches().get(i).getShuliang() * loginuser.getGouwuches().get(i).getShangping().getJiage(); } return sum; }
- 基本功能的实现:1-加入购物车,2-查询商品,3-结算,4-退出
if (user) { System.out.println("登录成功"); while (true) { System.out.println("1-查看购物车" + "\t" + "2-查询商品" + "\n" + "3-结算" + "\t" + "4-退出"); int a = input.nextInt(); yonghu loginuser = getuser(name, sc); if (a == 1) { showgou(loginuser); } else if (a == 2) { System.out.println("请输入查询商品信息:"); String searchname = input.next(); int i = chaxun(searchname, sc); if (i == -1) { System.out.println("没有此商品"); } else { System.out.println("是否加入购物车 是/否"); String jiagou = input.next(); if (jiagou.equals("是")) { jiagou(loginuser, i, sc); } else { continue; } } } else if (a == 3) { showgou(loginuser); System.out.println(); System.out.println(jiesuan(loginuser)); } else { break; } } } else { System.out.println("登录失败"); } }
这篇关于第1次任务:购物车程序的面向对象设计的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-29RocketMQ底层原理资料详解:新手入门教程
- 2024-11-29RocketMQ源码资料解析与入门教程
- 2024-11-29[开源]6.1K star!这款电视直播源神器真的太赞啦!
- 2024-11-29HTTP压缩入门教程:轻松提升网页加载速度
- 2024-11-29JWT开发入门指南
- 2024-11-28知识管理革命:文档软件的新玩法了解一下!
- 2024-11-28低代码应用课程:新手入门全攻略
- 2024-11-28哪些办公软件适合团队协作,且能够清晰记录每个阶段的工作进展?
- 2024-11-28全栈低代码开发课程:零基础入门到初级实战
- 2024-11-28拖动排序课程:轻松掌握课程拖动排序功能