计算机专业毕业设计论文外文文献中英文翻译Object.docx

上传人:b****6 文档编号:8622039 上传时间:2023-02-01 格式:DOCX 页数:9 大小:26.70KB
下载 相关 举报
计算机专业毕业设计论文外文文献中英文翻译Object.docx_第1页
第1页 / 共9页
计算机专业毕业设计论文外文文献中英文翻译Object.docx_第2页
第2页 / 共9页
计算机专业毕业设计论文外文文献中英文翻译Object.docx_第3页
第3页 / 共9页
计算机专业毕业设计论文外文文献中英文翻译Object.docx_第4页
第4页 / 共9页
计算机专业毕业设计论文外文文献中英文翻译Object.docx_第5页
第5页 / 共9页
点击查看更多>>
下载资源
资源描述

计算机专业毕业设计论文外文文献中英文翻译Object.docx

《计算机专业毕业设计论文外文文献中英文翻译Object.docx》由会员分享,可在线阅读,更多相关《计算机专业毕业设计论文外文文献中英文翻译Object.docx(9页珍藏版)》请在冰豆网上搜索。

计算机专业毕业设计论文外文文献中英文翻译Object.docx

计算机专业毕业设计论文外文文献中英文翻译Object

外文资料

Objectlandscapesandlifetimes

Technically,OOPisjustaboutabstractdatatyping,inheritance,andpolymorphism,butotherissuescanbeatleastasimportant。

Theremainderofthissectionwillcovertheseissues。

Oneofthemostimportantfactorsisthewayobjectsarecreatedanddestroyed。

Whereisthedataforanobjectandhowisthelifetimeoftheobjectcontrolled?

Therearedifferentphilosophiesatworkhere。

C++takestheapproachthatcontrolofefficiencyisthemostimportantissue,soitgivestheprogrammerachoice.Formaximumrun—timespeed,thestorageandlifetimecanbedeterminedwhiletheprogramisbeingwritten,byplacingtheobjectsonthestack(thesearesometimescalledautomaticorscopedvariables)orinthestaticstoragearea。

Thisplacesapriorityonthespeedofstorageallocationandrelease,andcontrolofthesecanbeveryvaluableinsomesituations。

However,yousacrificeflexibilitybecauseyoumustknowtheexactquantity,lifetime,andtypeofobjectswhileyou’rewritingtheprogram.Ifyouaretryingtosolveamoregeneralproblemsuchascomputer-aideddesign,warehousemanagement,orair-trafficcontrol,thisistoorestrictive.

Thesecondapproachistocreateobjectsdynamicallyinapoolofmemorycalledtheheap。

Inthisapproach,youdon'tknowuntilrun—timehowmanyobjectsyouneed,whattheirlifetimeis,orwhattheirexacttypeis.Thosearedeterminedatthespurofthemomentwhiletheprogramisrunning.Ifyouneedanewobject,yousimplymakeitontheheapatthepointthatyouneedit。

Becausethestorageismanageddynamically,atrun-time,theamountoftimerequiredtoallocatestorageontheheapissignificantlylongerthanthetimetocreatestorageonthestack.(Creatingstorageonthestackisoftenasingleassemblyinstructiontomovethestackpointerdown,andanothertomoveitbackup.)Thedynamicapproachmakesthegenerallylogicalassumptionthatobjectstendtobecomplicated,sotheextraoverheadoffindingstorageandreleasingthatstoragewillnothaveanimportantimpactonthecreationofanobject.Inaddition,thegreaterflexibilityisessentialtosolvethegeneralprogrammingproblem。

Javausesthesecondapproach,exclusively].Everytimeyouwanttocreateanobject,youusethenewkeywordtobuildadynamicinstanceofthatobject.

There’sanotherissue,however,andthat’sthelifetimeofanobject。

Withlanguagesthatallowobjectstobecreatedonthestack,thecompilerdetermineshowlongtheobjectlastsandcanautomaticallydestroyit.However,ifyoucreateitontheheapthecompilerhasnoknowledgeofitslifetime。

