面向过程编程,首重算法,其次数据。
面向对象编程,首重数据,其次算法。
1 类
简单点说,类就是模板。
一个模板有自己的属性和动作。属性描述了这个类是什么样的,方法体现了这个类能表现出哪些行为。
一个学生类,可能会有个学号的属性,也会进行学习的方法。
这里,每一个类的实例,那就是一个数据啊,这个类实例拥有的方法就是算法。
面向对象编程的好处就是去耦合化,把大问题简化成为很多小问题,分别逐个解决。去耦合的关键点在于数据分离,即把数据分开不能随意更改别的类的数据。
2 对象
区别一个对象:
- 对象的行为
- 对象的状态
- 对象的识别,即辨别具有相同行为的不同对象,例如,一个初中生和一个高中生都会学习,但学习的内容却不同。
3 类的识别
面向对象的编程设计是自下而上的编程设计,可以先设计类再组合起来完成大的功能。
4 类之间的关系
- 依赖关系,使用另一个类。
如,银行有每个人的信用记录,贷款购房前可能就要用银行类查看信用情况。
如,我们的Welcome类就使用的System的功能。 - 聚合关系,拥有另一个类。
如,每一个人都有年龄,就使用了int类嘛。
如,System类为了完成输出功能就用了一个PrintStream类的对象out。 - 继承关系,是另一个类。
如,学生也是人,人有名字,学生也应该有名字,这不冲突的,而且学生比人额外的多一些特征(属性和方法)。
如,Integer类就继承了Number类,Number类有的它都有,而且还多了一些自己的属性方法。
面向对象的编程很像一种哲学思想。子类总是比父类拥有更多的特征,这也符合细化的思想。
举个统一的例子。
订单类有个完成交易的方法。
购房订单类继承订单类,所以也有完成交易的方法。特别的地方在于,购房订单类有地址,房款等而订单却不一定都有这些东西。
购房订单类如果要完成交易,需要调用银行类查看信用记录再决定是否成交。