对象
对象是对现实世界的实体的抽象,对象由属性(attribute)和操作(operation)组成
对象可以分成
主动对象(Active Object): 自有动力
被动反应对象(Reactive Object): 依赖于外部动力(例如main方法)
主动对象的行为:
主动对象有他自己的控制线程,一个并发任务,其他对象的消息异步地到达主动对象的消息队列,主动对象一次处理一个消息(一旦开始处理一个消息,一直持续到处理完成,不能被另一个事件中断,这叫做run-to-completion) 直到队列为空。
被动反应对象的行为:
在被动对象被创建后,他被动的等待其他对象向他发起请求,在完成请求服务后,再次进入等待状态,以此循环,直到这个对象被其他对象销毁。
面向对象
面向对象的基本思想是尽可能用人类的思维方式来构造软件系统。面向对象包括面向对象分析(OOA),面向对象设计(OOD),面向对象的程序设计(OOP),面向对象的测试(OOT)和面向对象维护等。
面向对象 = 对象 + 类 + 继承 + 消息传递(消息一般被实现成函数调用)
面向对象的四条基本原则:
抽象(Abstaction)
封装(Encapsulation)
继承(Inheritance)
多态(Polumorphism)
抽象
抽象意味着一个概念或者想法没有与他相关联的具体实例。我们通过抽象类/接口来得到一个类的内容而不是直接使用它。所以一个类使用另一个类时,不需要知道他的内部构造,只了解他的接口就够了。
封装
封装是通过限制访问公开方法的一种隐藏数据调用机制。实例的变量被定义为私有化而getter/setter方法设为公有来访问访问变量。
public class Employee {
private String name;
private Date dob;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Date getDob() {
return dob;
}
public void setDob(Date dob) {
this.dob = dob;
}
}
继承
两个对象的继承可以表示为"is-a"和'has-a"关系。通过继承,我们可以重用父类的代码,在java中的"is-a"可以通过类的继承(extends)或者接口实现(implements)
多态
多态意味着一个名字多种形式。它有两种形式——静态多态,动态多态。
静态多态是通过方法方法重载,而动态多态是通过方法重写。多态与继承有着紧密联系,比如说我们在父类写一段代码,这段代码它也可以在他的子类工作。