专注Java教育14年 全国咨询/投诉热线:400-8080-105
动力节点LOGO图
始于2009,口口相传的Java黄埔军校
首页 hot资讯 面向对象程序设计概述

面向对象程序设计概述

更新时间:2020-09-22 17:07:37 来源:动力节点 浏览1083次

说到java语言,相信很多人想起来的第一个特性就是面向对象特征,对于java零基础的小白们来说,开始学习的第一课也是面向对象,今天来讨论一下面向对象程序设计这一思想该怎样理解,以及在java编程中起到了什么样的作用。

面向对象程序设计是当今主流的程序设计范型,英文简称是OOP,它已经取代了70年代早期的“结构化”过程化程序设计开发技术,java是完全面向对象的,绝对不能使用人们熟悉的过程式风格设计java程序。

下面让我们从一个看似与程序设计无关的例子开始,这个例子是这样说的:为什么Compaq、Dell、Gateway以及其他一些主流的PC机制造商能够这样快地发展壮大?很多人可能会说:他们能够生产具有良好性能的计算机,并以低廉的价格销售,从而满足了人们对计算机需要的迅猛增长,顺应了时代的需求。然而,让我们进一步地思考一下,他们为什么能够制造出这么多种型号的计算机,并以如此快的速度对需求变化做出响应?

其中主要原因是这些公司将大量的工作交给了他人。他们从信誉较好的厂商那里购买组件,然后将它们组装起来。这样一来,往往不需要在设计与制作电源、磁盘驱动器、板以及其他组件上花费过多的时间和资金。与自行研制相比,这样能够以更快的速度、更少的资金生产产品,并快速地适应需求变化。

个人计算机制造商所购买的就是“预包装功能”(prepackaged functionality)。例如,当购买一个电源的时候,实际上购买的是具有一些属性(大小、形状等等)和功能(稳压输出、实际功率等)的东西。Compaq公司就是一个应用这种高效生产过程的典范。当他们从自行研制大部分零部件转向主要依靠购买部件时,其盈利获得了大幅度地提升。

面向对象程序设计也是基于同样的想法,它认为程序是由对象组成的,这些对象有自己的属性和能够执行的操作。是自己构造对象还是从外界购买对象完全取决于预算或时间。但是,从根本上说,只要对象能够满足要求,就不必关心其功能的具体实现过程。在面向对象程序设计中,只需要关注对象的外表,就如同计算机制造商只关心电源是否符合要求,不必关心其内部结构一样,绝大多数的java程序员不必关心对象的具体实现,只要保证对象满足他们的需求就可以了。

传统的结构化程序设计通过设计一系列的过程(即算法)来求解问题。这些过程一旦被确定,下一步就要开始寻找存储数据的方式。这就是Pascal语言的设计者Niklaus Wirth将其编著的有关程序设计的著名书籍命名为《Algorithms+Data Structure=Programs》(算法+数据结构=程序) (Prentice Hall, 1975 )的原因。请注意,在Wirth命名的书名中,算法是第一位的,而数据结构是第二位的。这就生动地表述了程序员当时的工作方式。首先要确定如何操纵数据;然后再决定如何组织数据的结构,以便操纵数据。OOP却调换了这个次序,将数据放在第一位,然后再考虑操纵数据的算法。

image.png

面向对象程序设计的关键是让每一个对象负责执行一组相关的任务。如果一个对象依赖于另一个对象负责处理的任务,那么它就去访问那个包括该任务的对象。此时,第一个对象请求第二个对象执行任务。这种工作方式实际上是由过程化程序设计中人们所熟悉的过程调用实现的。(在java程序设计语言中,这些过程调用被称为方法调用。)

特别需要说明的是,一个对象既不能直接访问另一个对象内部的数据,也不能让其他对象直接访问自己内部的数据。对象之间的所有通信都是通过方法调用完成的。通过封装对象数据,最大限度地提高可重用性,减少数据的依赖性,并将程序的调试时间降到最短。

当然,如同过程化程序设计语言中的模块一样,不要让一个对象承担的任务过多。创建一个仅执行少量任务的小型对象,会使设计和调试过程简化;而创建一个内部含有复杂数据和数百个过程的对象,会使设计与调试过程变得非常困难。

对于java的学习来说,在一开始能有整体编程思想和java基本思想的认知的把握,对学习是十分有用的,面向对象程序设计对java是十分重要的。希望通过这篇文章的介绍,大家可以对面向对象程序设计有一定的理解,从而可以对java的学习起到一定的作用。


提交申请后,顾问老师会电话与您沟通安排学习

免费课程推荐 >>
技术文档推荐 >>