程序的本质
程序的本质在于模拟现实,但是有更明确的分工
简单的一个例子: 我 写 代码。
这是一个主谓结构: 主语->我,谓语->写,宾语->代码。
现在让我们来面向视角看问题:
- 代码: 是个物体,是用来 被 写 的
- 写: 是个动作,是用来 被 我执行的
- 我: 是个物体,是用来 执行 写 这个动作 写代码的。
好,接着我们来面向对象写代码:
首先,创建一个我,这是个物体,所以应该创建一个对象:
public class Me {
}
然后,需要有代码,才能写,代码也是一个物体,那么再创建一个对象:
public class Code {
}
等等,代码应该有内容,有注释,好,我们来简单模拟下(程序就是模拟现实的):
public class Code {
// 代码
public String code;
// 注释
public String comment;
}
最后,需要创建一个写的动作,写既然是一个动作,不是物体,那么肯定是属于某个物体的行为,这里就是我的行为,动作就是函数(接口),于是就在 "我" 里面添加函数:
public class Me {
// 添加写的行为,写什么?写代码
public Code write() {
Code code = new Code();
code.code = "This is code";
return code;
}
}
这里有个问题,写过的代码,怎么展示出来呢,我们需要个显示器来显示,显示器是物体,所以我们需要定义个对象:
public class Display {
// 显示器可以显示内容
public void display(String content) {
System.out.println(content);
}
}
然后,我们需要展示我们的代码,我们可以直接这样改:
public class Me {
// 添加写的行为,写什么?写代码
public Code write() {
// 写代码
Code code = new Code();
code.code = "This is code";
// 展示
Display display = new Display();
display.display(code.code);
return code;
}
}
这样当然没问题,但是,write()明明是一个写的函数,却额外做了展示的事情,不满足SR