面向对象程序设计_1. 面向对象程序设计概述

fcf94c2e5a6c69c4d3f17544ed6063d6.png

结构化程序:算法+数据结构 = 程序

(即确定如何操作数据,再决定如何组织数据的结构)

面向对象程序设计(OOP):将数据放在第一位,再考虑操作数据的算法

1. 类

  1. 类(class)是构造对象的模板或蓝图,就好像一个制作某件工艺品的模具,对象就是工艺品
  2. 由类构造(construct)对象的过程称为创建类的实例(instance)
  3. 封装(encapsulation)数据行为组合在一个包中,对对象的使用者隐藏具体的实现方式,也称为数据隐藏
  4. 对象中的数据称为实例字段(instance field),操作数据的过程称为方法(method)
  5. 对象拥有的实例字段值的集合就是这个对象的当前状态(state)
  6. 程序只能通过对象的方法和对象数据进行交互,提高了重用性和可靠性
  7. 可以通过扩展一个类来构建新的类,这使得用户自定义类更加容易。在Java中,所有类都来自于一个超类,即Object
  8. 通过扩展一个类来建立一个新的类的过程就是继承(inheritance),新类具有被扩展的类的全部属性和方法,可以自定义新的属性和方法。

2. 对象

对象的3个特性

  • 行为(behavior)——可以对对象完成的操作(应用的方法)
  • 状态(state)——描述当前状况的信息,状态的改变必须通过调用方法实现
  • 标识(identity)——每个对象有唯一的标识来区分(如两个订单的编号肯定不相同)

3. 识别类

编写程序从识别类开始,然后为各个类添加方法。

一个简单的方法是在分析问题的过程中寻找名词——类,寻找动词——方法

例如我们有商品,订单,账户这样的名词作为类,即Item,Order,Account

那么在账户这个类中,就可以有增加账户,修改账户等方法。

4. 类之间的关系

类之间最常见的关系有:

  • 依赖("uses-a")
  • 聚合 (”has-a“)
  • 继承"is-a")

4.1 依赖(dependence)

如果一个类的方法使用或操纵另一个类的对象,我们就可以说一个类依赖于另一个类

比如Order对象访问Account对象查看信用状态,这就是一个使用("uses-a")的关系。

(尽可能减少相互依赖的类,做到低耦合)

4.2 聚合(aggregation)

类A的对象包含("has-a")类B的对象

如一个Order对象就包含了一些Item对象

4.3 继承(inheritance)

一个更特殊的类与一个更一般的类之间的关系

也就是前面提到的扩展,比如现在我们定义一个加急订单RushOrder类,

那么它是一个("is-a")Order类

也就是有Order类继承而来。

下图展示了上述的三种关系。

1fb8757988ecf93d85707c7abcf8e722.png

参考:

  1. 《Java核心技术 卷I 基础知识》(原书第11版)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值