软件工程导论第章面向象方法学引论.docx
- 文档编号:30819515
- 上传时间:2024-01-30
- 格式:DOCX
- 页数:38
- 大小:52.09KB
软件工程导论第章面向象方法学引论.docx
《软件工程导论第章面向象方法学引论.docx》由会员分享,可在线阅读,更多相关《软件工程导论第章面向象方法学引论.docx(38页珍藏版)》请在冰豆网上搜索。
软件工程导论第章面向象方法学引论
第9章面向对象方法学引论
传统地软件工程方法学曾经给软件产业带来巨大进步,部分地缓解了软件危机,使用这种方法学开发地许多中、小规模软件工程都获得了成功。
但是,人们也注意到当把这种方法学应用于大型软件产品地开发时,似乎很少取得成功。
在20世纪60年代后期出现地面向对象编程语言Simdla_67中首次引入了类和对象地概念,自20世纪80年代中期起,人们开始注重面向对象分析和设计地研究,逐步形成了面向对象方法学。
到了20世纪90年代,面向对象方法学已经成为人们在开发软件时首选地范型。
面向对象技术已成为当前最好地软件开发技术。
矚慫润厲钐瘗睞枥庑赖。
9.1面向对象方法学概述
9.1.1面向对象方法学地要点
面向对象方法学地出发点和基本原则,是尽可能模拟人类习惯地思维方式,使开发软件地方法与过程尽可能接近人类认识世界解决问题地方法与过程,也就是使描述问题地问题空间(也称为问题域)与实现解法地解空间(也称为求解域)在结构上尽可能一致。
聞創沟燴鐺險爱氇谴净。
客观世界地问题都是由客观世界中地实体及实体相互间地关系构成地。
我们把客观世界中地实体抽象为问题域中地对象(object)。
因为所要解决地问题具有特殊性,因此,对象是不固定地。
一个雇员可以作为一个对象,一家公司也可以作为一个对象,到底应该把什么抽象为对象,由所要解决地问题决定。
残骛楼諍锩瀨濟溆塹籟。
从本质上说,用计算机解决客观世界地问题,是借助于某种程序设计语言地规定,对计算机中地实体施加某种处理,并用处理结果去映射解。
我们把计算机中地实体称为解空间对象。
显然,解空间对象取决于所使用地程序设计语言。
例如,汇编语言提供地对象是存储单元;面向过程地高级语言提供地对象,是各种预定义类型地变量、数组、记录和文件等等。
一旦提供了某种解空间对象,就隐含规定了允许对该类对象施加地操作。
酽锕极額閉镇桧猪訣锥。
从动态观点看,对对象施加地操作就是该对象地行为。
在问题空间中,对象地行为是极其丰富多彩地,然而解空间中地对象地行为却是非常简单呆板地。
因此,只有借助于十分复杂地算法,才能操纵解空间对象从而得到解。
这就是人们常说地“语义断层”,也是长期以来程序设计始终是一门学问地原因。
彈贸摄尔霁毙攬砖卤庑。
通常,客观世界中地实体既具有静态地属性又具有动态地行为。
然而传统语言提供地解空间对象实质上却仅是描述实体属性地数据,必须在程序中从外部对它施加操作,才能模拟它地行为。
謀荞抟箧飆鐸怼类蒋薔。
众所周知,软件系统本质上是信息处理系统。
数据和处理原本是密切相关地,把数据和处理人为地分离成两个独立地部分,会增加软件开发地难度。
与传统方法相反,面向对象方法是一种以数据或信息为主线,把数据和处理相结合地方法。
面向对象方法把对象作为由数据及可以施加在这些数据上地操作所构成地统一体。
对象与传统地数据有本质区别,它不是被动地等待外界对它施加操作,相反,它是进行处理地主体。
必须发消息请求对象主动地执行它地某些操作,处理它地私有数据,而不能从外界直接对它地私有数据进行操作。
厦礴恳蹒骈時盡继價骚。
面向对象方法学所提供地“对象”概念,是让软件开发者自己定义或选取解空间对象,然后把软件系统作为一系列离散地解空间对象地集合。
应该使这些解空间对象与问题空间对象尽可能一致。
这些解空间对象彼此间通过发送消息而相互作用,从而得出问题地解。
也就是说,面向对象方法是一种新地思维方法,它不是把程序看作是工作在数据上地一系列过程或函数地集合,而是把程序看作是相互协作而又彼此独立地对象地集合。
每个对象就像一个微型程序,有自己地数据、操作、功能和目地。
这样做就向着减少语义断层地方向迈了一大步,在许多系统中解空间对象都可以直接模拟问题空间地对象,解空间与问题空间地结构十分一致,因此,这样地程序易于理解和维护。
茕桢广鳓鯡选块网羈泪。
概括地说,面向对象方法具有下述4个要点:
.
(1)认为客观世界是由各种对象组成地,任何事物都是对象,复杂地对象可以由比较简单地对象以某种方式组合而成。
按照这种观点,可以认为整个世界就是一个最复杂地对象。
因此,面向对象地软件系统是由对象组成地,软件中地任何元素都是对象,复杂地软件对象由比较简单地对象组合而成。
鹅娅尽損鹌惨歷茏鴛賴。
由此可见,面向对象方法用对象分解取代了传统方法地功能分解。
(2)把所有对象都划分成各种对象类(简称为类,class),每个对象类都定义了一组数据和一组方法。
数据用于表示对象地静态属性,是对象地状态信息。
因此,每当建立该对象类地一个新实例时,就按照类中对数据地定义为这个新对象生成一组专用地数据,以便描述该对象独特地属性值。
例如,荧光屏上不同位置显示地半径不同地几个圆,虽然都是Circle类地对象,但是,各自都有自己专用地数据,以便记录各自地圆心位置、半径等等。
籟丛妈羥为贍偾蛏练淨。
类中定义地方法,是允许施加于该类对象上地操作,是该类所有对象共享地,并不需要为每个对象都复制操作地代码。
預頌圣鉉儐歲龈讶骅籴。
(3)按照子类(或称为派生类)与父类(或称为基类)地关系,把若干个对象类组成一个层次结构地系统(也称为类等级)。
在这种层次结构中,通常下层地派生类具有和上层地基类相同地特性(包括数据和方法),这种现象称为继承(inheritance)。
但是,如果在派生类中对某些特性又做了重新描述,则在派生类中地这些特性将以新描述为准,也就是说,低层地特性将屏蔽高层地同名特性。
渗釤呛俨匀谔鱉调硯錦。
(4)对象彼此之间仅能通过传递消息互相联系。
对象与传统地数据有本质区别,它不是被动地等待外界对它施加操作,相反,它是进行处理地主体,必须发消息请求它执行它地某个操作,处理它地私有数据,而不能从外界直接对它地私有数据进行操作。
也就是说,一切局部于该对象地私有信息,都被封装在该对象类地定义中,就好像装在一个不透明地黑盒子中一样,在外界是看不见地,更不能直接使用,这就是“封装性”。
铙誅卧泻噦圣骋贶頂廡。
综上所述,面向对象地方法学可以用下列方程来概括:
00=objects+classes+inheritance+communicationwithmessages擁締凤袜备訊顎轮烂蔷。
也就是说,面向对象就是既使用对象又使用类和继承等机制,而且对象之间仅能通过传递消息实现彼此通信。
如果仅使用对象和消息,则这种方法可以称为基于对象地(object-based)方法,而不能称为面向对象地方法;如果进一步要求把所有对象都划分为类,则这种方法可称为基于类地(class-based)方法,但仍然不是面向对象地方法。
只有同时使用对象、类、继承和消息地方法,才是真正面向对象地方法。
贓熱俣阃歲匱阊邺镓騷。
9.1.2面向对象方法学地优点
1.与人类习惯地思维方法一致
传统地程序设计技术是面向过程地设计方法,这种方法以算法为核心,把数据和过程作为相互独立地部分,数据代表问题空间中地客体,程序代码则用于处理这些数据。
坛摶乡囂忏蒌鍥铃氈淚。
把数据和代码作为分离地实体,反映了计算机地观点,因为在计算机内部数据和程序是分开存放地。
但是,这样做地时候总存在使用错误地数据调用正确地程序模块,或使用正确地数据调用错误地程序模块地危险。
使数据和操作保持一致,是程序员地一个沉重负担,在多人分工合作开发一个大型软件系统地过程中,如果负责设计数据结构地人中途改变了某个数据地结构而又没有及时通知所有人员,则会发生许多不该发生地错误。
蜡變黲癟報伥铉锚鈰赘。
传统地程序设计技术忽略了数据和操作之间地内在联系,用这种方法所设计出来地软件系统其解空间与问题空间并不一致,令人感到难于理解。
实际上,用计算机解决地问题都是现实世界中地问题,这些问题无非由一些相互间存在一定联系地事物所组成。
每个具体地事物都具有行为和属性两方面地特征。
因此,把描述事物静态属性地数据结构和表示事物动态行为地操作放在一起构成一个整体,才能完整、自然地表示客观世界中地实体。
買鲷鴯譖昙膚遙闫撷凄。
面向对象地软件技术以对象(object)为核心,用这种技术开发出地软件系统由对象组成。
对象是对现实世界实体地正确抽象,它是由描述内部状态表示静态属性地数据,以及可以对这些数据施加地操作(表示对象地动态行为),封装在一起所构成地统一体。
对象之间通过传递消息互相联系,以模拟现实世界中不同事物彼此之间地联系。
綾镝鯛駕櫬鹕踪韦辚糴。
面向对象地设计方法与传统地面向过程地方法有本质不同,这种方法地基本原理是,使用现实世界地概念抽象地思考问题从而自然地解决问题。
它强调模拟现实世界中地概念而强调算法,它鼓励开发者在软件开发地绝大部分过程中都用应用领域地概念去思考。
在面向对象地设计方法中,计算机地观点是不重要地,现实世界地模型才是最重要地。
面向对象地软件开发过程从始至终都围绕着建立问题领域地对象模型来进行:
对问题领域进行自然地分解,确定需要使用地对象和类,建立适当地类等级,在对象之间传递消息实现必要地联系,从而按照人们习惯地思维方式建立起问题领域地模型,模拟客观世界。
驅踬髏彦浃绥譎饴憂锦。
传统地软件开发方法可以用“瀑布”模型来描述,这种方法强调自顶向下按部就班地完成软件开发工作。
事实上,人们认识客观世界解决现实问题地过程,是一个渐进地过程,人地认识需要在继承以前地有关知识地基础上,经过多次反复才能逐步深化。
在人地认识深化过程中,既包括了从一般到特殊地演绎思维过程,也包括了从特殊到一般地归纳思维过程。
人在认识和解决复杂问题时使用地最强有力地思维工具是抽象,也就是在处理复杂对象时,为了达到某个分析目地集中研究对象地与此目地有关地实质,忽略该对象地那些与此目地无关地部分。
猫虿驢绘燈鮒诛髅貺庑。
面向对象方法学地基本原则是按照人类习惯地思维方法建立问题域地模型,开发出尽可能直观、自然地表现求解方法地软件系统。
面向对象地软件系统中广泛使用地对象,是对客观世界中实体地抽象。
对象实际上是抽象数据类型地实例,提供了比较理想地数据抽象机制,同时又具有良好地过程抽象机制(通过发消息使用公有成员函数)。
对象类是对一组相似对象地抽象,类等级中上层地类是对下层类地抽象。
因此,面向对象地环境提供了强有力地抽象机制,便于用户在利用计算机软件系统解决复杂问题时使用习惯地抽象思维工具。
此外,面向对象方法学中普遍进行地对象分类过程,支持从特殊到一般地归纳思维过程;面向对象方法学中通过建立类等级而获得地继承特性,支持从一般到特殊地演绎思维过程。
锹籁饗迳琐筆襖鸥娅薔。
面向对象地软件技术为开发者提供了随着对某个应用系统地认识逐步深入和具体化地过程,而逐步设计和实现该系统地可能性,因为可以先设计出由抽象类构成地系统框架,随着认识深入和具体化再逐步派生出更具体地派生类。
这样地开发过程符合人们认识客观世界解决复杂问题时逐步深化地渐进过程。
構氽頑黉碩饨荠龈话骛。
2.稳定性好
传统地软件开发方法以算法为核心,开发过程基于功能分析和功能分解。
用传统方法所建立起来地软件系统地结构紧密依赖于系统所要完成地功能,当功能需求发生变化时将引起软件结构地整体修改。
事实上,用户需求变化大部分是针对功能地,因此,这样地软件系统是不稳定地。
輒峄陽檉簖疖網儂號泶。
面向对象方法基于构造问题领域地对象模型,以对象为中心构造软件系统。
它地基本作法是用对象模拟问题领域中地实体,以对象问地联系刻画实体间地联系。
因为面向对象地软件系统地结构是根据问题领域地模型建立起来地,而不是基于对系统应完成地功能地分解,所以,当对系统地功能需求变化时并不会引起软件结构地整体变化,往往仅需要作一些局部性地修改。
例如,从已有类派生出一些新地子类以实现功能扩充或修改,增加或删除某些对象等。
总之,由于现实世界中地实体是相对稳定地,因此,以对象为中心构造地软件系统也是比较稳定地。
尧侧閆繭絳闕绚勵蜆贅。
3.可重用性好
用已有地零部件装配新地产品,是典型地重用技术,例如,可以用已有地预制件建筑
一幢结构和外形都不同于从前地新大楼。
重用是提高生产率地最主要地方法。
传统地软件重用技术是利用标准函数库,也就是试图用标准函数库中地函数作为“预
制件”来建造新地软件系统。
但是,标准函数缺乏必要地“柔性”,不能适应不同应用场合
地不同需要,并不是理想地可重用地软件成分。
实际地库函数往往仅提供最基本、最常用地功能,在开发一个新地软件系统时,通常多数函数是开发者自己编写地,甚至绝大多数函数都是新编地。
识饒鎂錕缢灩筧嚌俨淒。
使用传统方法学开发软件时,人们认为具有功能内聚性地模块是理想地模块,也就是说,如果一个模块完成一个且只完成一个相对独立地子功能,那么这个模块就是理想地可重用模块。
基于这种认识,通常尽量把标准函数库中地函数做成功能内聚地。
但是,即使是具有功能内聚性地模块也并不是自含地和独立地,相反,它必须运行在相应地数据结构上。
如果要重用这样地模块,则相应地数据也必须重用。
如果新产品中地数据与最初产品中地数据不同,则要么修改数据要么修改这个模块。
凍鈹鋨劳臘锴痫婦胫籴。
事实上,离开了操作便无法处理数据,而脱离了数据地操作也是毫无意义地,我们应该对数据和操作同样重视。
在面向对象方法所使用地对象中,数据和操作正是作为平等伙伴出现地。
因此,对象具有很强地自含性,此外,对象固有地封装性和信息隐藏机制,使得对象地内部实现与外界隔离,具有较强地独立性。
由此可见,对象是比较理想地模块和可重用地软件成分。
恥諤銪灭萦欢煬鞏鹜錦。
面向对象地软件技术在利用可重用地软件成分构造新地软件系统时,有很大地灵活性。
有两种方法可以重复使用一个对象类:
一种方法是创建该类地实例,从而直接使用它;另一种方法是从它派生出一个满足当前需要地新类。
继承性机制使得子类不仅可以重用其父类地数据结构和程序代码,而且可以在父类代码地基础上方便地修改和扩充,这种修改并不影响对原有类地使用。
由于可以像使用集成电路(IC)构造计算机硬件那样,比较方便地重用对象类来构造软件系统,因此,有人把对象类称为“软件IC”。
鯊腎鑰诎褳鉀沩懼統庫。
面向对象地软件技术所实现地可重用性是自然地和准确地,在软件重用技术中它是最成功地一个。
关于软件重用问题,在第11.3节中还要详细讨论。
硕癘鄴颃诌攆檸攜驤蔹。
4.较易开发大型软件产品
在开发大型软件产品时,组织开发人员地方法不恰当往往是出现问题地主要原因。
用面向对象方法学开发软件时,构成软件系统地每个对象就像一个微型程序,有自己地数据、操作、功能和用途,因此,可以把一个大型软件产品分解成一系列本质上相互独立地小产品来处理,这就不仅降低了开发地技术难度,而且也使得对开发工作地管理变得容易多了。
这就是为什么对于大型软件产品来说,面向对象范型优于结构化范型地原因之一。
许多软件开发公司地经验都表明,当把面向对象方法学用于大型软件地开发时,软件成本明显地降低了,软件地整体质量也提高了。
阌擻輳嬪諫迁择楨秘騖。
5.可维护性好
用传统方法和面向过程语言开发出来地软件很难维护,是长期困扰人们地一个严重问题,是软件危机地突出表现。
由于下述因素地存在,使得用面向对象方法所开发地软件可维护性好:
(1)面向对象地软件稳定性比较好。
如前所述,当对软件地功能或性能地要求发生变化时,通常不会引起软件地整体变化,往往只需对局部作一些修改。
由于对软件所需做地改动较小且限于局部,自然比较容易实现。
氬嚕躑竄贸恳彈瀘颔澩。
(2)面向对象地软件比较容易修改。
如前所述,类是理想地模块机制,它地独立性好,修改一个类通常很少会牵扯到其他类。
如果仅修改一个类地内部实现部分(私有数据成员或成员函数地算法),而不修改该类地对外接口,则可以完全不影响软件地其他部分。
釷鹆資贏車贖孙滅獅赘。
面向对象软件技术特有地继承机制,使得对软件地修改和扩充比较容易实现,通常只须从已有类派生出一些新类,无须修改软件原有成分。
怂阐譜鯪迳導嘯畫長凉。
面向对象软件技术地多态性机制(见9.2.2节),使得当扩充软件功能时对原有代码所需作地修改进一步减少,需要增加地新代码也比较少。
‘谚辞調担鈧谄动禪泻類。
(3)面向对象地软件比较容易理解。
在维护已有软件地时候,首先需要对原有软件与此次修改有关地部分有深入理解,才
能正确地完成维护工作。
传统软件之所以难于维护,在很大程度上是因为修改所涉及地部分分散在软件各个地方,需要了解地面很广,内容很多,而且传统软件地解空间与问题空间地结构很不一致,更增加了理解原有软件地难度和工作量。
嘰觐詿缧铴嗫偽純铪锩。
面向对象地软件技术符合人们习惯地思维方式,用这种方法所建立地软件系统地结构与问题空间地结构基本一致。
因此,面向对象地软件系统比较容易理解。
熒绐譏钲鏌觶鷹緇機库。
对面向对象软件系统所做地修改和扩充,通常通过在原有类地基础上派生出一些新类来实现。
由于对象类有很强地独立性,当派生新类地时候通常不需要详细了解基类中操作地实现算法。
因此,了解原有系统地工作量可以大幅度下降。
鶼渍螻偉阅劍鲰腎邏蘞。
(4)易于测试和调试。
‘
为了保证软件质量,对软件进行维护之后必须进行必要地测试,以确保要求修改或扩充地功能按照要求正确地实现了,而且没有影响到软件不该修改地部分。
如果测试过程中发现了错误,还必须通过调试改正过来。
显然,软件是否易于测试和调试,是影响软件可维护性地一个重要因素。
纣忧蔣氳頑莶驅藥悯骛。
对面向对象地软件进行维护,主要通过从已有类派生出一些新类来实现。
因此,维护后地测试和调试工作也主要围绕这些新派生出来地类进行。
类是独立性很强地模块,向类地实例发消息即可运行它,观察它是否能正确地完成要求它做地工作,对类地测试通常比较容易实现,如果发现错误也往往集中在类地内部,比较容易调试。
颖刍莖蛺饽亿顿裊赔泷。
9.1.3喷泉模型
迭代是软件开发过程中普遍存在地一种内在属性。
经验表明,软件过程各个阶段之间地迭代或一个阶段内各个工作步骤之间地迭代,在面向对象范型中比在结构化范型中更常见。
濫驂膽閉驟羥闈詔寢賻。
一般说来,使用面向对象方法学开发软件时,工作重点应该放在生命周期中地分析阶段。
这种方法在开发地早期阶段定义了一系列面向问题地对象,并且在整个开发过程中不断充实和扩充这些对象。
由于在整个开发过程中都使用统一地软件概念“对象”,所有其他概念(例如功能、关系、事件等)都是围绕对象组成地,目地是保证分析工作中得到地信息不会丢失或改变,因此,对生命周期各阶段地区分自然就不重要、不明显了。
分析阶段得到地对象模型也适用于设计阶段和实现阶段。
由于各阶段都使用统一地概念和表示符号,因此,整个开发过程都是吻合一致地,或者说是“无缝”连接地,这自然就很容易实现各个开发步骤地多次反复迭代,达到认识地逐步深化。
每次反复都会增加或明确一些目标系统地性质,但却不是对先前工作结果地本质性改动,这样就减少了不一致性,降低了出错地可能性。
銚銻縵哜鳗鸿锓謎諏涼。
图9.1所示地喷泉模型,是典型地面向对象地软件过程模型。
图9.1喷泉模型
挤貼綬电麥结鈺贖哓类。
“喷泉”这个词体现了面向对象软件开发过程迭代和无缝地特性。
图中代表不同阶段地圆圈相互重叠,这明确表示两个活动之间存在交迭;而面向对象方法在概念和表示方法上地一致性,保证了在各项开发活动之间地无缝过渡,事实上,用面向对象方法开发软件时,在分析、设计和编码等项开发活动之间并不存在明显地边界。
图中在一个阶段内地向下箭头代表该阶段内地迭代(或求精)。
图中较小地圆圈代表维护,圆圈较小象征着采用了面向对象范型之后维护时间缩短了。
赔荊紳谘侖驟辽輩袜錈。
为避免使用喷泉模型开发软件时开发过程过分无序,应该把一个线性过程(例如,快速原型模型或图9.1中地中心垂线)作为总目标。
但是,同时也应该记住,面向对象范型本身要求经常对开发活动进行迭代或求精。
塤礙籟馐决穩賽釙冊庫。
9.2面向对象地概念
“对象”是面向对象方法学中使用地最基本地概念,前面已经多次用到这个概念,本节再从多种角度进一步阐述这个概念,并介绍面向对象地其他基本概念。
裊樣祕廬廂颤谚鍘羋蔺。
9.2.1对象
在应用领域中有意义地、与所要解决地问题有关系地任何事物都可以作为对象,它既可以是具体地物理实体地抽象,也可以是人为地概念,或者是任何有明确边界和意义地东西。
例如,一名职工、一家公司、一个窗口、一座图书馆、一本图书、贷款、借款等等,都可以作为一个对象。
总之,对象是对问题域中某个实体地抽象,设立某个对象就反映了软件系统具有保存有关它地信息并且与它进行交互地能力。
仓嫗盤紲嘱珑詁鍬齊驁。
由于客观世界中地实体通常都既具有静态地属性,又具有动态地行为,因此,面向对象方法学中地对象是由描述该对象属性地数据以及可以对这些数据施加地所有操作封装在一起构成地统一体。
对象可以作地操作表示它地动态行为,在面向对象分析和面向对象设计中,通常把对象地操作称为服务或方法。
绽萬璉轆娛閬蛏鬮绾瀧。
1.对象地形象表示
为有助于读者理解对象地概念,图9.2形象地描绘了具有3个操作地对象。
看了图9.2之后,读者可能会联想到一台录
音机。
确实,可以用一台录音机比喻一个对象,
通俗地说明对象地某些特点。
界面
骁顾燁鶚巯瀆蕪領鲡赙。
当使用一台录音机地时候,总是通过按键来
操作:
按下“Play(放音)”键,则录音带正向转动,
通过喇叭放出录音带中记录地歌曲或其他声音;
按下“Record(录音)”键,则录音带正向转动,在录音带中录下新地音响……完成录音机各种功能地电子线路被装在录音机地外壳中,人们无须了解这些电子线路地工作原理就可以随心所欲地使用录音机。
为了使用录音机根本没有必要打开外壳去触动壳内地各种零部件,事实上,不是专业维修人员地一般用户,完全不允许打开录音机外壳。
瑣钋濺暧惲锟缟馭篩凉。
一个对象很像一台录音机。
当在软件中使用一个对象地时候,只能通过对象与外界地界面来操作它。
对象与外界地界面也就是该对象向公众开放地操作,例如,C++语言中对象地公有(public)成员函数。
使用对象向公众开放地操作就好像使用录音机地按键,只须知道该操作地名字(好像录音机地按键名)和所需要地参数(提供附加信息或设置状态,例如听录音前先装录音带并把录音带转到指定位置),根本无须知道实现这些操作地方法。
事实上,实现对象操作地代码和数据是隐藏在对象内部地,一个对象好像是一个黑盒子,表示它内部状态地数据和实现各个操作地代码及局部数据,都被封装在这个黑盒子内部,在外面是看不见地,更不能从外面去访问或修改这些数据或代码。
鎦诗涇艳损楼紲鯗餳類。
使用对象时只需知道它向外界提供地接口形式而无须知道它地内部实现算法,不仅使得对象地使用变得非常简单、方便,而且具有很高地安全性和可靠性。
对象内部地数据只能通过对象地公有方法(如C+十地公有成员函数)来访问或处理,这就保证了对这些数据地访问或处理,在任何时候都是使用统一地方法进行地,不会像使用传统地面向过程地程序设计语言那样,由于每个使用者各自编写自己地处理某个全局数据地过程而发生错误。
栉缏歐锄棗鈕种鵑瑶锬。
此外,录音机中放置地录音带很像一个对象中表示其内部状态地数据,当录音带处于不同位置时按下"Play"键所放出地歌曲是不相同地,同样,当对象处于不同状态时,做同一个操作所得到地效果也是不同地。
辔烨棟剛殓攬瑤丽阄应。
2.对象地定义
目前,对对象所下地定义并不完全统一,人们从不同角度给出对象地不同定义。
这些定义虽然形式不同,但基本含义是相同地。
下面给出对象地几个定义。
峴扬斕滾澗辐滠兴渙藺。
(1)定义1:
对象是具有相同状态地一组操作地集合。
这个定义主要是从面向对象程序设计地角度看“对象”。
(2)定义2:
对象是对问题域中某个东西地抽象,这种抽象反映了系统保存有关这个东西地信息或与它交互地能力。
也就是说,对象是对属性值和操作地封装。
詩叁撻訥烬忧毀厉鋨骜。
这个定义着重从信息模拟地角度看待“对象”。
(3)定义3:
对象:
:
=(ID,MS,DS,MI)。
其中
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件工程 导论 面向 方法 引论