Java编程入门-英语教材ppt课件_第1页
Java编程入门-英语教材ppt课件_第2页
Java编程入门-英语教材ppt课件_第3页
Java编程入门-英语教材ppt课件_第4页
Java编程入门-英语教材ppt课件_第5页
已阅读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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论