借用容器类实现网站购物程序的过程,封装商品类、购物车类,以及模拟购物的测试程序。

借用容器类实现网站购物程序的过程,封装商品类、购物车类,以及模拟购物的测试程序。

这种只能写一个测试代码给你看,要求太少,你要想彻底学会,找个项目跟着练练,光一个ide可是没啥用的,
业余看看:https://blog.csdn.net/m0_63512120/article/details/129108284

import java.util.ArrayList;
import java.util.List;

class Product {
    private String name;
    private double price;

    public Product(String name, double price) {
        this.name = name;
        this.price = price;
    }

    public String getName() {
        return name;
    }

    public double getPrice() {
        return price;
    }
}

class ShoppingCart {
    private List<Product> products;

    public ShoppingCart() {
        products = new ArrayList<Product>();
    }

    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.getPrice();
        }
        return totalPrice;
    }
}

public class ShoppingTest {
    public static void main(String[] args) {
        Product p1 = new Product("WINDOWS", 16999);
        Product p2 = new Product("iPad", 7800);
        Product p3 = new Product("HUAWEI", 9999);

        ShoppingCart cart = new ShoppingCart();
        cart.addProduct(p1);
        cart.addProduct(p2);
        cart.addProduct(p3);

        System.out.println("Total price: " + cart.getTotalPrice());
    }
}


不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 这个问题的回答你可以参考下: https://ask.csdn.net/questions/7634432
  • 这篇博客也不错, 你可以看下什么是操作数,如何理解操作数,经常听到操作数,到底是什么意思。
  • 除此之外, 这篇博客: 对数据库事务、隔离级别、锁、封锁协议的理解及其关系的理解中的 我的理解 部分也许能够解决你的问题, 你可以仔细阅读以下内容或者直接跳转源博客中阅读:

    若事务T对数据对象A加上X锁,则其他事务在T释放A上的锁之前不能再对数据A上锁。倘若,事务T2中没有上任何锁,那么它是可以直接读取和修改数据A的。因此,并不是说,事务T对数据A上X锁到释放X锁期间,其他事务就不能访问数据A。

    但是,如果选择了封锁协议,情况就不一样了。譬如选择了使用一级封锁协议,那么根据一级封锁协议规定,事务T在修改数据R之前必须先对其进行加X锁,直到事务T结束才释放。也就是说,如果一个事务中有修改数据的操作,那么它必须先对该数据上X锁,才能进行修改操作。

    如此,在一级封锁协议下,若事务T对数据对象A加上X锁,则其他事务在T释放A上的锁之前不能再对数据A上锁,因此也就没有机会去修改数据A了。

    但是,要注意的是,一级封锁协议规定的是:“事务T在修改数据R之前必须先对其进行加X锁,直到事务T结束才释放。”它对读取数据没有作规定啊。因此,在一级封锁协议下,如果一个事务只有读取数据A的操作,那么即使数据A被上了X锁,那也没影响,照样可以读取。

    也正是因为一级封锁协议下,读取操作是不受限制的。因此,一级封锁协议协议没能解决脏读和不可重复读的问题。举例来说,事务a执行了更新操作,将记录为(1,‘a’)的记录改成了(1,‘b’),这时事务b执行了查询操作,查询到这条记录是(1,‘b’)。但是事务a回滚了,该记录变回了(1,‘a’)。如此,事务b读到的(1,‘b’)就是不存在的记录,这就是脏读。而不可重复读呢,如果事务a执行了查询操作,读到的是(1,‘a’),然后这时事务b执行了更新操作,将记录为(1,‘a’)的记录改成了(1,‘b’),这时事务a进行验算操作,再查询一次,发现记录变成了(1,‘b’)。也就是说,事务a两次读取的记录是不一样,这就是不可重复读问题(重复读取结果却不一样,这就是不可重复读问题)。

    可能我的表述还是没那么清晰,没关系,继续往下看,看了二级封锁协议和三级封锁协议就懂了。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^