java封装题目4

4.某公司要开发名为”我爱购物狂”的购物网站,请使用面向对象的思想设计描述商 品信息
要求:
7)分析商品类别和商品详细信息属性和方法,设计商品类别类和商品详细信息类
8)在商品详细信息类中通过属性描述该商品所属类别
9)设置属性的私有访问权限,通过公有的 get,set 方法实现对属性的访问
10)编写测试类,测试商品类别类和商品详细信息类的对象及相关方法(测试数据 信息自定)
11)创建包 info—存放商品类别类和商品详细信息类,创建包 test—存放测试类参考分析思路:
商品类别类:
属性:类别编号,类别名称商品详细信息类:
属性:商品编号,商品名称,所属类别,商品数量(大于 0),商品价格(大于 0)
方法:盘点的方法,描述商品信息。内容包括商品名称,商品数量,商品价格, 现在商品总价以及所属类别信息
运行效果图:

编写一个Category类,基本的变量和getset方法

public class Category {
    private int id;
    private String name;

    public Category(){

    }
    public Category(String name){
        this.name=name;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}

编写一个DetailsCategory类

public class DetailsCategory {
    private int cid;
    private String cname;
    private String categorys;
    private int num;
    private double price;

    public DetailsCategory(){  //无参构造

    }
    public DetailsCategory(String cname,int num,double price){ //有参构造
        this.cname=cname;
        setNum(num);  //因为数量和价格需要进行判断,所以调用set方法
        setPrice(price);
    }

    public int getCid() {
        return cid;
    }

    public void setCid(int cid) {
        this.cid = cid;
    }

    public String getCname() {
        return cname;
    }

    public void setCname(String cname) {
        this.cname = cname;
    }

    public String getCategory() {
        return categorys;
    }

    public void setCategory(String categorys) {
        this.categorys = categorys;
    }

    public int getNum() {
        return num;
    }

    public void setNum(int num) { //对库存数量进行判断
        if(num>0){
            this.num=num;
        }else{
            System.out.println("库存数量异常,请联系管理员");
            this.num=0;
        }
    }

    public double getPrice() {
        return price;
    }

    public void setPrice(double price) { //对价格进行判断
        if(price>0){
            this.price=price;
        }else{
            System.out.println("你输入的价格不对!已修改为默认值0");
            this.price=0;
        }
    }
    //可以使用这种方法来获取另一个类里面的成员变量
    public void Inventory(Category category){  //给Inventory方法写一个以类名为数据类型的形参
        System.out.println("商品名称:"+cname);
        System.out.println("所属类别:"+category.getName()); //调用该类里面的getName方法
        System.out.println("商品售价为:"+price);
        System.out.println("库存数量为:"+num);
        System.out.println("商品总价为:"+num*price);
    }

}

编写测试类

public class test {
    public static void main(String[] args) {
        Category c2 = new Category("洗发水");
        DetailsCategory d1 = new DetailsCategory("海飞丝",15,20.5);
        d1.Inventory(c2);
        System.out.println("====================================");
        DetailsCategory d2 = new DetailsCategory("蜂花洗发水250ml",0,11.5);
        d2.Inventory(c2);
    }
}
posted @ 2024-09-24 20:51  你的镁偷走了我的锌  阅读(17)  评论(0)    收藏  举报