Sun
您当前的位置: www.7003.com > www.600.cc >

若是是面向对象的设想思惟来处理问题

浏览次数: | 时间:2019-11-18

  多沉承继,JAVA、VB、NET、Objective-C均仅支撑单承继,留意正在C++多沉承继时,需小心二义性。

  每个对象都有本身独一的标识,通过这种标识,可找到响应的对象。正在对象的整个生命期中,它的标识都不改变,分歧的对象不克不及有不异的标识。

  Booch最先描述了面向对象的软件开辟方式的根本问题,指出头具名向对象开辟是一种底子分歧于保守的功能分化的设想方式。面向对象的软件分化更接近人对客不雅事务的理解,而功能分化只通干预干与题空间的转换来获得。

  利用面向对象分类的过程中,易受人的客不雅要素影响。好比特征空间的建立、特征系统的成立,正在分类的后处置中也同样涉及了人机交互批改。因而,面向对象的方式虽然智能,但若是能尽量削减人工的参取,博狗体育正网可能会提拔该方式的智能化程度。

  封拆是指将现实世界中存正在的某个客体的属性取行为绑定正在一路,并放置正在一个逻辑单位内。该逻辑单位担任将所描述的属性躲藏起来,对客体内部下性的所有拜候只能通过供给的用户接话柄现。如许做既能够实现对客体属性的感化,又能够提高软件系统的可性。只需用户接口不改变,任何封拆体内部的改变都不会对软件系统的其他部门形成影响。布局化设想方式没有做到客体的全体封拆,只是封拆了各个功能模块,而每个功能模块能够随便地对没有能力客体属性实施操做,而且因为描述属性的数据取行为被朋分开来,所以一旦某个客体属性的表达体例发生了变化,或某个行为结果发生了改变,就有可能对整个系统发生影响。

  动静传送:对象之间需要彼此沟通,沟通的路子就是对象之间收发消息。动静内容包罗领受动静的对象的标识,需要挪用的函数的标识,以及需要的消息。动静传送的概念使得对现实世界的描述更容易。

  使用系统的实现是正在所有的类都被实现之后的事。实现一个系统是一个比用过程性方式更简单、更简短的过程。有些实例将正在其他类的初始化过程中利用。而其余的则必需用某种从过程显式地加以申明,或者当做系统最高层的类的暗示的一部门。

  方式是指对象可以或许进行的操做,方式同时还有别的一个名称,叫做函数。方式是类中的定义函数,其具体的感化就是对对象进行描述操做。

  采用面向对象方式开辟软件的根基目标和次要长处是通过沉用提高软件的出产率。因而,该当优先选用可以或许最完美、最精确地表达问题域语义的面向对象言语。

  能够较着地看出,面向对象是以功能来划分问题,而不是步调。同样是绘制棋局,如许的行为正在面向过程的设想平分散正在了多个步调中,很可能呈现分歧的绘制版本,由于凡是设想人员会考虑到现实环境进行各类各样的简化。而面向对象的设想中,画图只可能正在棋盘对象中呈现,从而了画图的同一。

  笼统是人类处理问题的根基法宝。优良的笼统策略能够节制问题的复杂程度,加强系统的通用性和可扩展性笼统次要包罗过程笼统和数据笼统。布局化设想方式使用的是过程笼统。所谓过程笼统是将问题域中具有明白功能定义的操做抽取出来,并将其做为一个实体对待。这种笼统级别对于软件系统布局的设想显得有些,而且不变性差,导致很难精确无误地设想出系统的每一个操做环节。一旦某个客体属性的暗示体例发生了变化,就有可能牵扯到已有系统的良多部门。而数据笼统是较过程笼统更高级此外笼统体例,将描述客体的属性和行为绑定正在一路,实现同一的笼统,从而达到对现实世界客体的线.封拆体

  上述弱点人们寻求一种新的法式设想方式,以顺应现代社会对软件开辟的更高要求,面向对象由此发生。

  可沉用性标识着软件产物的可复用能力,是权衡一个软件产物成功取否的主要标记。当今的软件开辟行业,人们越来越逃求开辟更多的、更有通用性的可沉用构件,从而使软件开辟过程完全改善,即从过去的语句级编写成长到现正在的构件拆卸,从而提高软件开辟效率,鞭策使用范畴敏捷扩展。然而,布局化法式设想方式的根基单元是模块,每个模块只是实现特定功能的过程描述,因而,它的可沉用单元只能是模块。例如,正在C言语编写法式时利用大量的尺度函数。但对于今天的软件开辟来说,如许的沉用力度显得微不脚道,并且当参取操做的某些数据类型发生变化时,就不成以或许再利用那些函数了。因而,巴望更鼎力度的可沉用构件是现在使用范畴对软件开辟提出的新需求。

  保守的布局化设想方式的根基点是面向过程,系统被分化成若干个过程。而面向对象的方式是采用构制模子的概念,正在系统的开辟过程中,各个步调的配合的方针是建制一个问题域的模子。正在面向对象的设想中,初始元素是对象,然后将具有配合特征的对象归纳成类,组织类之间的品级关系,构制类库。正在使用时,正在类库当选择响应的类。

  面向对象方式的提取雷同决策树的构想,从简到繁,先剔除其他无关消息,再颠末多次筛选找出有用的地物类别,实现地物的分层提取。颠末多标准朋分后,需要对朋分后的单个对象进行划分,选择合适的参数或者法则将对象取其他对象区分隔来,以实现各类地物的分类。

  能够拿糊口中的实例来理解面向过程取面向对象,例如五子棋,面向过程的设想思就是起首阐发问题的步调:1、起头,2、黑子先走,3、绘制画面,4、判断胜负,5、轮到白子,6、绘制画面,7、判断胜负,8、前往步调2,9、输出最初成果。把每个步调用分歧的方式来实现。

  Stanley B.Lippman / Josee Lajoie / Barbara E.Moo

  面向对象编程(Object Oriented Programming,OOP,面向对象法式设想)的次要思惟是把形成问题的各个事务分化成各个对象,成立对象的目标不是为了完成一个步调,而是为了描叙一个事物正在整个处理问题的步调中的行为。面向对象法式设想中的概念次要包罗:对象、类、数据笼统、承继、动态绑定、数据封拆、多态性、动静传送。通过这些概念面向对象的思惟获得了具体的表现。

  承继性是子类从动共享父类数据布局和方式的机制,这是类之间的一种关系。正在定义和实现一个类的时候,能够正在一个曾经存正在的类的根本之上来进行,把这个曾经存正在的类所定义的内容做为本人的内容,并插手若干新的内容。

  晚期的计较机编程是基于面向过程的方式,例照实现算术运算1+1+2 = 4,通过设想一个算法就能够处理其时的问题。跟着计较机手艺的不竭提高,计较机被用于处理越来越复杂的问题。一切事物皆对象,通过面向对象的体例,将现实世界的事物笼统成对象,现实世界中的关系笼统成类、承继,帮帮人们实现对现实世界的笼统取数字建模。通过面向对象的方式,更利于用人理解的体例对复杂系统进行阐发、设想取编程。同时,面向对象能无效提高编程的效率,通过封拆手艺,动静机制能够像搭积木的一样快速开辟出一个全新的系统。面向对象是指一种法式设想范型,同时也是一种法式开辟的方式。对象指的是类的调集。它将对象做为法式的根基单位,将法式和此中,以提高软件的沉用性、矫捷性和扩展性。

  正在软件开辟中,类的承继性使所成立的软件具有性、可扩充性,这是消息组织取分类的行之无效的方式,它简化了对象、类的建立工做量,添加了代码的可沉用性。

  正在开辟过程中,类的实现是焦点问题。正在用面向对象气概所写的系统中,所有的数据都被封拆正在类的实例中。而整个法式则被封拆正在一个更高级的类中。正在利用既存部件的面向对象系统中,能够只破费少量时间和工做量来实现软件。只需添加类的实例,开辟少量的新类和实现各个对象之间互相通信的操做,就能成立需要的软件。

  面向对象的方式就是操纵笼统、封拆等机制,借帮于对象、类、承继、动静传送等概念进行软件系统构制的软件开辟方式。

  采用承继性,供给了类的规范的品级布局。通过类的承继关系,使公共的特机能够共享,提高了软件的沉用性。

  对象的寄义是指具体的某一个事物,即正在现实糊口中可以或许看得见摸得着的事物。正在面向对象法式设想中,对象所指的是计较机系统中的某一个成分。正在面向对象法式设想中,对象包含两个寄义,此中一个是数据,别的一个是动做。对象则是数据和动做的连系体。对象不只可以或许进行操做,同时还可以或许及时记实下操做成果。

  该方式是一种新兴的面向对象的开辟方式,开辟工做的根本是对实正在世界的对象建模,然后环绕这些对象利用阐发模子来进行于言语的设想,面向对象的建模和设想推进了对需求的理解,有益于开辟得更清晰、更容易的软件系统。该方式为大大都使用范畴的软件开辟供给了一种现实的、高效的,勤奋寻求一种问题求解的现实方式。

  封拆是将数据和代码到一路,对象的某些数据和代码能够是私有的,不克不及被拜候,以此实现对数据和代码分歧级此外拜候权限。防止了法式彼此依赖性而带来的变更影响,面向对象的封拆比保守言语的封拆更为清晰、更为无力。无效实现了两个方针:对数据和行为的包拆和消息躲藏。

  正在现实世界中存正在的客体是问题域中的配角,所谓客体是指客不雅存正在的对象实体和客不雅笼统的概念,他是人类察看问题和处理问题的次要方针。例如,对于一个学校学生办理系统来说,无论是简单仍是复杂,一直是环绕学生和教员这两个客体实施。正在天然界,每个客体都具有一些属性和行为,例如学生有学号、姓名、性别等属性,以及上课、测验、做尝试等行为。因而,每个个别都能够用属性和行为来描述。

  面向对象的三大特点(封拆,承继,多态)缺一不成。凡是“基于对象”是利用对象,可是无法操纵现有的对象模板发生新的对象类型,继而发生新的对象,也就是说“基于对象”没有承继的特点。而“多态”暗示为父类类型的子类对象实例,没有了承继的概念也就无从谈论“多态”。良多风行手艺都是基于对象的,它们利用一些封拆好的对象,挪用对象的方式,设置对象的属性。可是它们无法让法式员派生新对象类型。他们只能利用现有对象的方式和属性。所以当你判断一个新的手艺能否是面向对象的时候,凡是能够利用后两个特征来加以判断。“面向对象”和“基于对象”都实现了“封拆”的概念,可是面向对象实现了“承继和多态”,而“基于对象”没有实现这些,简直很饶口。

  动态绑定指的是将一个过程挪用取响应代码链接起来的行为。动态绑定是指取给定的过程挪用相联系关系的代码只要正在运转期才可知的一种绑定,它是多态实现的具体形式。

  面向对象是相对于面向过程来讲的,面向对象方式,把相关的数据和方式组织为一个全体来对待,从更高的条理来进行系统建模,更切近事物的天然运转模式。

  通类察看问题的视角是这些客体,客体的属性反映客体正在某一时辰的形态,客体的行为反映客体能处置的操做。这些操做附正在客体之上并能用来设置、改变和获取客体的形态。任何问题域都有一系列的客体,因而处理问题的根基体例是让这些客体之间彼此驱动、彼此感化,最终使每个客体按照设想者的志愿改变其属性形态。

  OMT方式是1991年由James Rumbaugh等5人提出来的,其典范著做为“面向对象的建模取设想”。

  面向过程就是阐发出处理问题所需要的步调,然后用函数把这些步调一步一步实现,利用的时候一个一个顺次挪用就能够了;面向对象是把形成问题事务分化成各个对象,成立对象的目标不是为了完成一个步调,而是为了描叙某个事物正在整个处理问题的步调中的行为。

  软件工程范畴正在1995年~1997年取得了史无前例的进展,其跨越软件工程范畴过去15年的成绩总和,此中最主要的之一就是同一建模言语(UML)的呈现。UML将是面向对象手艺范畴内占从导地位的尺度建模言语。

  声明:百科词条人人可编纂,词条建立和点窜均免费,毫不存正在及代办署理商付费代编,请勿上当。详情

  笼统性是指将具有分歧的数据布局(属性)和行为(操做)的对象笼统成类。一个类就是如许一种笼统,它反映了取使用相关的主要性质,而忽略其他一些无关内容。任何类的划分都是客不雅的,但必需取具体的使用相关。

  面向对象开辟方式的研究已日趋成熟,国际上已有不少面向对象产物呈现。面向对象开辟方式有Coad方式、Booch方式和OMT方式等。

  面向对象(Object Oriented)是软件开辟方式。面向对象的概念和使用已超越了法式设想和软件开辟,扩展到如数据库系统、交互式界面、使用布局、使用平台、分布式系统收集办理布局、CAD手艺、人工智能等范畴。面向对象是一种对现实世界理解和笼统的方式,是计较机编程手艺成长到必然阶段后的产品。

  多态是指分歧事物具有分歧表示形式的能力。多态机制使具有分歧内部布局的对象能够共享不异的外部接口,通过这种体例削减代码的复杂度。一个接口,多种体例。

  面向对象的思维更合适人认识和思虑问题的体例,面向对象的概念和使用曾经超越了软件开辟和法式设想,扩展到多个的范畴,此中一个使用的分支就是面向对象的学问暗示法。这种暗示法把构成客不雅世界的实体笼统为数据和对数据的操做,并利用类把数据和对数据的操做封拆成为一个不成朋分、互相依存的全体。面向对象暗示的学问更接近客不雅世界,暗示方案愈加天然,易于理解。面向对象手艺优良的模块性,面向对象的系统优良的可性、可扩充性和可沉用性等特点,正合适人们组织和办理学问库的需求。

  正在C++和C中有一个main()函数,能够利用这个过程来申明形成系统次要对象的那些类的实例。

  承继简单地说就是一种条理模子,这种条理模子可以或许被沉用。条理布局的上层具有通用性,可是基层布局则具有特殊性。正在承继的过程中类则能够从最顶层的部门承继一些方式和变量。类除了能够承继以外同时还可以或许进行点窜或者添加。通过如许的体例可以或许无效提高工做效率。正在这里举一个例子,当类X承继了类Y后,此时的类X则是一个派生类,而类Y属于一个基类。

  Coad方式是1989年Coad和Yourdon提出的面向对象开辟方式。该方式的次要长处是通过多年来大系统开辟的经验取面向对象概念的无机连系,正在对象、布局、属性和操做的认定方面,提出了一套系统的准绳。该方式完成了从需求角度进一步进行类和类条理布局的认定。虽然Coad方式没有引入类和类条理布局的术语,但现实上曾经正在分类布局、属性、操做、动静联系关系等概念中表现了类和类条理布局的特征。

  面向对象是正在布局化设想方式呈现良多问题的环境下应运而生的。布局化设想方式求解问题的根基策略是从功能的角度审视问题域。它将使用法式当作实现某些特定使命的功能模块,此中子过程是实现某项具体操做的底层功能模块。正在每个功能模块中,用数据布局描述待处置数据的组织形式,用算法描述具体的操做过程。面临日趋复杂的使用系统,这种开辟思鄙人面几个方面逐步了一些弱点。

  正在选择编程言语时,该当考虑的其他要素还有:对用户进修面向对象阐发、设想和编码手艺所能供给的培训操做;正在利用这个面向对象言语期间能供给的手艺支撑;能供给给开辟人员利用的开辟东西、开辟平台,对机械机能和内存的需求,集成已有软件的容易程度。

  面向对象的思惟曾经涉及到软件开辟的各个方面。如,面向对象的阐发(OOA,Object Oriented Analysis),面向对象的设想(OOD,Object Oriented Design)、以及我们经常说的面向对象的编程实现(OOP,Object Oriented Programming)。

  面临对象法式设想是尽可能地正在模仿人类的思维。通过如许的体例可以或许闪开发的软件愈加合适人类的认知,人们利用起来也可以或许愈加随手。而且通过使用软件可以或许切实地处理现实糊口中的问题。面向对象法式设想使得描述问题的问题空间和问题的处理方式空间组合正在一路,而且尽可能地连结分歧。可以或许将客不雅世界中的笼统问题为具体的问题对象。

  UML不只同一了Booch方式、OMT方式、OOSE方式的暗示方式,并且对其做了进一步的成长,最终同一为公共接管的尺度建模言语。UML是一种定义优良、易于表达、功能强大且遍及合用的建模言语。它融入了软件工程范畴的新思惟、新方式和新手艺。它的感化域不限于支撑面向对象的阐发取设想,还支撑从需求阐发起头的软件开辟全过程。

  若是是面向对象的设想思惟来处理问题。面向对象的设想则是从别的的思来处理问题。整个五子棋能够分为1、口角两边,这两方的行为是一模一样的,2、棋盘系统,担任绘制画面,3、法则系统,担任鉴定诸如犯规、胜负等。第一类对象(玩家对象)担任接管用户输入,并奉告第二类对象(棋盘对象)棋子结构的变化,棋盘对象领受到了棋子的变化就要担任正在屏幕显示出这种变化,同时操纵第三类对象(法则系统)来对棋局进行鉴定。

  多态性是指不异的操做或函数、过程可感化于多品种型的对象上并获得分歧的成果。分歧的对象,收到统一动静能够发生分歧的成果,这种现象称为多态性。

  布局化设想方式所采用的设想思不是将客体做为一个全体,而是将依靠于客体之上的行为抽取出来,以功能为方针来设想构制使用系统。这种做法导致正在进行法式设想的时候,不得不将客体所形成的现实世界映照到由功能模块构成的解空间中,这种变换过程,不只添加了法式设想的复杂程度,并且了人们察看问题和处理问题的根基思。别的,再细心思虑会发觉,正在任何一个问题域中,客体是不变的,而行为是不不变的。例如,不管是国度藏书楼,仍是学校藏书楼,仍是国际藏书楼,城市含有图书这个客体,但办理图书的方式可能是判然不同的。布局化设想方式将审视问题的视角定位于不不变的操做之上,并将描述客体的属性和行为分隔,使得使用法式的日后和扩展相当坚苦,以至一个细小的变更,城市波及到整个系统。面临问题规模的日趋扩大、的日趋复杂、需求变化的日趋加速,将操纵计较机处理问题的根基方式同一到人类处理问题的习惯方式之上,完全改变软件设想方式取人类处理问题的常规体例扭曲的现象迫正在眉睫,这是提出头具名向对象的首要缘由。

  面向对象分类提打消息的方式较保守分类方式更具有劣势,前者充实考虑高分辩率影像的各品种型的特征,包罗光谱、外形和纹理等空间特征。尔后者是通过选择锻炼样本,软件从动成立判别函数对其他未识此外样本进行判断。比拟而言,面向对象方式正在这方面更具有针对性,方针更明白,针对的就是朋分后的图斑,因而分类的成果精度更高。但若何使用好面向对象的方式,需要研究者控制其相关的软件操做和机理,好比朋分标准的设定、特征空间的选择。