Java面向接口编程思路

目录

一、整体思路

二、例子

(1)建立商品类:

(2)建立接口:

(3)建立商品管理接口的实现类:

(4)调试:

三、结语


一、整体思路

分析---编写类---编写接口---编写实现类---主函数调试

二、例子

分析:以购物程序为例,编写购物程序时有很多的商品需要管理,将所有商品看成对象,编写一个类进行统一管理。

(1)建立商品类:

该类只写出商品该有的属性,并且全部使用private修饰,方法也只含有无参构造和全参构造,由于是private修饰,建立出所有属性的get和set方法,再包含一个打印输出商品信息的方法。

public class Goods {
    //封装属性
    private String no;  //编号
    private String name;    //名称
    private double price;   //价格
    private String shop;    //商家名称
    private String type;    //商品类型


    public Goods() {
    }

    public Goods(String no, String name, double price, String shop, String type) {
        this.no = no;
        this.name = name;
        this.price = price;
        this.shop = shop;
        this.type = type;
    }

    public String getNo() {
        return no;
    }

    public void setNo(String no) {
        this.no = no;
    }

    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 String getShop() {
        return shop;
    }

    public void setShop(String shop) {
        this.shop = shop;
    }

    public String getType() {
        return type;
    }

    public void setType(String type) {
        this.type = type;
    }


    //打印对象
    @Override
    public String toString() {
        return "Goods{" +
                "no='" + no + '\'' +
                ", name='" + name + '\'' +
                ", price=" + price +
                ", shop='" + shop + '\'' +
                ", type='" + type + '\'' +
                '}';
    }
}

(2)建立接口:

建立一个商品管理接口,将商品会用到的方法都写出来,在接口中只声明,不实现。

public interface GoodsManager {
    public void add_goods();     //添加方法
    public void del_goods(String no);       //删除方法
    public void update_goods();  //修改商品
    public Goods findByNo(String no);   //按编号查询商品
    public Collection<Goods> findAll();   //查询所有商品
    public List<Goods> findByName(String name);   //按名称查商品
    public List<Goods> findByPrice(double start_price,double end_price);    //按价格区间查商品
}

(3)建立商品管理接口的实现类:

在这个类中将接口中的方法都实现,不用一次全部实现,边写边在主函数中调试。

public class GoodsManagerImpl implements GoodsManager{

    private Map<String,Goods> goods_list = new HashMap<>();
    private int size = 0;   //记录商品数量

    /**
     * 添加商品
     * @param
     */
    @Override
    public void add_goods() {
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入添加商品的名称:");
        String name = scanner.next();

        System.out.println("请输入添加商品的价格:");
        double price = 00000;
        try {
            price = scanner.nextDouble();
        }catch (Exception e){

        }

        System.out.println("请输入添加商家的名称:");
        String shop = scanner.next();

        System.out.println("请输入添加商品的分类:");
        String type = scanner.next();

        //随机一个编号,size为当前商品的索引值
        String no = UUID.randomUUID().toString().concat(Integer.toString(size));

        //初始化商品
        Goods goods = new Goods(no,name,price,shop,type);
        goods_list.put(no,goods);
        size++;
    }

    /**
     * 按照编号删除商品
     * @param no
     */
    @Override
    public void del_goods(String no) {
        goods_list.remove(no);
    }

    /**
     * 修改商品信息
     */
    @Override
    public void update_goods() {
        System.out.println("请输入商品编号");
        Scanner scanner = new Scanner(System.in);
        String no = scanner.next();
        Goods goods = goods_list.get(no);

        //输入需要修改的内容
        System.out.println("商品名称:" + goods.getName());
        //输入要修改的内容
        System.out.println("请输入修改后的名称:");
        String name = scanner.next();

        //输入需要修改的内容
        System.out.println("商品价格:" + goods.getPrice());
        //输入要修改的内容
        System.out.println("请输入修改后的价格:");
        double price = goods.getPrice();
        try {
            price = scanner.nextDouble();
        }catch (Exception e){

        }

        //输入需要修改的内容
        System.out.println("商家名称:" + goods.getShop());
        //输入要修改的内容
        System.out.println("请输入修改后的名称:");
        String shop = scanner.next();

        //输入需要修改的内容
        System.out.println("商品类别:" + goods.getType());
        //输入要修改的内容
        System.out.println("请输入修改后的类别:");
        String type = scanner.next();

        //修改商品属性值,HashMap中key值相同覆盖
        goods = new Goods(goods.getNo(),name,price,shop,type);
        goods_list.put(goods.getNo(),goods);
    }

    /**
     * 按照编号查询商品
     * @param no
     * @return
     */
    @Override
    public Goods findByNo(String no) {
        return goods_list.get(no);
    }

    /**
     * 显示所有商品
     * @return
     */
    @Override
    public Collection<Goods> findAll() {
        return goods_list.values();
    }

    /**
     * 按照名字查找商品信息
     * @param name
     * @return
     */
    @Override
    public List<Goods> findByName(String name) {
        List<Goods> result = new ArrayList<>();
        Collection<Goods> coGoods = goods_list.values();

        Iterator<Goods> it = coGoods.iterator();
        while (it.hasNext()){
            Goods goods = it.next();
            if (goods.getName().indexOf(name) > -1){
                result.add(goods);
            }
        }
        return result;
    }

    /**
     * 按照价格区间查找商品信息
     * @param start_price
     * @param end_price
     * @return
     */
    @Override
    public List<Goods> findByPrice(double start_price, double end_price) {
        List<Goods> result = new ArrayList<>();
        Collection<Goods> coGoods = goods_list.values();

        Iterator<Goods> it = coGoods.iterator();
        while (it.hasNext()){
            Goods goods = it.next();
            if (start_price <= goods.getPrice() && goods.getPrice() <= end_price){
                result.add(goods);
            }
        }
        return result;
    }
}

(4)调试:

在主函数中调试,实例化商品对象,更具需求一步一步调试自己已经编写的功能。

public static void main(String[] args) {
        GoodsManagerImpl goodsManager = new GoodsManagerImpl();
        goodsManager.add_goods();
        System.out.println(goodsManager.findAll());

        goodsManager.add_goods();
        System.out.println(goodsManager.findAll());

        System.out.println();
        Scanner scanner = new Scanner(System.in);
        System.out.println("输入要删除的编号:");
        String no = scanner.next();
        goodsManager.del_goods(no);
        System.out.println(goodsManager.findAll());

        goodsManager.update_goods();
        System.out.println(goodsManager.findAll());

        System.out.println("输入要查询的商品编号:");
        no = scanner.next();
        System.out.println(goodsManager.findByNo(no));

        System.out.println("输入要查询的商品名称:");
        String name = scanner.next();
        System.out.println(goodsManager.findByName(name));

        System.out.println("输入要查询的商品价格区间:");
        System.out.println("请输入最小值:");
        double min_price = scanner.nextDouble();
        System.out.println("请输入最大值:");
        double max_price = scanner.nextDouble();
        System.out.println(goodsManager.findByPrice(min_price,max_price));
    }

三、结语

这只是一种思路,这样写项目,清晰明了,哪里错了很好找,养成良好的编码习惯。进阶的可以建立数据库进行调试,将商品添加到数据库,从数据库中查询数据。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值