需求一:用手机打电话,发短信,看视频,听音乐,用面向对象思想实现;
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());
}
}