




已阅读5页,还剩44页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
.,1,Lecture3Programming2,ObjectOrientedProgramming,.,2,InWeek2wecovered,Methodsarguments,parametersreturnvoidactivationstack/objectheapaccessingmembersviadotoperator(.),.,3,ThisWeek,Constructsif,switchfor,whileClassdevelopmentConstructorsGet/SetmethodsAccessspecification,.,4,Nextcoupleofweeks.,InheritanceDynamicbindingAbstractclasses/methodsPolymorphismLectureTest!,.,5,Newfunctionality,OurprogramcurrentlyprocessesaSquare,thenaRectangleandthenaCircle.Letsmodifyitsothattheusercanindicatewhichshapeheorshewantstoworkwith.Thenewprogramwillasktheusertoenter1-foraSquare2-foraRectangle3-foraCircle,.,6,IfStatement,LikePython,JavahasanifstatementTheifstatementallowsachoicebetweendifferentexecutionpathsItchecksabooleanconditionalexpression(true/false)IftheexpressionistrueTheifpathisfollowedIftheexpressionisfalseTheelsepath(ifitexists)isfollowedUnlikePythonthereisnoelifkeywordWecanuseelseifhowever,.,7,Themodifiedmainmethod,System.out.print(Enter1forSquare,2forRectangle,3forCircle:);intchoice=scan.nextInt();if(choice=1)processSquare(scan);elseif(choice=2)processRectangle(scan);elseif(choice=3)processCircle(scan);elseSystem.out.println(Wrongnumber);,.,8,Notes,Whenweruntheaboveprogramonlyoneshapewillbeprocessednot3Theshapeprocessedwillbedeterminedbytheuserbyentering1,2or3Iftheuserenterssomethingotherthan1,2or3theprogramwillgiveanerrormessage,.,9,Morethanonestatement,Iftheprogramisrequiredtoexecutemorethanonestatementonanyparticularpath,theyneedtobeenclosedinbracesif(choice=1)System.out.println(“Youhavechosen1”);processSquare();IfthebracesareomittedonlythefirststatementwillbelongtotheifprocessSquarewillbecallednomatterwhatvaluechoicehas,.,10,Anothermethod-ifTest,AgaintoavoidclutteringupthemainmethodwellputthenewcodeintoamethodcalledifTestThismethodwillbevoid(itwontreturnavalue)andwilltakeoneparameter(ofclassScanner)ThecodeforthismethodisshownonthenextslideThecodeforthemodifiedmainmethodwillbeshownontheslideafterthat,.,11,ifTestcode,voidifTest(Scannerscan)System.out.print(Enter1forSquare,2forRectangle,3forCircle:);intchoice=scan.nextInt();if(choice=1)processSquare(scan);elseif(choice=2)processRectangle(scan);elseif(choice=3)processCircle(scan);elseSystem.out.println(Wrongnumberentered);,.,12,Loops,Letsconsiderasituationwherewewanttoallowtheusertoprocess5shapesandwewanthimorhertocontrolwhichshapestheyareLikePython,Javaprovidestwodifferentloopingstructures(thereareothersbutwewontcoverthem)forloop-definiteloopwhileloop-indefiniteloop,.,13,Whileloop,SimilartothewhileloopinPythonStartswiththekeywordwhileGovernedbyaconditionalexpression(true/false)IftheexpressionevaluatestotrueTheloopiteratesTheexpressionisevaluatedagainTheloopwillcontinuetoiterateuntiltheexpressionevaluatestofalseBecarefulofinfiniteloopsusuallyabadthing,.,14,Codedemonstratingwhileloop,voidwhileTest(Scannerscan)inti=0;while(i5)ifTest(scan);i+;NotethattheloopconsistsofthreemajorelementsAstatementthatinitialisesthecountervariable(i)Anexpressionthattestswhetheriislessthan5Astatementtoadd1toiotherwiseinfiniteloop(why?)Aforloopbringstheseelementstogetherintooneplace,.,15,Forloop,for(inti=0;i5;i+)ifTest(scan);TheforloopismadeupofthefollowingpartsThekeywordforAgroupofthreeexpressionsenclosedinbracketsThefirstexpressionistheinitialiserItiscalledonlyoncewhentheforloopisenteredWecandeclareanewvariableatthesametimeFurthermore,wecangiveitavalueSowecreateanintvariablecalledi,andinitialiseitto0ThesecondexpressionisaconditionalexpressionTheforloopwilliterateonlyifthisexpressionistrueThethirdexpressionupdatestheforloopcounter(i)1isaddedtoiaftereachiteration,.,16,Methodtotesttheforloop,voidforTest(Scannerscan)for(inti=0;i5;i+)ifTest(scan);Notethatthefirstexpressiondeclaresiandintialisesitatthesametime,.,17,Switchstatement,NotcoveredinProgramming1(sopayattention)AdecisionconstructliketheifstatementItevaluatesanint(orbyte,char,short,String)expressionItthenexaminesalistofcasesThecasethatmatches(hasthesamevalue)astheexpressionischosenandthecodeassociatedwithitisexecuted.ThecodeonthenextslideshowsthecodeinifTestbeingrewrittenasaswitchstatement,.,18,Methodtotestswitchstatement,voidswitchTest(Scannerscan)System.out.print(“1forSquare,2forRectangle,3forCircle:);intchoice=scan.nextInt();switch(choice)case1:processSquare(scan);break;case2:processRectangle(scan);break;case3:processCircle(scan);break;default:System.out.println(Wrongnumberentered);,.,19,Notesoncodefrompreviousslide,NotetheuseofthekeywordsswitchandcaseTheexpressionfollowingswitchisenclosedinbracesItshouldevaluatetoanintvalue.AdoubleorfloatexpressionwillcauseanerrorThekeywordbreakisusedthreetimes.Itcausesexecutiontoleave(breakoutof)theswitchstatementIfthebreakisnottherethenexecutionwillfallthroughtothenextcaseForexample,ifthebreakwasomittedafterprocessSquareandtheuserentered1,thenprocessSquarewouldbecalledandthenprocessRectanglewhichisprobablynotwhatyouwantThefinalalternativeisdefault.Itischosenwheneverchoicedoesnotequal1,2or3,.,20,ModifiedcodeformethodforTest,voidforTest(Scannerscan)for(inti=0;i5;i+)/ifTest(scan);switchTest(scan);WehavecommentedoutifTestandinvokedswitchTest.Theresultshouldbeexactlythesame.,.,21,Summary,Wevediscussedtheuseofvariouscontrolstructuresif,switch,while,forWewillnowmoveontoanimportanttopicThecreationofindividualclassesWewilldothisbyidentifyingappropriateobjectsintheShapesclassandwritingclassestomodelthem,.,22,Shapesclass,ConsidertheShapesclassWecreatedseveralmethodsthatdealtwithvariousshapesCircles,Squares,RectanglesThisclasscanbeinstantiatedanditsmethodsinvokedButwemightfindmoreuseforclassesthatdealwithcircles,squareandrectanglesindividuallyTheseareeasiertoworkwithandtoreuse,.,23,ASquareclass,WemightdecidethatwewanttomakeanobjecttomodelaSquareRememberanobjectmodelsbothdatafunctionalityLetsfirstconsiderthedataassociatedwithaSquareWeneedonepieceofdataThelengthofthesideofthesquare,.,24,InstanceVariables,Thedataisincludedintheclassasinstancevariables(fields).ThesearesimilarinmanywaystothevariablesthatwevealreadyencounteredWellmakethesideofasquare(wellcallitside)adouble(althoughwecouldmakeitafloattooifwewanted),.,25,OurSquareclasssofar,publicclassSquaredoubleside;AboveisthecodeforaclasscalledSquare.ThekeywordpublicmeansthatitsavailableforotherclassestouseThekeywordclassdesignatesthatitsaclassTheidentifierSquareischosenbytheprogrammerandshouldbemeaningfulAlloftheinstancevariablesandmethodsthatbelongtotheclassareenclosedinsidebracesTheclasssofarconsistsonlyofasingleinstancevariableandthusisnotveryusefulasyet,.,26,Methods,NowweneedtothinkaboutthefunctionalityoftheclassWhatsortofthingsarewegoingtowanttodowiththedata?InourSquareclasstherearetwoobviouscandidatesformethodsdoublecalculateAreaOfSquare(double)doublecalculatePerimeterOfSquare(double)Eachofthemtakeasingleparameteroftypedoubleandreturnavalueoftypedouble.,.,27,OurSquareclasssofar,publicclassSquaredoubleside;doublecalculateAreaOfSquare(doubleside)returnside*side;doublecalculatePerimeterOfSquare(doubleside)return4*side;,.,28,TheclassSquare,WeaddedtwomethodstoourSquareclasscalculateAreaOfSquarecalculatePerimeterOfSquareWellmakeacoupleofchangestothese.Firstly,wellmakethenamesabitshorter.TheybelongtotheSquareclassnowsowedontneedtoreflectthatinthename.WellmaketheirnamescalcAreacalcPerimeterSecondly,wehavesaidthatthepurposeofthemethodsistomanipulatethedataintheinstancevariables.Therefore,thereisnoneedtopasssideasanargument.,.,29,OurSquareclasssofar,publicclassSquaredoubleside;doublecalcArea()returnside*side;doublecalcPerimeter()return4*side;,.,30,Classdiagrams,ClassesareoftensummarisedinclassdiagramsForourpurposesaclassdiagramisaboxwiththreesectionsThetopsectionhasthenameoftheclassThemiddlesectioncontainstheinstancevariablesThebottomsectioncontainsthemethodsClassdiagramsusuallycontainmanysuchboxesandrepresenttherelationshipsbetweenthem.However,wewillstartwithasingleclass.,.,31,ClassDiagram,.,32,CreatingSquareobjects,NowthatwehavedefinedaSquareclasshowdoweuseitinourprogram.TheoriginalcodewasSystem.out.println(“Enterthesideofasquare:”);doubleside=scan.nextDouble();doubleareaOfSquare=s.calculateAreaOfSquare(side);System.out.println(“Areais“+areaOfSquare);WewillrewritethiscodeinthenextcoupleofslidestouseournewSquareclass,.,33,CreatingaSquareobject,Wevepreviouslyusedthenewoperatortocreatevariousobjects.WewillnowuseittocreateanewSquareobjectSquaresq=newSquare()Wecannowusesqtointeractwiththenewlycreatedobject.,.,34,Givingtheinstancevariableavalue,Wewillnowgivetheinstancevariablesideavalue.Thevaluewillbewhateverisenteredbytheuser.Wecandothisthroughtheuseofthedotoperator(.)sq.side=side;Wecanthenusethemethodtocalculatetheareaarea=sq.calculateArea();,.,35,Datahiding,RememberwhenwemadeuseoftheAPIspecificationsinordertousetheJFrameclass?Rememberthatallthatwaslistedweremethods.Wedidnotseeanyinstancevariableslistedforthisclass.ThiswillbetrueofthevastmajorityofclassesintheAPI.Thisisadeliberatedecisiononthepartoftheclassdeveloperstohidethedataandmakeaccesstoitavailableonlythroughitsmethods.,.,36,AccessSpecification,Javaprovidesthreeaccessspecifierswhichdeterminehowaparticularmembercanbeaccessed.Thesearepublic-availabletoanyotherclassprivate-onlyavailabletomethodsinitsownclassprotected-availabletosubclasses(moreonthiswhenwecoverinheritance)Ifyoudontgiveamemberanaccessspecifierthenthedefault(sometimescalledpackage)isused.Thememberwillbeavailabletoallclassesinthesamepackagebutnoothers.,.,37,Whatshouldbeprivate?,WevealreadyalludedtothisItisusualtomakeallinstancevariablesprivateThemethodsthatyouwanttomakeavailabletootherclassesshouldbepublicTheremaybesomemethodswhoseonlyjobistobecalledbyothermethodsintheclass.Theseshouldbeprivateaswell.,.,38,OurSquareclasssofar,publicclassSquareprivatedoubleside;publicdoublecalcArea()returnside*side;publicdoublecalcPerimeter()return4*side;calcAreaandcalcPerimetercanbeusedbyotherclasses.Theinstancevariable,side,canonlybeaccessedbymethodsbelongingtoSquare,.,39,Whymakethedataprivate?,Makingthedataprivategivestheclassdevelopersomecontroloverhowtheobjectsareused.LetssaythatweasclassdevelopersdecidethatthesideofaSquareshouldneverbenegative.Itshouldonlyeverbe0orpositive.Byallowingsq.side=lengthWecannotpreventsidefromreceivinganegativenumber.,.,40,Accessingprivateinstancevariable,Nowthatwehavemadesideprivatethestatementaboveisnolongerlegalandwillresultinanerror.ButnowwehavenowayatallofgivingsideavalueandsoourclassnolongerhasanyuseTherearetwoverycommonsortsofmethodthatallowustoovercomethisproblem.Thesearecalledgetmethods(orgetters)setmethods(orsetters),.,41,Getmethod,ThecommonformofnamingagetmethodisbyusingtheprefixgetandthenthenameoftheinstancevariablestartingwithanuppercaseletterThusagetmethodforsidewouldbecalledgetSideAgetmethodhasnoparameterandhasareturntypewhichisthesameasitsinstancevariableInthiscasedoubleItsusedtoreturnthecurrentvalueoftheinstancevariabledoublegetSide()returnside;,.,42,Setmethod,ThecommonformofnamingasetmethodisbyusingtheprefixsetandthenthenameoftheinstancevariablestartingwithanuppercaseletterThusasetmethodforsidewouldbecalledsetSideAsetmethodhasnoreturntype(void)andhasasingleparameterwhichisthesametypeasitsinstancevariableInthiscasedoubleItsusedtosetthecurrentvalueoftheinstancevariablevoidsetSide(doublelen)side=len;,.,43,Modifyingthesetmethod,Nowthatwecanonlysetthevalueofsidethroughitssetmethod,wecanwritecodetoensurethatonlypositivenumbers(andzero)canbeused.Ifthevalueoftheparameterisnegativethesetterwillsetthevalueofsideto0.Otherwiseitwillsetittothevalueofth
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 二零二五年度电子产品维修服务合同范本
- 二零二五年度连锁餐厅品牌授权与经营管理合同
- 二零二五年度包车出行旅游安全协议
- 2025版医疗器械注册检验委托服务合同
- 二零二五年度汽车零部件供应商车辆运输合同样本
- 2025年度网络设备销售与网络优化服务合同
- 2025版技术支持企业IT设备维护与升级服务合同
- 2025版企事业单位班车租赁及保险服务合同
- 二零二五年度不锈钢水箱节能技术研发合同
- 2025版航空航天电子设备生产车间承包与市场拓展合同
- 40篇短文搞定高中英语3500单词
- 2024年中国远洋海运集团招聘笔试参考题库附带答案详解
- 中冶集团《工程总承包项目管理手册》-
- 混合型颈椎病的护理查房
- 溃疡性结肠炎(中度)临床路径标准住院流程
- 铁道车辆基本知识-铁路限界(车辆构造检修课件)
- 三体系内审检查表全条款
- 出生缺陷防治规范化培训试题题库及答案
- 设备验证(设计确认DQ)验证文件模板
- 特殊药品管理工作记录本
- 销售人员软装备技能模块
评论
0/150
提交评论