需求一:用手机打电话,发短信,看视频,听音乐,用面向对象思想实现;

package android.java.oop01;

/**
 * 1.既然是面向/面对 --> 对象 就要把 (用手机打电话,发短信,看视频,听音乐)描述对象/实体
 * 2.Phone手机 为什么是定义Phone手机,因为Phone手机包含了[打电话,发短信,看视频,听音乐] 这些行为和功能
 */
class Phone{

    /**
     * 打电话的行为/功能
     */
    void call(){
        System.out.println("打电话的行为/功能");
        // ......
    }

    /**
     * 发短信的行为/功能
     */
    void sendMsg() {
        System.out.println("发短信的行为/功能");
        // ......
    }

    /**
     * 看视频的行为/功能
     */
    void lookVideo() {
        System.out.println("看视频的行为/功能");
        // ......
    }

    /**
     * 听音乐的行为/功能
     */
    void hearMusic() {
        System.out.println("听音乐的行为/功能");
        // ......
    }

    // ......
}


/**
 * 需求一:用手机打电话,发短信,看视频,听音乐,用面向对象思想实现;
 */
public class OopDemo03 {

    public static void main(String[] args) {

        /**
         *  3.注意:不能去面向 打电话,发短信,看视频,听音乐 这些功能/行为,而是面向对象
         */
        Phone phone = new Phone();

        /**
         * 执行对象里面的方法
         *     手机.打电话
         *     手机.发短信
         *     手机.看视频
         *     手机.听音乐
         */
        phone.call();
        phone.sendMsg();
        phone.lookVideo();
        phone.hearMusic();

    }

}

 


 

 

需求二:黄天工作室里有50位穿着黑色衣服的程序员正在疯狂的写代码

package android.java.oop01;

/**
 * 1.首先面向最大的哪个对象,描述最大的哪个对象(工作室) 因为工作室包含了程序员
 */
class Studio {

    private Studio(){}

    public Studio(String studioName, int number) {
        this.studioName = studioName;
        this.number = number;
    }

    /**
     * 描述工作室的名称  例如:黄天
     */
    private String studioName;

    /**
     * 描述工作室的员工数量  例如:35名程序员  /  4名领导   ...
     */
    private int number;

    /**
     * 描述工作室的行为/功能
     */
    public void work(Programmer programmer) {
        System.out.println("黄天工作室里有" + number + "位" + programmer.doCode());
    }

    /**
     * 工作室还有很多行为,例如:员工离开工作室,员工进入工作室 等等
     *  ....
     */
}

/**
 * 2.描述程序员这个对象/实体
 */
class Programmer {

    private Programmer(){}

    public Programmer(String color) {
        this.color = color;
    }

    /**
     * 描述程序员穿的衣服颜色
     */
    private String color;

    /**
     * 描述程序员的行为
     */
    public String doCode() {
        return "穿着" + color + "黑色衣服的程序员正在疯狂的写代码";
    }


}


/**
 * 需求二:黄天工作室里有50位穿着黑色衣服的程序员正在疯狂的写代码
 */
public class OopDemo04 {

    public static void main(String[] args) {

        /**
         * 之前两步重点是描述对象,而现在是创建/实例化/ --> 对象/实体
         */
        Studio studio = new Studio("黄天", 50);
        studio.work(new Programmer("黑色"));
    }

}

 


 

  

需求三:人开门

package android.java.oop01;

/**
 * 分析【人开门】:
 *      开门/关门 等 这些行为/功能 肯定是门最清楚(门轴/弹簧怎么操作),所以具体开门的行为/功能是门在做,而谁让门打开呢? 是人
 */

/**
 * 描述门🚪
 */
class Door {

    /**
     * 描述门的行为/功能 --> 开门
     */
    public void openDoor() {
        System.out.println("开门");
    }

    /**
     * 描述规则:注意⚠️ 只描述我们需要的,不能全部描述,否则描述不完的,太多了
     * ......
     */
}

/**
 * 描述人
 */
class Person {

    /**
     * 描述门的行为/功能 -->  去---> 门.开门
     * @param door 注意:⚠️ 此参数融入了真实生活场景,你要开哪个门,就把哪个门传给我
     */
    public void toOpenDoor(Door door) {
        door.openDoor();
    }

    /**
     * 描述规则:注意⚠️ 只描述我们需要的,不能全部描述,否则描述不完的,太多了
     * ......
     */
}


/**
 * 需求三:人开门
 */
public class OopDemo05 {

    public static void main(String[] args) {

        /**
         * 之前两步重点是描述对象,而现在是创建/实例化/ --> 对象/实体
         */
        new Person().toOpenDoor(new Door());
    }

}