JAVA基础总结(1)——面向对象编程思想

抽象

1. 概念

由于面向对象有类的概念,类是是对象的抽象。因此,有必要理解一下抽象这个概念,抽象它是一种科学学概念,它是哲学的根本特点。抽象与我们平时所说的具体,是相应的一个概念,所以说,抽象它不能脱离具体而单独存在。

抽象是从众多的事物中抽取出共同的、本质性的特征,而舍弃其非本质的特征的过程。

以上来自百度百科中对抽象的一句解释,以下,是我对上面这句话的解释:

	 1、抽象是一个动词,它是一种行为、一种动作,一种思维过程。
	 2、它是从众多事物中抽取共有的属性特征。
	 3、在选择待抽取特征的过程中只选择事物本身固有的属性。
2. 抽象的特征

在抽象过程中,对特征的选取,往往取决于个人对事物的看法,如果目标事物是一个问题,那么选择的特征往往分析或解决这项问题所必须的特征元素,那些不必要的特征元素往往不会考虑进去。也就是说,不同的人,分析事物的层次的角度不同,抽象的过程对事物特征的选择就会不同,以下举例说明:

“ 小明今天做了一道清蒸鲈鱼”

看上面这句话,你从中得到了哪些信息。

普通人:它就是小明做的一道菜,一道清蒸的鲈鱼而已。

思维丰富的人:除了上面这些,小明是不是一个厨师,它是怎么做的,这道菜好吃吗?

厨师:鲈鱼这个食材是在哪买的?新不新鲜?制作过程中用了哪些烹饪技巧,放了哪些调料?蒸煮过程的用时、火候等等。

数学家:这是不是小明今天做的第一道菜,今天几点开始做的,一共用了几条鱼。

3. 编程中的抽象

人们所能解决的问题的复杂性直接取决于抽象的类型和质量。所谓的“类型” 是指,“所抽象的是什么?” ——《JAVA编程思想》

计算机的诞生就是为了解决现实生活中的问题,如数据存储、科学计算、密码破译、自动化生产等。目的就是为了替代和增强人类手动完成业务、解决问题的能力。

前面说过,不同的人,分析事物的层次的角度不同。实际上,程序员在通过编程解决实际问题的时候,通常也是一样,不同程序员,分析问题的层次和角度也是不同的。大多数人(程序员)在分析问题的时候,往往会是一种过程化思维(面向过程化编程),而也有一部分程序员则会用到抽象化思维。这里举例说明一下:

在计算机屏幕中绘制出一个长方形

对于使用过程化思维进行编程的程序员:在编程的时候往往会想,利用编程在计算机屏幕中绘制图片,我要先做什么,后做什么,最后才能画出一个长方形。

对于使用抽象化思维进行编程的程序员:我要画长方形,我要关注长方形的长度和宽度,以及屏幕的长度和宽度,在绘制过程中需要用到哪些方法,哪些资源?怎样将它们看成是同一类事物,怎样进行分类处理,我是否可用同一类编程方法,绘制出除长方形以外其他的几何图形?

实际上,除了编程中分析问题时的抽象,计算机各等级编程语言当中也有抽象,比如汇编语言是对机器语言的抽象,只是抽象的不强,所以有了各种各样的指令。而高级语言又是对汇编语言的抽象,所以有了各种个样的函数或方法。

面向对象编程思维

1. 概念

前面我们在讲抽象过程的时候,讲到过对于使用抽象化思维进行编程的程序员分析问题的特点。在编程之前,需要对问题进行分析,分析的结果会直接或间接的影响编程成果。所以,分析问题时选择的角度和层次是什么重要的。而面向对象就是在分析问题的时候,建立问题模型的时候,一种非常好的思维方式。通过用这种思想进行分析问题和编程就是在问题中解决问题。亦或者是说,在建立的问题模型里还原和解决问题。以这样的方式进行编程,不仅简化了问题,也有非常好的自适应和扩展性。

2. 类与对象

