【技术向】学习Java的微项目之发红包 与 USB接口

发红包微项目,主要的技术点有两点,一个是使用抽象类,一个是使用数组(ArrayList是一个数组,本文中使用链表效率会更高)存储红包,再者就是对于方法的定义过程了。

抽象类是User,两个子类是群主和群员,使用ArrayList存储红包,群主的发红包方法接收金钱数和红包数两个参数,返回ArrayList存储红包。群员的收红包方法接收ArrayList作为参数,没有返回值。

==================== User类代码:=============================

public class User {
    private String name;
    private int money;

    public User() {
    }

    public User(String name, int money) {
        this.name = name;
        this.money = money;
    }

    public void show(){
        System.out.println("我叫"+name+",我有"+money+"块。");
    }

    public String getName() {
        return name;
    }

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

    public int getMoney() {
        return money;
    }

    public void setMoney(int money) {
        this.money = money;
    }

}

==========================   群主类代码:=======================

import java.util.ArrayList;

/**
 * Created by 123 on 2020.3.15.
 */
public class QunZhu extends User {

    public QunZhu() {
    }

    public QunZhu(String name, int money) {
        super(name, money);
    }

    public ArrayList<Integer> send(int totalNum, int packageNum){

        ArrayList<Integer> list=new ArrayList<>();

        if(totalNum>super.getMoney()){
            return list;
        }

        int avg=totalNum/packageNum;
        int left=totalNum%packageNum;

        int currentMoney=super.getMoney()-totalNum;
        super.setMoney(currentMoney);

        for (int i = 0; i < packageNum-1; i++) {
            list.add(avg);
        }

        int last=avg+left;
        list.add(last);
        return list;

    }
}

=========================  群员类代码:===========================

import java.util.ArrayList;
import java.util.Random;

/**
 * Created by 123 on 2020.3.15.
 */
public class QunYuan extends User {

    public QunYuan() {
    }

    public QunYuan(String name, int money) {
        super(name, money);
    }

    public void receive(ArrayList<Integer> list){

        Random r=new Random();
        int index= r.nextInt(list.size());

        int num=list.get(index);
        int currentMoney=super.getMoney()+num;
        super.setMoney(currentMoney);

        list.remove(index);

    }
}

=========================  最终使用代码:===========================

import java.util.ArrayList;

/**
 * Created by 123 on 2020.3.15.
 */
public class Demo {
    public static void main(String[] args) {
        QunZhu a=new QunZhu("王",100);
        QunYuan b=new QunYuan("A",0);
        QunYuan c=new QunYuan("B",0);

        a.show();
        b.show();
        c.show();
        System.out.println("===");

        ArrayList<Integer> list=a.send(20,3);
        b.receive(list);
        c.receive(list);

        a.show();
        b.show();
        c.show();


    }
}

最终输出:

我叫王,我有100块。
我叫A,我有0块。
我叫B,我有0块。
===
我叫王,我有80块。
我叫A,我有6块。
我叫B,我有6块。

而USB微项目,是一个应用接口的微项目。其中USB是一个接口,键盘和鼠标都是该接口的实现类,而电脑包含有一个方法,传入参数是USB接口基类,该方法可以根据传入参数,即设备(接口基类USB的子类)的不同实现不同方法。需要注意的是,既可以调用实现类中覆盖重写的接口的方法,又可以调用实现类中新创建的方法。

==========================   USB抽象接口:==========================

public interface USB {
    public abstract void open();
    public abstract void close();
}

==========================  键盘类:================================

public class KeyBroad implements USB {
    @Override
    public void open() {
        System.out.println("打开键盘");
    }

    @Override
    public void close() {
        System.out.println("关闭键盘");
    }

    public void input(){
        System.out.println("键盘输入");
    }
}

 

===========================   鼠标类: ==============================

public class Mouse implements USB {

    @Override
    public void open() {
        System.out.println("打开鼠标");
    }

    @Override
    public void close() {
        System.out.println("关闭鼠标");
    }

    public void click(){
        System.out.println("点击鼠标");
    }
}

===========================  电脑类: ==============================

public class Computer {
    public void open(){
        System.out.println("开机");
    }
    public void close(){
        System.out.println("关机");
    }
    public void useUSB(USB usb){
        usb.open();
        usb.close();
    }
}

============================== 调用类:============================

public class demo05 {
    public static void main(String[] args) {
        Computer com=new Computer();
        com.open();

        USB usb=new Mouse();
        com.useUSB(usb);

        KeyBroad keyboard=new KeyBroad();
        com.useUSB(keyboard);

        method(usb);

        com.close();
    }

    public static void method(USB usb){
        if(usb instanceof Mouse){
            Mouse mouse=(Mouse) usb;
            mouse.click();
        }else if(usb instanceof KeyBroad){
            KeyBroad keybroad=(KeyBroad) usb;
            keybroad.input();
        }
    }

}

===========================  显示结果:  ============================

开机
打开鼠标
关闭鼠标
打开键盘
关闭键盘
点击鼠标
关机

 

posted @ 2020-03-16 12:31  PixelShine  阅读(213)  评论(0)    收藏  举报