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

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

0. 人员分工

任务姓名
编码规范、前期调查与功能设计余锋
面向对象设计、PPT制作或博客制作李奇

1. 前期调查

以京东购物为例,我们搜索数据结构和JDK学习笔记,这里就需要一个商品的类,Commodity

屏幕截图 2021-10-03 155932

屏幕截图 2021-10-03 160112

将他们加入购物车,需要一个购物车类,ShoppingCart

屏幕截图 2021-10-03 160213

我们发现这里的数量可以调整,且与后来提交的订单有直接关系

屏幕截图 2021-10-03 162145

2. 系统功能结构图

image-20211003231916590

3. 系统描述

描述

用户在网上商城搜索浏览商品, 一旦看到中意的商品可将商品放入购物车,可放多个。并可在购物车中增删商品、获得所有商品价格,最后可点击结算生成订单

用户、商城、商品、购物车、订单

方法

放入,增删,结算,浏览,搜索

4. UML类图与代码

image-20211003225045023

Commodity

image-20211003225855330

字段名字、价格、库存stock私有化,体现封装性

package shop;  
  
//商品  
public class Commodity {  
    private String name;   //名称  
    private double price;  //价格  
    private int stock;      //库存  
  
    public Commodity(String name, double price, int stock) {  
        this.name = name;  
        this.price = price;  
        this.stock = stock;  
    }  
  
    public String getName() {  
        return name;  
    }  
  
    public void setName(String name) {  
        this.name = name;  
    }  
  
    public double getPrice() {  
        return price;  
    }  
  
    public void setPrice(double price) {  
        this.price = price;  
    }  
  
    public int getStock() {  
        return stock;  
    }  
  
    public void setStock(int stock) {  
        this.stock = stock;  
    }  
}  

ShoppingCart

image-20211003230140111

用哈希表将商品存入购物车,其中有加入商品,删除商品,清空购物车,结算订单

package shop;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;

//购物车
public class ShoppingCart {
    private HashMap<Commodity,Integer> shoppingCartHashMap;        //哈希容器,前者是商品,后者是数量


    //将num个商品加入购物车
    public void addCommodity(Commodity commodity,int num)
    {
        shoppingCartHashMap.merge(commodity,num,Integer::sum);
        //merge()它将新的值赋值到 key (如果不存在)或更新给定的key 值对应的 value,最后的是remappingFunction,返回参数总和
    }

    //将商品移除购物车
    public void removeCommodity(Commodity commodity,int num)
    {
        shoppingCartHashMap.remove(commodity);
    }

    //计算商品总价
    public int getPrice()
    {
        int sum=0;
        for (Commodity commodity: shoppingCartHashMap.keySet()) {
            sum+=commodity.getPrice()*shoppingCartHashMap.get(commodity);   //单价*键值(即数量)
        }
        return sum;
    }

    //清空购物车
    public void clearShoppingCart(){
        shoppingCartHashMap.clear();
    }
}

Customer

image-20211003231408639

用户名和购物车私有,新建时初始化购物车。

package shop;


//顾客
public class Customer {
    private String userName;
    private ShoppingCart shoppingCart=new ShoppingCart();

    public Customer(String userName) {
        this.userName = userName;
    }

    public String getUserName() {
        return userName;
    }

    public ShoppingCart getShoppingCart() {
        return shoppingCart;
    }
}

5. 其他

目前将所有类放在shop包名下,因此可以更好得互相调用

image-20211003231726142

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个简单的Java面向对象购物车系统的代码示例: ```java import java.util.*; class Product { String name; double price; int quantity; public Product(String name, double price, int quantity) { this.name = name; this.price = price; this.quantity = quantity; } public double getTotalPrice() { return price * quantity; } } class ShoppingCart { List<Product> products; public ShoppingCart() { products = new ArrayList<>(); } public void addProduct(Product product) { products.add(product); } public void removeProduct(Product product) { products.remove(product); } public double getTotalPrice() { double totalPrice = 0; for (Product product : products) { totalPrice += product.getTotalPrice(); } return totalPrice; } } public class Main { public static void main(String[] args) { Product p1 = new Product("Book", 10.0, 2); Product p2 = new Product("Pen", 1.0, 5); Product p3 = new Product("Notebook", 3.0, 3); ShoppingCart cart = new ShoppingCart(); cart.addProduct(p1); cart.addProduct(p2); cart.addProduct(p3); System.out.println("Total price: " + cart.getTotalPrice()); } } ``` 在这个示例中,我们定义了两个类:`Product`和`ShoppingCart`。`Product`类用于表示一个商品,包括名称、价格和数量。`ShoppingCart`类用于表示购物车,包括产品列表和一些操作方法,如添加和删除产品以及获取总价。 在主方法中,我们创建了三个产品,并将它们添加到购物车中。最后,我们打印出购物车中所有产品的总价。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值