




已閱讀5頁,還剩70頁未讀, 繼續(xù)免費閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
.,1,第3章面向?qū)ο缶幊袒A(chǔ),1.理解基本概念2.理解類3.使用構(gòu)造函數(shù)4.學(xué)習(xí)方法5.學(xué)習(xí)屬性,掌握,.,2,姓名、性別、年齡等:屬性學(xué)習(xí)課程、參加社會活動:方法,3.1面向?qū)ο缶幊谈拍?1.對象具有屬性和操作(方法)的實體。屬性:對象所處的狀態(tài)方法:用于改變對象狀態(tài)以達到特定的功能對象有一個唯一的標(biāo)識名2.類在對象之上的抽象,一種抽象的數(shù)據(jù)類型3.類是對象的模板,對象是類的具體化或類的實例示例:學(xué)生類各位同學(xué)對象,.,3,對象與類,屬性,型號,價格,里程,行為,起動,停車,行駛,屬性,車輪數(shù)量,檔的數(shù)量,行為,加速,換檔,剎車,屬性,名稱,顏色,品種,行為,搖尾巴,吃東西,犬吠,.,4,面向?qū)ο蟪绦蛟O(shè)計在處理對象時,必須遵循的三個原則:,1封裝用一個框架把數(shù)據(jù)和代碼組合在一起,形成一個對象。類是支持對象封裝的工具,對象則是封裝的基本單元。2繼承利用繼承可以創(chuàng)建分等級層次的類,繼承是父類和子類之間共享數(shù)據(jù)和方法的機制,通常把父類稱為基類,子類稱為派生類。單繼承:一個基類可以有任意數(shù)目的派生類,即一父多子多繼承:一個類若有兩個或兩個以上的直接基類,即一子多父,稱為多重繼承,C#通過接口來實現(xiàn)3多態(tài)性同一個操作作用于不同的對象,可以有不同的解釋,產(chǎn)生不同的執(zhí)行結(jié)果。分為靜態(tài)多態(tài)和動態(tài)多態(tài),根據(jù)參數(shù)的差別直接調(diào)用對象方法,根據(jù)基類間接調(diào)用對象方法,.,5,3.2類,屬性集信息是C#語言為程序中定義的各種實體附加一些說明信息,是C#語言的一個重要特征。屬于高級編程內(nèi)容,一般涉及不到。類名:唯一標(biāo)識名類基:直接基類或接口。默認(rèn)基類是object類,多個接口之間用逗號相隔類修飾符訪問權(quán)限、類的類型等,注意同一修飾符不允許出現(xiàn)多次,見表3.1,.,6,表3.1類修飾符,示例:classStudent/類主體,.,7,3.2.2類的成員,類體(類主體)用于定義該類的成員用一對花括號括起來,由兩部分組成:1.類體中以類成員聲明形式引入的類成員包括:常數(shù)聲明、字段聲明、方法聲明、屬性聲明、事件聲明、索引器聲明、運算符聲明、構(gòu)造函數(shù)聲明、析構(gòu)函數(shù)聲明、靜態(tài)構(gòu)造函數(shù)、類型聲明等2.直接從基類繼承而來的成員,.,8,一、成員類型:(1)靜態(tài)成員在字段、方法、屬性、事件、運算符和構(gòu)造函數(shù)聲明中含有publicstatic修飾符(2)實例成員在字段、方法、屬性、事件、運算符和構(gòu)造函數(shù)聲明中不含有publicstatic修飾符二、默認(rèn)成員訪問修飾符private,類成員注意點:,.,9,classProgramclassAClasspublicstaticintx=1;publicinty=2;staticvoidMain(stringargs)AClassab=newAClass();Console.WriteLine(y=0,x=1,ab.y,AClass.x);,.,10,1常數(shù)聲明,常數(shù)修飾符new、public、protected、private、internalpublic:訪問不受限制protected:訪問僅限于包含類或從包含類派生的類型internal:訪問僅限于當(dāng)前程序集。private:訪問僅限于包含類。類型sbyte、byte、short、ushort、int、uint、long、ulong、char、float、double、decimal、bool、string、枚舉類型或引用類型。常數(shù)表達式的值類型應(yīng)與目標(biāo)類型一致,或者通過隱式轉(zhuǎn)換規(guī)則轉(zhuǎn)換成目標(biāo)類型。,.,11,例如:classA_constpublicconstintX=10;constdoublePI=3.14159;/默認(rèn)訪問修飾符privateconstdoubleY=0.618+3.14;注意1.常數(shù)表達式的值是一個可以在編譯時計算的值注意2.常數(shù)聲明不允許使用static修飾符,只能通過類訪問。classTestpublicstaticvoidMain()A_constm=newA_const();Console.WriteLine(“X=0,PI=1,Y=2”,A_const.X,A_const.PI,A_const.Y);,.,12,2字段聲明,語法形式:屬性集信息字段修飾符類型變量聲明列表;變量聲明列表標(biāo)識符或用逗號“,”分隔的多個標(biāo)識符,并且變量標(biāo)識符還可用賦值號“=”設(shè)定初始值。字段修飾符new、public、protected、private、internal、static、readonly、volatilestatic:靜態(tài)變量。利用類直接訪問靜態(tài)變量,利用類的實例(對象)訪問非靜態(tài)變量readonly:只讀變量,聲明時或在構(gòu)造函數(shù)中賦值,一旦賦值不可改變。與const常量不同,const常量編譯時賦值計算。volatile:表示字段可能被多個并發(fā)執(zhí)行的進程修改。,.,13,【例3.1】通過構(gòu)造函數(shù)給只讀字段賦值,usingSystem;publicclassAreapublicreadonlydoubleRadius;/Radius是只讀字段privatedoublex,y;publicdoubleSize;publicstaticdoubleSum=0.0;publicArea()Radius=1.0;/通過構(gòu)造函數(shù)對radius賦值classTestpublicstaticvoidMain()Areas1=newArea();/s1.Radius=2;Console.WriteLine(Radius=0,Size=1,Sum=2,s1.Radius,s1.Size,Area.Sum);/靜態(tài)字段通過類訪問Area.Sum,實例字段通過對象訪問s1.SizeConsole.Read();,出錯了!無法修改只讀字段,.,14,3.2.3構(gòu)造函數(shù)和析構(gòu)函數(shù),1)實例構(gòu)造函數(shù)的聲明語法形式:屬性集信息構(gòu)造函數(shù)修飾符標(biāo)識符(參數(shù)列表):base(參數(shù)列表):this(參數(shù)列表)構(gòu)造函數(shù)語句塊,public,與類名相同沒有返回值,構(gòu)造函數(shù)重載:參數(shù)個數(shù)或類型不同,調(diào)用基類同參數(shù)列表的構(gòu)造函數(shù),調(diào)用本類同參數(shù)列表的構(gòu)造函數(shù),.,15,構(gòu)造函數(shù)修飾符public、protected、internal、private、extern一般地,構(gòu)造函數(shù)總是public類型的。如果是private類型的,表明類不能被外部類實例化。標(biāo)識符(參數(shù)列表opt)構(gòu)造函數(shù)名必須與這個類同名,無返回類型和返回值構(gòu)造函數(shù)可以有0n個參數(shù)構(gòu)造函數(shù)重載3.用new運算符創(chuàng)建一個類的對象時,類名后的一對圓括號提供初始化列表,系統(tǒng)根據(jù)這個初始化列表的參數(shù)個數(shù)、參數(shù)類型和參數(shù)順序調(diào)用不同的構(gòu)造函數(shù)。,實例構(gòu)造函數(shù)注意點:,.,16,【例3.2】Time類的構(gòu)造函數(shù)及其重載,usingSystem;publicclassTimeprivateinthour,minute,second;publicTime()hour=minute=second=0;publicTime(inth)hour=h;minute=second=0;publicTime(inth,intm)hour=h;minute=m;second=0;publicTime(inth,intm,ints)hour=h;minute=m;second=s;,publicstringgetTime()returnhour.ToString()+:+minute.ToString()+:+second.ToString();,Console.WriteLine(t1=0,t1.getTime();,.,17,【例3.3】構(gòu)造函數(shù)初始化,usingSystem;classPointpublicdoublex,y;publicPoint()x=0;y=0;publicPoint(doublex,doubley)this.x=x;/當(dāng)this在實例構(gòu)造函數(shù)中使用時,this.y=y;/它的值就是對該構(gòu)造的對象的引用classTestpublicstaticvoidMain()Pointa=newPoint();Pointb=newPoint(3,4);/用構(gòu)造函數(shù)初始化對象Console.WriteLine(a.x=0,a.y=1,a.x,a.y);Console.WriteLine(b.x=0,b.y=1,b.x,b.y);Console.Read();,a.x=0,a.y=0,b.x=3,b.y=4,.,18,構(gòu)造函數(shù)注意點:,若類中沒有提供構(gòu)造函數(shù),則CLR會自動提供一個默認(rèn)的構(gòu)造函數(shù)一旦類中提供了自定義的構(gòu)造函數(shù),系統(tǒng)則不提供默認(rèn)的構(gòu)造函數(shù)不必顯示調(diào)用構(gòu)造函數(shù)實例構(gòu)造函數(shù)不能被繼承,.,19,派生類構(gòu)造函數(shù)的調(diào)用,調(diào)用時機:創(chuàng)建派生類的對象時,即new構(gòu)造函數(shù)不被繼承派生類構(gòu)造函數(shù)在執(zhí)行前,首先顯式或隱式地調(diào)用基類構(gòu)造函數(shù)默認(rèn)調(diào)用基類的無參數(shù)構(gòu)造函數(shù)除非顯式地指定調(diào)用有參數(shù)構(gòu)造函數(shù)this關(guān)鍵字引用類的當(dāng)前實例base關(guān)鍵字用于從派生類中訪問基類的成員調(diào)用基類上已被其他方法重寫的方法指定創(chuàng)建派生類實例時應(yīng)調(diào)用的基類構(gòu)造函數(shù),.,20,【例3.4】派生類構(gòu)造函數(shù)及其調(diào)用,usingSystem;classPointprivateintx,y;publicPoint()x=0;y=0;Console.WriteLine(Point()constructor:0,this);publicPoint(intx,inty)this.x=x;this.y=y;Console.WriteLine(Point(x,y)constructor:0,this);classCircle:Pointprivatedoubleradius;publicCircle()/默認(rèn)約定調(diào)用基類的無參構(gòu)造函數(shù)Point()Console.WriteLine(Circle()constructor:0,this);publicCircle(doubleradius):base()this.radius=radius;Console.WriteLine(Circle(radius)constructor:0,this);publicCircle(intx,inty,doubleradius):base(x,y)this.radius=radius;Console.WriteLine(Circle(x,y,radius)constructor:0,this);,classTeststaticvoidMain()Pointa=newPoint();Circleb=newCircle(3.5);Circlec=newCircle(1,1,4.8);Console.Read();,1,3,2,5,4,.,21,2)靜態(tài)構(gòu)造函數(shù)的聲明語法形式:屬性集信息靜態(tài)構(gòu)造函數(shù)修飾符標(biāo)識符()靜態(tài)構(gòu)造函數(shù)體靜態(tài)構(gòu)造函數(shù)修飾符externstatic或者staticextern。如有extern修飾,則是一個外部靜態(tài)構(gòu)造函數(shù),不提供任何實際的實現(xiàn),靜態(tài)構(gòu)造函數(shù)體僅僅是一個分號標(biāo)識符是靜態(tài)構(gòu)造函數(shù)名,必須與類同名且不能有參數(shù)靜態(tài)構(gòu)造函數(shù)體只能對靜態(tài)數(shù)據(jù)成員進行初始化,.,22,靜態(tài)構(gòu)造函數(shù)不可繼承,不能直接調(diào)用調(diào)用時機:創(chuàng)建類的實例引用類的任何靜態(tài)成員至多被執(zhí)行一次若類沒有聲明靜態(tài)構(gòu)造函數(shù),而又包含帶有初始設(shè)定的靜態(tài)字段時,編譯器會自動生成一個默認(rèn)的靜態(tài)構(gòu)造函數(shù),靜態(tài)構(gòu)造函數(shù)注意點:,.,23,2析構(gòu)函數(shù),語法形式:屬性集信息extern標(biāo)識符()析構(gòu)函數(shù)體標(biāo)識符必須與類名相同,前面需加“”析構(gòu)函數(shù)不能寫返回類型,也不能帶參數(shù),一個類最多只能有一個析構(gòu)函數(shù),.,24,析構(gòu)函數(shù)注意點,析構(gòu)函數(shù)不能由程序顯式地調(diào)用,而是由系統(tǒng)在釋放對象時自動調(diào)用派生類對象的析構(gòu)函數(shù)調(diào)用鏈:1)執(zhí)行派生類的析構(gòu)函數(shù)2)執(zhí)行基類的析構(gòu)函數(shù),直到調(diào)用object類的析構(gòu)函數(shù)為止,與執(zhí)行構(gòu)造函數(shù)的順序相反,.,25,第3章面向?qū)ο缶幊袒A(chǔ),1.理解基本概念2.理解類3.使用構(gòu)造函數(shù)4.學(xué)習(xí)方法5.學(xué)習(xí)屬性,掌握,.,26,回顧,對象具有屬性和操作(方法)的實體類對象的抽象,抽象的數(shù)據(jù)類型類是對象的模板對象是類的具體化或類的實例,.,27,類的成員,1.類體中以類成員聲明形式引入的類成員包括:常數(shù)聲明、字段聲明、構(gòu)造函數(shù)聲明、析構(gòu)函數(shù)聲明、靜態(tài)構(gòu)造函數(shù)、方法聲明、屬性聲明等2.直接從基類繼承而來的成員,.,28,訪問修飾符,public訪問不受限制protected只能被本身或派生類的實例訪問private只能被本身訪問static靜態(tài),非實例,.,29,構(gòu)造函數(shù),構(gòu)造函數(shù)實例構(gòu)造函數(shù)與類名同名在類進行new運算(即類實例化時)this:引用當(dāng)前類的實例base:用于從派生類中訪問基類的成員調(diào)用基類上已被其他方法重寫的方法指定創(chuàng)建派生類實例時應(yīng)該調(diào)用的基類構(gòu)造函數(shù)調(diào)用順序先基類后派生類,.,30,3.3方法,1.C#中所有的變量、方法都必須封裝在類中2.對象間、類間只能通過類所提供的方法進行互操作3.從方法的聲明、方法的參數(shù)、靜態(tài)方法與實例方法、方法的重載與覆蓋等方面理解,.,31,表3.2方法修飾符,.,32,表3.3修飾符的無效組合,.,33,【例3.6】下面程序中的StackTp類定義了幾個方法以模擬實現(xiàn)一個壓棧操作。,usingSystem;classStackTpintMaxSize;intTop;intStkList;publicStackTp()/構(gòu)造函數(shù)MaxSize=100;Top=0;StkList=newintMaxSize;publicStackTp(intsize)/構(gòu)造函數(shù)MaxSize=size;Top=0;StkList=newintMaxSize;publicboolisEmptyStack()/方法if(Top=0)returntrue;elsereturnfalse;publicboolisFullStack()if(Top=MaxSize)returntrue;elsereturnfalse;publicvoidpush(intx)StkListTop=x;Top+;,classTestpublicstaticvoidMain()StackTpST=newStackTp(20);strings1;if(ST.isEmptyStack()/調(diào)用方法s1=Empty;elses1=notEmpty;Console.WriteLine(Stackis+s1);for(inti=0;iy)tmp=x;x=y;y=tmp;if(xz)tmp=x;x=z;z=tmp;if(yz)tmp=y;y=z;z=tmp;,classTeststaticvoidMain()Myclassm=newMyclass();inta,b,c;a=30;b=20;c=10;m.Sort(refa,refb,refc);Console.WriteLine(a=0,b=1,c=2,a,b,c);Console.Read();,.,42,使用ref聲明引用參數(shù)的注意:(1)方法的參數(shù)聲明中ref關(guān)鍵字僅對緊跟在它后面的參數(shù)有效,而不能應(yīng)用于整個參數(shù)表。例如,Sort方法中x、y、z都要加ref修飾(2)在方法的調(diào)用中也要用ref修飾實參,且實參必須為變量,實參和形參的數(shù)據(jù)類型必須完全匹配(3)在方法外(方法調(diào)用前),ref參數(shù)必須明確賦值(4)ref參數(shù)也可以用于傳遞引用類型的對象,.,43,第3章面向?qū)ο缶幊袒A(chǔ),方法聲明如同C語言的“函數(shù)”訪問修飾符默認(rèn)為public方法參數(shù)值參數(shù)(值類型、引用類型)引用參數(shù)ref輸出參數(shù)out參數(shù)數(shù)組params,方法,.,44,方法重載與覆蓋方法簽名方法覆蓋new和虛方法virtualoverride屬性propertyget訪問器set訪問器,.,45,3.輸出參數(shù),1.用法與ref參數(shù)相似,但為輸出參數(shù)值2.只能用于從方法中傳出值,因此必須在方法結(jié)束之前對out參數(shù)賦值3.在參數(shù)前加out修飾符的形式參數(shù)4.out參數(shù)也可以用于傳遞引用類型的對象,.,46,【例3.10】求一個數(shù)組中元素的最大值、最小值和平均值。,usingSystem;classMyclasspublicvoidMaxMinArray(inta,outintmax,outintmin,outdoubleavg)intsum;sum=max=min=a0;for(inti=1;imax)max=ai;if(ai=y?x:y;publicintmax(intx,inty,intz)returnmax(max(x,y),z);publicdoublemax(doublex,doubley,doublez)returnmax(max(x,y),z);,classTeststaticvoidMain()Myclassm=newMyclass();inta,b,c;doublee,f,g;a=10;b=20;c=30;e=1.5;f=3.5;g=5.5;Console.WriteLine(max(0,1)=2,a,b,m.max(a,b);Console.WriteLine(max(0,1,2)=3,a,b,c,m.max(a,b,c);Console.WriteLine(max(0,1)=2,e,f,m.max(e,f);Console.WriteLine(max(0,1,2)=3,e,f,g,m.max(e,f,g);Console.Read();,.,52,方法的覆蓋使用new隱藏有相同簽名的方法,1.當(dāng)派生類與基類有相同名稱或簽名的成員時,在派生類中默認(rèn)隱藏基類成員,但提示警告2.在派生類成員聲明中加new修飾符,可以取消警告信息3.基類對象被引用到派生類對象時,訪問的仍是基類的方法,靜態(tài)多態(tài),.,53,【例3.15】定義了一個基類Shape,含有字段域width和height,分別表示形狀的寬和高,并定義了一個area方法,求形狀的面積。它的派生類Triangle和Trapezia都用關(guān)鍵字new修飾了area方法,usingSystem;classShapeprotecteddoublewidth;protecteddoubleheight;publicShape()width=height=0;publicShape(doublex)width=height=x;publicShape(doublew,doubleh)width=w;height=h;publicdoublearea()returnwidth*height;classTriangle:Shape/三角形publicTriangle(doublex,doubley):base(x,y)newpublicdoublearea()/派生類方法與基類方法同名,編譯時會有警告信息returnwidth*height/2;classTrapezia:Shape/梯形doublewidth2;publicTrapezia(doublew1,doublew2,doubleh):base(w1,h)width2=w2;newpublicdoublearea()/加new隱藏基類的area方法return(width+width2)*height/2;,classTeststaticvoidMain()ShapeA=newShape(2,4);TriangleB=newTriangle(1,2);TrapeziaC=newTrapezia(2,3,4);Console.WriteLine(A.area=0,A.area();/調(diào)Shape的area方法Console.WriteLine(B.area=0,B.area();/調(diào)Triangle的area方法Console.WriteLine(C.area=0,C.area();/調(diào)Trapezia的area方法A=B;/在C#中,基類的引用也能夠引用派生類對象Console.WriteLine(A.area=0,A.area();/調(diào)Shape的area方法A=C;Console.WriteLine(A.area=0,A.area();/調(diào)Shape的area方法Console.Read();,基類方法,.,54,虛方法:基類的方法用關(guān)鍵字virtual修飾對基類的虛方法重載:派生類用關(guān)鍵字override修飾與基類中虛方法有相同簽名的方法注意:(1)不能將虛方法聲明為靜態(tài)的(static)(2)不能將虛方法聲明為私有的(private)(3)覆蓋方法必須與它相關(guān)的虛方法匹配(4)一個覆蓋方法覆蓋的必須是虛方法,實現(xiàn)運行時多態(tài)(動態(tài)綁定),.,55,【例3.16】將例3.15改寫,Shape類中的方法area用virtual修飾,而派生類Triangle和Trapezia用override修飾area方法。,usingSystem;classShapeprotecteddoublewidth;protecteddoubleheight;publicShape()width=height=0;publicShape(doublex)width=height=x;publicShape(doublew,doubleh)width=w;height=h;publicvirtualdoublearea()/基類中用virtual修飾符聲明一個虛方法returnwidth*height;classTriangle:Shape/三角形publicTriangle(doublex,doubley):base(x,y)publicoverridedoublearea()/派生類中用override修飾符覆蓋基類虛方法returnwidth*height/2;classTrapezia:Shape/梯形doublewidth2;publicTrapezia(doublew1,doublew2,doubleh):base(w1,h)width2=w2;publicoverridedoublearea()派生類中用override修飾符覆蓋基類虛方法return(width+width2)*height/2;,classTeststaticvoidMain()ShapeA=newShape(2,4);TriangleB=newTriangle(1,2);TrapeziaC=newTrapezia(2,3,4);Console.WriteLine(A.area=0,A.area();/調(diào)Shape的area方法Console.WriteLine(B.area=0,B.area();/調(diào)Triangle的area方法Console.WriteLine(C.area=0,C.area();/調(diào)Trapezia的area方法A=B;Console.WriteLine(A.area=0,A.area();/調(diào)派生類Triangle的area方法A=C;Console.WriteLine(A.area=0,A.area();/調(diào)派生類Trapezia的area方法Console.Read();,派生類方法,.,56,3.4屬性property,回顧一下例3.2(P51)。為了實現(xiàn)良好的數(shù)據(jù)封裝和數(shù)據(jù)隱藏,類的字段成員的訪問屬性一般設(shè)置成private(默認(rèn))或protected利用public方法來訪問私有的或受保護的字段,.,57,【例3.2】Time類的構(gòu)造函數(shù)及其重載,usingSystem;publicclassTimeprivateinthour,minute,second;publicTime()hour=minute=second=0;publicTime(inth)hour=h;minute=second=0;publicTime(inth,intm)hour=h;minute=m;second=0;publicTime(inth,intm,ints)hour=h;minute=m;second=s;,classTeststaticvoidMain()Timet1,t2,t3,t4;t1=newTime();t2=newTime(8);t3=newTime(8,30);t4=newTime(8,30,30);t1.getTime();t2.getTime();t3.getTime();t4.getTime();,.,58,3.4屬性,保持原有的數(shù)據(jù)封裝和數(shù)據(jù)隱藏,類的字段成員的訪問屬性仍然設(shè)置成private(默認(rèn))或protected?不利用public方法來訪問私有的或受保護的字段屬性(property)屬性值的讀/寫與字段域語法相同;利用get和set訪問器實現(xiàn)屬性值的讀/寫,如何做?,.,59,語法形式:屬性集信息屬性修飾符類型成員名訪問器聲明屬性修飾符與方法修飾符(public,private,protected,)相同,包括new、static、virtual、abstract、override和4種訪問修飾符的合法組合,遵循相同的規(guī)則。訪問器聲明聲明屬性的訪問器,get訪問器或set訪問器,或者兩個語法形式:get/讀訪問器/訪問器語句塊set/寫訪問器/訪問器語句塊,屬性的聲明方法,.,60,1.get訪問器1.返回值類型與屬性的類型相同2.在語句塊中的return語句必須有一個可隱式轉(zhuǎn)換為屬性類型的表達式2.set訪問器1.沒有返回值2.有一個隱式的值參數(shù)value,類型與屬性的類型相同。3.屬性的種類1.讀/寫屬性:同時包含get和set訪問器的屬性2.只讀/只寫屬性:只包含get或set訪問器的屬性,屬性中的訪問器使用注意,.,61,【例3.17】對TextBox類的text、fontname、fontsize、multiline域提供屬性方式的讀/寫訪問。,usingSystem;classTextBoxprivatestringtext;privatestringfontname;privateintfontsize;privateboolmultiline;publicTextBox()text=text1;fontname=宋體;fontsize=12;multiline=false;publicstringText/Text屬性,可讀可寫getreturntext;settext=value;publicstringFontName/FontName屬性,只讀屬性getreturnfontname;publicintFontSize/FontSize屬性,可讀可寫getreturnfontsize;setfontsize=value;publicboolMultiLine/MultiLine屬性,只寫setmultiline=value;,classTeststaticvoidMain()TextBoxText1=newTextBox();/調(diào)用Text屬性的get訪問器Console.WriteLine(Text1.Text=0,Text1.Text);Text1.Text=這是文本框;/調(diào)用Text屬性的set訪問器Console.WriteLine(Text1.Text=0,Text1.Text);Console.WriteLine(Text1.Fontname=0,Text1.FontName);Text1.FontSize=36;Text1.MultiLine=true;Console.WriteLine(Text1.FontSize=0,Text1.FontSize);Console.Read();,.,62,【例3.18】定義Label類,設(shè)置Width和Heigh屬性,分別存放兩點之間在水平坐標(biāo)軸和垂直坐標(biāo)軸上的投影長度。,usingSystem;classPointintx,y;publicintXgetreturnx;publicintYgetreturny;publicPoint()x=y=0;publicPoint(intx,inty)this.x=x;this.y=y;classLabelPointp1=newPoint();Pointp2=newPoint(5,10);publicintWidth/計算兩點之間在水平坐標(biāo)軸上的投影長度getreturnp2.Xp1.X;publicintHeight/計算兩點之間在垂直坐標(biāo)軸上的投影長度getreturnp2.Yp1.Y;,classTeststaticvoidMain()LabelLabel1=newLabel();Console.WriteLine(Label1.Width=0,Label1.Width);Console.WriteLine(Label1.Height=0,Label1.Height);Console.Read();,.,63,3.5綜合應(yīng)用實例,【例3.19】學(xué)生成績管理程序。根據(jù)學(xué)生選修的課程及課程學(xué)分和課程成績計算GPA,最后按GPA的值對學(xué)生進行排序?;舅悸罚罕境绦虻膶W(xué)生總?cè)藬?shù)、課程名、課程學(xué)分可以由控制臺輸入,為敘述簡單,假定每個學(xué)生所選修的課程相同。Course類中定義了課程名、課程學(xué)分字段域,Name屬性、構(gòu)造函數(shù)。Student類中定義字段:學(xué)生姓名、學(xué)號、選修課程數(shù)、Course類對象數(shù)組、成績和GPA等屬性:CourseNum靜態(tài)屬性、GPA屬性、Name屬性方法:SetCourse方法設(shè)置課程名,靜態(tài)方法AddData方法給每個學(xué)生加入姓名、學(xué)號、成績。ComputeGPA方法計算學(xué)生成績的GPAstuSwap方法對兩個Student對象內(nèi)容進行交換。,.,64,classCoursestringcourseName;/課程名intcourseMark;/課程學(xué)分publicCourse()publicCourse(stringName,intMark)courseName=Name;courseMark=Mark;publicstringName/Name屬性,課程名可讀可寫getreturncourseName;setcourseName=value;publicintMark/Mark屬性,課程學(xué)分可讀可寫getreturncourseMark;setcourseMark=value;,.,65,加static修飾符表明這個域為所有學(xué)生類對象共享,Course類對象數(shù)組,用于設(shè)置每門課程名、課程學(xué)分,.,66,.,67,.,68,/根據(jù)課程的學(xué)分以及學(xué)生成績計算GPApublicvoidComputeGPA()inti;doublesMark,sumMark=0,sumGP=0;for(i=0;i=95)sMark=4.5;elseif(stuScorei=90)sMark=4;elseif(stuScorei=85)sMark=3.5;elseif(stuScorei=80)sMark=3;elseif(stuScorei=75)sMark=2.5;elseif(stuScorei=70)sMark=2;elseif(stuScorei=65)sMark=1.5;elseif(stuScorei=60)sMark=1;elsesMark=0;sumGP+=listi.Mark*sMark;sumMark+=listi.Mark;stuGPA=sumGP/sumMark;,.,69,/stuSwap方法提供兩個Student類對象的交換操作,注意形參被修飾為refpublicvoidstuSwap(refStudentstu1,refStudentstu2)stringname,Id;inti;intscore=newintStudent.CourseNum;doublegpa;name=stu1.Name;Id=stu1.stuID;gpa=stu1.GPA;for(i=0;iStudent.CourseNum;i+)scorei=stu1.stuScorei;stu1.stuName=stu2.stuName;stu1.stuID=stu2.stuID;stu1.stuGPA=stu2.stuGPA;for(i=0;iStudent.CourseNum;i+)stu1.stuScorei=stu2.stuScorei;stu2.stuName=name;stu2.stuID=Id;stu2.stuGPA=gpa;for(i=0;iStudent.CourseNum;i+)stu2.stuScorei=scorei;,靜態(tài)屬性,.,70,Test類中的MaxMinGPA方法求最大和最小GPA值,SortGPA方法按學(xué)生的GPA值對Student類對象數(shù)組進行排序。Test類代碼如下:clas
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 智能廚電創(chuàng)投項目計劃書
- 肉牛養(yǎng)殖技術(shù)課件視頻大全
- 2025至2030布藝床行業(yè)風(fēng)險投資態(tài)勢及投融資策略指引報告
- 東博高職考數(shù)學(xué)試卷
- 二年級上冊青島數(shù)學(xué)試卷
- 家用美容儀器質(zhì)量檢測方法考核試卷
- 德陽模擬高三數(shù)學(xué)試卷
- 二升三的數(shù)學(xué)試卷
- 高考文科模擬卷數(shù)學(xué)試卷
- 二十年前初中數(shù)學(xué)試卷
- 桶裝水領(lǐng)用表
- 營運客車等級劃分及評定重點標(biāo)準(zhǔn)
- 小學(xué)五年級英語學(xué)情分析
- 精品解析寧夏石嘴山市大武口區(qū)20212021學(xué)年下學(xué)期三年級期末科學(xué)試題
- 最新交管b2學(xué)法減分題庫及答案
- 藍海華騰變頻器說明書
- 漿砌塊石工程施工程序、施工方法
- 預(yù)焊接工藝規(guī)程pWPS
- 鄭州橡膠助劑項目實施方案(參考范文)
- 暑假學(xué)習(xí)與生活計劃表1
- MSCCirc.913 適用于A類機器處所的固定式局部水基滅火系統(tǒng)認(rèn)可導(dǎo)則(doc 8)
評論
0/150
提交評論