对象的概念: 所谓对象,指的是现实生活中能够看得见摸得着的具体事物,而在面向对象编程里,对象具有数据和行为,它不仅可以实现特定的操作,还可以记录操作的结果。也就是说,对象是数据和行为的结合体。这也和我们现实生活中的事物大相径庭,比如一个人自身就有很多数据(姓名,性别,身高,体重等等),也有很多行为(写作,说话,行走等等)。实际上面向对象编程,就是通过利用众多对象里的各种行为来完成程序中一项项功能,因此我们可以认为程序就是对象的集合。
类的概念: 所谓类,就是类型,它是对事物通过抽象得来的一种抽象概念,简单理解就是归纳总结得来的结果。在面向对象编程里,类是对具有相同数据(属性)和行为(功能)的对象的抽象。类具有属性和功能,它的属性和功能就是所抽象的这些对象共同拥有的属性和功能。例如我们对电饭煲、电风扇、电动牙刷、电动车这些东西进行抽象,它们都共同拥有输入功率、输出功率这两个属性,只不过大小都各不同罢了,都可以做功产生能量,只不过能量的形式不同罢了。那么我们就可以将它们抽象成电器类,因此电器类就有属性:输入功率、输出功率,和功能:产生能量。
二者的关联: 对象的抽象就是类,而类的具体化(实例化)就形成了对象。每一个对象都有所属的类型,每一个类型下的对象都拥有的相同的属性名和同一种功能,但是属性具体的值大小和功能产生的结果不同,这也是为什么一个类下可以有多种对象,而这些对象又可以归纳总结为一类对象。

类描述了具有相同特性(数据元素)和行为(功能)的对象集合。 ——《JAVA编程思想》

3. 面向对象编程步骤

我们在前面讲过,在编程之前需要对问题进行分析(建立问题模型),实际上,使用面向对象思维建立问题模型就是抽取待解问题中任意的元素(形成问题的各种因素以各种事物),并将这些元素看成是对象,并定义对象所属的类型,通过对类的具体化(实例化)生成对象,最后调用并组合使用各种对象解决待解问题。归纳后就是以下几项步骤:

  1. 以对象思维看待各种问题元素
  2. 定义对象所属的类型
  3. 类实例化形成对象
  4. 调用并组合使用各种对象
4. 消息与接口

在讲对象时我们说到过,面向对象编程就是就是通过利用众多对象里的各种行为来完成程序中一项项功能。而利用对象的各种行为的过程,就是调用对象的接口,并将指定消息告诉对象使其根据你的消息完成特定的功能。这里就好比如一个人会写文章,他有 写文章 这个接口,并且可以指定你要求写的 文章类型 (小说、诗文等),如果你要他完成一篇小说,你就得调用他 写文章 这个接口,并附带 文章类型: 小说这一消息。
因此接口定义的是对象所能完成的行为(功能)(或者说所能提供服务)以及可以接收的消息(可以是多个不同类型的消息),指定的消息不同,完成的功能结果就不同。 注:在具体编程语言中,这个可接收消息也叫做接口的参数。 接口确定了对某以特定对象所能发出的请求。

5.特性总结

1)万物皆对象
在面向对象过程中,你可以将待解决问题中的任一元素(问题形成的因素和事物)看成对象。以对象思维看待各种问题元素。

2)程序即对象集合,它们通过发送消息来告知彼此所要做的。
面向对象编程就是就是通过利用众多对象里的各种行为来完成程序中一项项功能,对象与对象之间可以相互传达消息,相互调用接口,以此来配合实现程序的功能。

3)每个对象都拥有其类型
要先使用对象,就得建立对象的类型,而类又不能脱离对象单独存在,因此每个对象都拥有其类型。

4)同属一类的对象都提供同样的服务
由于类的实例化就是对象,而类的属性和行为(功能)就是对象的属性和行为(功能),因此,由同一个类实例化出来的对象们,都拥有相同的属性和行为,自然都提供同样的服务,接收同类型消息。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值