- 7
- 0
- 约2.89万字
- 约 28页
- 2018-05-29 发布于河南
- 举报
面向对象编程概述
第 章
面向对象编程概述
面向对象(Object-Oriented,OO)软件开发对于主要编写过程式代码的开发人员而言是一个非常令人困惑的主题。但是,情况本不该变成如此。本章将讨论OO背后的一些基本理论,并介绍OO的一些难以理解的术语(有一些是令人望而生畏的术语)。同时,您还将认识到为什么您会对OO技术感兴趣,以及OO技术如何极大地提高开发复杂应用程序的速度。并且,您还可以看到修改这些应用程序是非常简单的工作。
接下来的几章将扩展在本章中给出的一些基本思想,并帮助您熟悉一些更高级的主题。如果您已经在PHP 6以外学习过OO开发,那么可以跳过本章和下一章。但是,这些内容很好地总结了面向对象编程的基本原理,因此建议完整阅读这些内容。
1.1 面向对象编程的概念
面向对象编程(Object-Oriented Programming,OOP)需要以一种不同的方式来考虑如何构造应用程序。通过对象可以在对应用程序所处理的现实任务、过程和思想进行编码时,实施更贴切的建模。OOP方法并不是将应用程序考虑成一个将大量数据从一个函数传递给下一个函数的控制线程,而是允许将应用程序建模成一组相互协作的对象,并且这些对象可以独立地处理某些活动。
可以做如下类比:在造一幢房屋时,管道工程师主要处理管道,而电气工程师则主要负责处理电线。管道工程师并不需要知道卧室中的电路是10安培还是20安培,他们需要关注的仅仅是自己的活动。总承包人保证每个子承包人都能够完成他们需要完成的工作,但是他不一定要关注每个任务的具体细节。OOP方法与此类似,其中每个对象均对其他的对象隐藏其实现细节。每个对象如何完成其任务与系统中的其他组件并不相关。对象之间的关联就是对象所能够提供的服务。
类和对象的概念,以及在软件开发过程如何运用这些概念,正是隐藏在OOP背后的基本思想。从某种意义上说,OOP是和过程编程相对立的,过程编程使用函数和全局数据结构来实施编程。OOP方法具有好于过程编程的优点以及(PHP对OO支持的全新实现首次出现在PHP 5中,并在PHP 6中做了进一步的改进)巨大的性能改进。
1.1.1 OOP的优点
OOP的主要优点之一就是可以轻松地将单个的业务需求转换为单个的代码模块。由于OOP方法允许基于现实世界对象的思想来对应用程序进行建模,因此通常可以识别人、事物以及概念和等价类之间的直接关联。这些类具有与它们所表示的现实世界概念相同的属性和行为,这将有助于快速确定必须要编写哪些代码,以及应用程序的不同部分之间必须如何实施交互。
OOP的第二个优点就是代码重用。通常,在同一个应用程序的不同位置需要相同类型的数据。例如,一个帮助医院管理其病人记录的应用程序肯定需要一个名为Person的类。在病人护理中涉及到大量人员—— 病人、医生、护士、医院管理人员、保险理赔人员等。在病人护理的每个步骤中,该病人的记录中需要说明哪个人正在执行给定的操作(例如开处方、清理伤口或邮寄账单给保险公司),并且验证此人获准执行该操作。通过定义一个包含了所有人员共用的属性和方法的通用类Person,就可以实现大量的代码重用,而代码重用在过程编程方法中并不总是能够实现。
其他的应用程序又如何呢?如果在某个时刻让您想象一下,您会想到有多少应用程序涉及到个人信息的处理呢?可能会有很多。一个编写良好的Person类可以方便地从一个项目复制到另一个项目,而无需做多大的改动,甚至是不需要做任何改动。这样,代码重用立即就可以使您拥有之前所开发的处理人员信息所需要的所有丰富功能。这是OO方法最大的优点之一:在给定应用程序中重用代码,也可以跨不同项目重用代码。
OOP的另外一个优点源于类的模块化。如果在Person类中发现了一个错误,或者希望往类中添加一些功能或改变类的工作方式,您只需要在一个位置进行处理。该类的所有功能均包含在一个单独的文件中。依赖于Person类的应用程序的所有进程都将立即被该类的改动所影响。这可以极大地简化错误的检查过程,并使得添加功能成为一个相对简单的任务。
1.1.2 一个现实世界的示例
在一个较小的应用程序中,上面提到的优点看上去似乎有点微不足道;但是在一个比较复杂的软件体系结构中,模块化的优点可能就非常显著。本书的作者之一曾经致力于完成一个具有200 000多行过程式PHP代码的项目。毫无疑问,花费在修改漏洞上的时间中的65%都用在寻找特定函数的位置,以及确定哪些数据和哪些函数交互。随后在OO体系结构中对该软件的重写导致代码量大大降低。如果一开始就以这种方式实现该应用程序,那么不仅是从一开始就只需花费较少的开发时间,而且可以使代码中的漏洞也比较少(代码量越少,出问题的机会也就越少),同时花费在漏洞修补上的开发周转时间也将大幅减少。
由于OO方法本身就是一个非常适合于清晰描述应用程序
您可能关注的文档
- 锅炉烘炉煮炉工艺分析.doc
- 锅炉烘炉、煮炉的技术要求.doc
- 锂电信息动态与分析05.pdf
- 锅炉百题.doc
- 锅炉风险评估.doc
- 锐普ppt论坛图表1.ppt.ppt
- 锐角三角函数知识与求解(教学设计方案).doc
- 锐角三角函数知识与求解教案.doc
- 铸造工艺学第三篇(2、5章).ppt
- 锦句格言.doc
- 宠物行业新品趋势-炼丹炉x淘天集团-202601.docx
- 2025空间智能软件技术大会:GIS+燃气:智慧燃气行业数字化转型.pptx
- 2025年AI治理报告:回归现实主义.docx
- 2025医疗科技领域AI应用:驾驭变革与机遇研究报告 Artificial Intelligence in Medtech Navigating Change and Opportunity.docx
- 2026年50大科技趋势前瞻报告 The Top 50 Technology Trends.docx
- 数字电网无人机巡检解决方案.docx
- 人工智能企业综合能力评价规范(平台化视角)(征求意见稿).docx
- 中国经济复盘与展望:“反内卷”与结构突围.docx
- 爷爷不泡茶茶饮品牌小红书平台推广方案.pptx
- 2026年美中AI市场竞争态势与DeepSeek的突围(中文).docx
原创力文档

文档评论(0)