过程式程序设计与面向对象程序设计
过程式程序设计也就是结构化程序设计通过算法来求解问题,然后确定后考虑储存数据的方法,(算法+结构=程序)。适用于一些规模较小的问题。
当问题规模较大时用对象则更好的可以来处理此类问题。
过程
----------------> | |
过程 | 全局变量 |
------------------> |____________________|
过程式程序设计
方法
方法 | |
——————————> | 对象数据 |
面向对象程序设计
使用预定义类(class)
类(class) 指定了如何构建对象。
由一个类构造对象的过程称为创建这个类的一个实例。也就意味着这个类的使用需要实例化。
例如我们创建了一个Bank类.
如果我们想要调用这个类中的变量就需要将其实例化后,开始使用这个类。
这里我们创建好以后,需要对类进行封装。
封装(也是一种信息隐藏)是处理对象的重要概念。
从形式上看:封装也就是将数据和行为组合到一个包中,并对对象隐藏具体的实现细节。
对象中的数据(实例字段),操作数据的过程(方法)。
作为一个类的实例,一个特定对象有一组特定的实例字段值。这些值的集合就是当前这个对象的当前状态。当我们在这个对象上调用一个方法时,它的状态就有可能发生改变。
实现封装也就意味着,我们不能让其他类中的方法直接访问这个类的实例字段。程序只能通过对象的方法与对象数据进行交互。
封装为对象赋予了“黑盒”特征,提高了程序的重用性和可靠性。
这样用一个类完全改变储存数据的方式,只要仍使用同样的方法操作数据,其他对象就不会知道这个类中所发生的变化。
OOP也会使我们定义Java类变得更容易,我们可以通过扩展其他类来构建新类.扩展一个已有的类时,这个类具有被扩展的那个类的全部属性和方法,我们只需要在新类中提供适用这个新类的新方法和实例字段。
通过扩展一个类来得到另外一个类也被称为继承。
对象
对象的特征
1.对象的行为————可以对这个对象进行什么操作,应用什么方法;
2.对象的状态————调用那些方法后,对象的响应;
3.对象的标识————如何区分可能具有相同行为和状态的不同对象;
识别类
在opp的程序编写中我们的程序往往从识别类开始,然后再为各个类添加方法。
一般我们可以在分析问题过程中找到名字,而方法对应动词。
类之间的关系
- 依赖(use-a);
- 聚合(has-a);
- 继承(is-a);
依赖(dependence))"use-a"关系,一个类的方法的使用要使用或操作另一个类的对象。
比如我们登录某个网址时我们的操作依赖于我们的账户,我们每步的操作前都是先经过我们的账户,但同时我们更改一个类时也要考虑另一个类中的变化,避免产生bug。
聚合(aggregation)"has-a"关系,即一个对象中包含着另一个对象。
继承(inheritance)"is-a"关系,通过一个类扩展另一个类,如:由A类扩展B类,那么A类会继承B类的方法。
实例化
我们通过列举Data类来展示
类似于C++中的对象指针。