InalanguagelikeC++,youmustdetermineprogrammaticallywhentodestroytheobject,whichcanleadtomemoryleaksifyoudon’tdoitcorrectly(andthisisacommonprobleminC++programs).Javaprovidesafeaturecalledagarbagecollectorthatautomaticallydiscoverswhenanobjectisnolongerinuseanddestroysit。

Agarbagecollectorismuchmoreconvenientbecauseitreducesthenumberofissuesthatyoumusttrackandthecodeyoumustwrite。

Moreimportant,thegarbagecollectorprovidesamuchhigherlevelofinsuranceagainsttheinsidiousproblemofmemoryleaks(whichhasbroughtmanyaC++projecttoitsknees)。

Therestofthissectionlooksatadditionalfactorsconcerningobjectlifetimesandlandscapes。

1Collectionsanditerators

Ifyoudon’tknowhowmanyobjectsyou’regoingtoneedtosolveaparticularproblem,orhowlongtheywilllast,youalsodon'tknowhowtostorethoseobjects。

Howcanyouknowhowmuchspacetocreateforthoseobjects?

Youcan’t,sincethatinformationisn’tknownuntilrun-time.c:

\iknow\docshare\data\cur_work\mailto:

*****************?

Subject=[TIJ3]Chap01_179

Thesolutiontomostproblemsinobject-orienteddesignseemsflippant:

youcreateanothertypeofobject.Thenewtypeofobjectthatsolvesthisparticularproblemholdsreferencestootherobjects。

Ofcourse,youcandothesamethingwithanarray,whichisavailableinmostlanguages.Butthere’smore。

Thisnewobject,generallycalledacontainer(alsocalledacollection,buttheJavalibraryusesthatterminadifferentsensesothisbookwilluse“container”),willexpanditselfwhenevernecessarytoaccommodateeverythingyouplaceinsideit.Soyoudon’tneedtoknowhowmanyobjectsyou'regoingtoholdinacontainer.Justcreateacontainerobjectandletittakecareofthedetails.

Fortunately,agoodOOPlanguagecomeswithasetofcontainersaspartofthepackage.InC++,it’spartoftheStandardC++LibraryandissometimescalledtheStandardTemplateLibrary(STL)。

ObjectPascalhascontainersinitsVisualComponentLibrary(VCL).Smalltalkhasaverycompletesetofcontainers。

Javaalsohascontainersinitsstandardlibrary.Insomelibraries,agenericcontainerisconsideredgoodenoughforallneeds,andinothers(Java,forexample)thelibraryhasdifferenttypesofcontainersfordifferentneeds:

avector(calledanArrayListinJava)forconsistentaccesstoallelements,andalinkedlistforconsistentinsertionatallelements,forexample,soyoucanchoosetheparticulartypethatfitsyourneeds.Containerlibrariesmayalsoincludesets,queues,hashtables,trees,stacks,etc.

Allcontainershavesomewaytoputthingsinandgetthingsout;thereareusuallyfunctionstoaddelementstoacontainer,andotherstofetchthoseelementsbackout。

Butfetchingelementscanbemoreproblematic,becauseasingle-selectionfunctionisrestrictive.Whatifyouwanttomanipulateorcompareasetofelementsinthecontainerinsteadofjustone?

c:

\iknow\docshare\data\cur_work\mailto:

TIJ3@MindV?

