第四周-作业及实验-类的设计与继承(购物车程序的面向对象设计)

发布时间:2022-07-04 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了第四周-作业及实验-类的设计与继承(购物车程序的面向对象设计)脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。

0.购物车程序的面向对象设计

目标:

  • 学会使用讲故事的方式找到系统中可能包含的类与属性
  • 理解封装

任务: 1.编码规范:使用英文对类、方法、包进行命名(查英文词典,不得出现拼音)。参考JAVA编码规范,进行类命名,方法命名、包命名,合适的缩进,有意义的变量名。 2.前期调查与功能设计:调查京东商城或者亚马逊商城中的购物车,体验从搜索商品、加入购物车、操作购物车、下单全过程,思考该过程可能包含的类。 3.面向对象设计:以面向对象的方法编写购物车代码。先设计有什么类,再考虑什么方法放到那个类中合适。初期不用完成具体功能,只要将类名、类之间的关系、方法名设计好即可。 4.注意学习类与类之间的关系(先重点掌握关联关系与依赖关系)。 5.PPT制作或博客制作并上台演示:演示前,请务必自己在同学面前预演一遍。

1.前期调查。

搜索商品


淘宝中搜索"沐浴露",在点击任意商品,得到商品界面。

第四周-作业及实验-类的设计与继承(购物车程序的面向对象设计)

加入购物车


在商品界面点击”加入购物车“选项。

第四周-作业及实验-类的设计与继承(购物车程序的面向对象设计)

操作购物车


如之前步骤添加几件商品后进入"购物车"进行操作。

第四周-作业及实验-类的设计与继承(购物车程序的面向对象设计)

第四周-作业及实验-类的设计与继承(购物车程序的面向对象设计)

第四周-作业及实验-类的设计与继承(购物车程序的面向对象设计)

下单


勾选如图商品后点击"下单",进入下单界面。

第四周-作业及实验-类的设计与继承(购物车程序的面向对象设计)

2.系统功能结构图。

第四周-作业及实验-类的设计与继承(购物车程序的面向对象设计)

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

第四周-作业及实验-类的设计与继承(购物车程序的面向对象设计)

4.UML类图:类的关键属性与方法、类与类之间的关系。每个类的功能描述。可使用PRocessOn绘制

第四周-作业及实验-类的设计与继承(购物车程序的面向对象设计)

5.本系统哪里体现了面向对象的封装性。可选:哪里体现了继承与多态。

封装是面向对象编程的核心思想,将对象的属性和行为封装起来,而将对象的属性和行为封装起来的载体是类,类通常对用户隐藏其实现的细节,这就是封装的思想,在Java中通常通过建立一个实体类,用来封装对象的属性和行为,通过setXxx()和getXxx()方法封装起来,例如,用户在使用一款软件的时候,只需知道如何使用软件,点击某个按钮就可以实现一定的功能,用户不需要知道软件是如何被开发出来的,软件内部是如何工作的,在使用该软件时不依赖于开发时的细节和软件内部工作的细节。

采用封装的思想保证了类内部数据结构的完整性,应用该类的用户不能轻易直接操纵该数据结构,而只能执行该类允许公开的数据。这样可以避免外部对内部数据的影响,提高程序的可维护性。

总结一下,封装性就是利用抽象数据类型将数据和基于数据的操作封装在一起,保护数据并隐蔽具体的细节,只保留有限的接口与外界联系。

我们在编写程序时,有一些方法的接口可能会被他人利用,这样的话,我们不想让他人做的事就可能会通过这些接口来实现,或者不想让他人看到的信息就可以被外界看到。所以,我们需要将一些方法改为private,仅类内程序能够调用,在想办法在从内部调用的基础上让外部可以在可控范围内操作,简单一点来说就是建立一道门将我们的方法保护起来,比如说本程序的下列代码,因为list()方法写的太烂,我不想让用户看到这个方法,那么我可以将这个方法设置为private,外部只能通过调用showList()方法来看到我的商品架,从而向用户隐藏了list()这个方法。

第四周-作业及实验-类的设计与继承(购物车程序的面向对象设计)

6.项目包结构与关键代码:项目的包结构(为什么要这样设计包结构),主要功能(如往购物车添加、删除商品)的流程图与关键代码。

第四周-作业及实验-类的设计与继承(购物车程序的面向对象设计)

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

}

功能

  • 展示商品初始页面。
  • 根据商品名称搜索商品。
  • 根据商品Id搜索商品。

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,请注明来意。