脚本宝典收集整理的这篇文章主要介绍了第四周-作业及实验-类的设计与继承(购物车程序的面向对象设计),脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
目标:
- 学会使用讲故事的方式找到系统中可能包含的类与属性
- 理解封装
任务: 1.编码规范:使用英文对类、方法、包进行命名(查英文词典,不得出现拼音)。参考JAVA编码规范,进行类命名,方法命名、包命名,合适的缩进,有意义的变量名。 2.前期调查与功能设计:调查京东商城或者亚马逊商城中的购物车,体验从搜索商品、加入购物车、操作购物车、下单全过程,思考该过程可能包含的类。 3.面向对象设计:以面向对象的方法编写购物车代码。先设计有什么类,再考虑什么方法放到那个类中合适。初期可不用完成具体功能,只要将类名、类之间的关系、方法名设计好即可。 4.注意学习类与类之间的关系(先重点掌握关联关系与依赖关系)。 5.PPT制作或博客制作并上台演示:演示前,请务必自己在同学面前预演一遍。
在淘宝中搜索"沐浴露",在点击任意商品,得到商品界面。
在商品界面点击”加入购物车“选项。
如之前步骤添加几件商品后进入"购物车"进行操作。
勾选如图商品后点击"下单",进入下单界面。
封装是面向对象编程的核心思想,将对象的属性和行为封装起来,而将对象的属性和行为封装起来的载体是类,类通常对用户隐藏其实现的细节,这就是封装的思想,在Java中通常通过建立一个实体类,用来封装对象的属性和行为,通过setXxx()和getXxx()方法封装起来,例如,用户在使用一款软件的时候,只需知道如何使用软件,点击某个按钮就可以实现一定的功能,用户不需要知道软件是如何被开发出来的,软件内部是如何工作的,在使用该软件时不依赖于开发时的细节和软件内部工作的细节。
采用封装的思想保证了类内部数据结构的完整性,应用该类的用户不能轻易直接操纵该数据结构,而只能执行该类允许公开的数据。这样可以避免外部对内部数据的影响,提高程序的可维护性。
总结一下,封装性就是利用抽象数据类型将数据和基于数据的操作封装在一起,保护数据并隐蔽具体的细节,只保留有限的接口与外界联系。
我们在编写程序时,有一些方法的接口可能会被他人利用,这样的话,我们不想让他人做的事就可能会通过这些接口来实现,或者不想让他人看到的信息就可以被外界看到。所以,我们需要将一些方法改为private,仅类内程序能够调用,在想办法在从内部调用的基础上让外部可以在可控范围内操作,简单一点来说就是建立一道门将我们的方法保护起来,比如说本程序的下列代码,因为list()方法写的太烂,我不想让用户看到这个方法,那么我可以将这个方法设置为private,外部只能通过调用showList()方法来看到我的商品架,从而向用户隐藏了list()这个方法。
1)Platforms包:包含购物平台的商品展示,包括搜索物品的名称或ID进入商品详情页。
package Platforms;
public class Platforms{// 商场
private List<CommodITy> commodities = new ArrayList<>();
{ // 初始化商品
commodities.add(new Commodity("商品名称", 价钱, 数量, Id));
}
public List<Commodity> showGoods() {// 展示商品
return this.COMmodities;
}
public Commodity seArchGoodsFormId(int id) {// 按编号搜索商品
int i = 0, flag = 1;
for (i = 0; i < commodities.size(); i++) {
if (commodities.get(i).getId() == (id)) {
return commodities.get(i);
}
}
if (flag == 1)
System.out.println("对不起,您要找的商品我们没有");
return null;
}
public List<Commodity> searchGoodsFormName(String tyPE) {// 按名称搜索商品
int i = 0;
List<Commodity> list = new ArrayList<>();
for (i = 0; i < commodities.size(); i++) {
if (commodities.get(i).getType().equals(type)) {
list.add(commodities.get(i));
}
}
return list;
}
}
功能
2)ShoppingCart包:展示购物车内商品,包括移除购物车,增减商品数量,计算商品总价,进行下单操作。
package ShoppingCart;
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 < Shelves.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 < Shelves.getGoodsNumber(); i++) {
if (i == goodsId) {
payNumber[i] = payNumber[i] - goodsSubNumber;
if (payNumber[i] < 0)
payNumber[i] = 0;// 保证数字不小于0
return 1;
}
}
return 0;
}
public static void showCart() {// 显示购物车中的商品
double countCartPay = 0;
System.out.println("———————————— 您的购物车 ————————————");
System.out.println("商品ID" + " " + "商品名" + " " + "商品单价" + " " + "购买数量");
System.out.println();
for (int i = 0; i < Shelves.getGoodsNumber(); i++) {
if (ShoppingCart.payNumber[i] != 0) {
System.out.println(Shelves.getGoodsId()[i] + " " + Shelves.getGoodsName()[i] + " "
+ Shelves.getGoodsPrice()[i] + " * " + ShoppingCart.payNumber[i]);
}
countCartPay = countCartPay + (ShoppingCart.payNumber[i] * Shelves.getGoodsPrice()[i]);
}
System.out.println();
System.out.println(" 您的账单估算 : " + String.format("%.2f", countCartPay));
}
public Order putInOrder() {
Order ord = new Order();
ord.setOrderList(itemList);
return ord;
}
}
功能
3)Order包:生成订单以及订单信息。
public class Order {
private Buyer buyer;
private List<ItemEntry>orderList=new ArrayList<>() ;
private String orderId;
public List<ItemEntry> checkOrder() {
if(orderList.size()>0) {
return orderList;
}else {
return null;
}
}
public String getOrderId() {
return orderId;
}
public void setOrderId() {
int x=new Random().nextInt(100);
this.orderId = " "+x;
}
功能
4)User包:包括买家信息和地址信息。
public class Buyer {
private String name;
private int zip;
private String tel;
private String email;
private Address address;
public Buyer allImformation(Buyer you) {
return you;
}
public class Address {
private String city;
private String street;
private String location;
}
功能
以上是脚本宝典为你收集整理的第四周-作业及实验-类的设计与继承(购物车程序的面向对象设计)全部内容,希望文章能够帮你解决第四周-作业及实验-类的设计与继承(购物车程序的面向对象设计)所遇到的问题。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。