Subject=[TIJ3%5dChap01_182

Thesolutionisaniterator,whichisanobjectwhosejobistoselecttheelementswithinacontainerandpresentthemtotheuseroftheiterator.Asaclass,italsoprovidesalevelofabstraction。

Thisabstractioncanbeusedtoseparatethedetailsofthecontainerfromthecodethat’saccessingthatcontainer.Thecontainer,viatheiterator,isabstractedtobesimplyasequence.Theiteratorallowsyoutotraversethatsequencewithoutworryingabouttheunderlyingstructure—thatis,whetherit’sanArrayList,aLinkedList,aStack,orsomethingelse.Thisgivesyoutheflexibilitytoeasilychangetheunderlyingdatastructurewithoutdisturbingthecodeinyourprogram。

Javabegan(inversion1。

0and1.1)withastandarditerator,calledEnumeration,forallofitscontainerclasses.Java2hasaddedamuchmorecompletecontainerlibrarythatcontainsaniteratorcalledIteratorthatdoesmorethantheolderEnumeration.

Fromadesignstandpoint,allyoureallywantisasequencethatcanbemanipulatedtosolveyourproblem。

Ifasingletypeofsequencesatisfiedallofyourneeds,there’dbenoreasontohavedifferentkinds.Therearetworeasonsthatyouneedachoiceofcontainers.First,containersprovidedifferenttypesofinterfacesandexternalbehavior。

Astackhasadifferentinterfaceandbehaviorthanthatofaqueue,whichisdifferentfromthatofasetoralist。

Oneofthesemightprovideamoreflexiblesolutiontoyourproblemthantheother.Second,differentcontainershavedifferentefficienciesforcertainoperations。

ThebestexampleisanArrayListandaLinkedList.Botharesimplesequencesthatcanhaveidenticalinterfacesandexternalbehaviors.Butcertainoperationscanhaveradicallydifferentcosts。

RandomlyaccessingelementsinanArrayListisaconstant-timeoperation;ittakesthesameamountoftimeregardlessoftheelementyouselect。

However,inaLinkedListitisexpensivetomovethroughthelisttorandomlyselectanelement,andittakeslongertofindanelementthatisfurtherdownthelist.Ontheotherhand,ifyouwanttoinsertanelementinthemiddleofasequence,it'smuchcheaperinaLinkedListthaninanArrayList.Theseandotheroperationshavedifferentefficienciesdependingontheunderlyingstructureofthesequence.Inthedesignphase,youmightstartwithaLinkedListand,whentuningforperformance,changetoanArrayList.Becauseoftheabstractionviaiterators,youcanchangefromonetotheotherwithminimalimpactonyourcode。

Intheend,rememberthatacontainerisonlyastoragecabinettoputobjectsin。

Ifthatcabinetsolvesallofyourneeds,itdoesn'treallymatterhowitisimplemented(abasicconceptwithmosttypesofobjects)。

Ifyou’reworkinginaprogrammingenvironmentthathasbuilt-inoverheadduetootherfactors,thenthecostdifferencebetweenanArrayListandaLinkedListmightnotmatter.Youmightneedonlyonetypeofsequence.Youcanevenimaginethe“perfect”containerabstraction,whichcanautomaticallychangeitsunderlyingimplementationaccordingtothewayitisused.c:

\iknow\docshare\data\cur_work\mailto:

TIJ3@MindView。

net?

Subject=[TIJ3%5dChap01_185

2Thesinglyrootedhierarchy

OneoftheissuesinOOPthathasbecomeespeciallyprominentsincetheintroductionofC++iswhetherallclassesshouldultimatelybeinheritedfromasinglebaseclass.InJava(aswithvirtuallyallotherOOPlanguages)theansweris“yes”andthenameofthisultimatebaseclassissimplyObject.Itturnsoutthatthebenefitsofthesinglyrootedhierarchyaremany.

Allobjectsinasinglyrootedhierarchyhaveaninterfaceincommon,sotheyareallultimatelythesametype。

Thealternative(providedbyC++)isthatyoudon’tknowthateverythingisthesamefundamentaltype.Fromabackward-compatibilitystandpointthisfitsthemodelofCbetterandcanbethoughtofaslessrestrictive,butwhenyouwanttodofull—onobject-orientedprogrammingyoumustthenbuildyourownhierarchytoprovidethesameconveniencethat’sbuiltintootherO

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 考试认证 > 其它考试

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1