第3章面向對象編程基礎_第1頁
第3章面向對象編程基礎_第2頁
已閱讀5頁,還剩12頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、第三章面向對象編程基礎選擇題1語言的核心是面向對象編程(OOP,所有OOP語言都至少具有3個特性:(A)A.封裝,繼承和多態B.類,對象和方法C封裝,繼承和派生D.封裝,繼承和接口2. C#的構造函數分為實例構造函數和靜態構造函數,實例構造函數可以對(C)進行初始化,靜態構造函數只能對(A)進行初始化。A. 靜態成員B.非靜態成員B. 靜態成員或非靜態成員C靜態成員和非靜態成員#實現了完全意義上的面向對象,所以它沒有(D),任何數據域和方法都必須封裝在類體中。A.全局變量B.全局常數C全局方法D.全局變量,全局常數和全局方法4. 方法中的值參數是(A)的參數。A.按值傳遞B.按引用傳遞C按地址

2、傳遞D.不傳遞任何值5. 下面對方法中的ref和out參數說明錯誤的是(C)和out參數傳遞方法相同,都是把實在參數的內存地址傳遞給方法,實參與形參指向同一個內存存儲區域,但ref要求實參必須在調用之前明確賦過值。是將實參傳入形參,out它只有用于從方法傳出值,而不能用從方法調用處接收實參數據。和out參數因為傳遞的是實參的地址,所以要求實參和形參的數據類型必須一致。和out參數要求實參和形參的數據類型或者一致,或者實參能被隱式的轉化為為形參的類型。6. 假設classMclasS類的一個方法的簽名為:publicvoidMax,(outintmax,paramsinta),m1是Mclass

3、類的一個對象,maaxval是一個int型的值類型變量,arrayA是一個int型的數組對象,則下列調用該方法有錯的是()。B.(outmaxval,4,5,3,);(outmaxval,3,);B只包含get訪問器的屬性是只寫D.在靜態屬性訪問器中可訪問靜態(outmaxval);(outmaxval,refarrayA);7. 以下有關屬性的敘述正確的是()A.要求與字段域一一對應屬性C不能把它當變量使用數據二填空題1. 構析函數不能由程序顯示地調用,而是由系統在(釋放對象)時自動調用。如果這個對象是一個派生類對象,那么在調用構析函數時,除了執行派生類的構析函數,也會執行基類的構析函數,其

4、執行順序與構析函數(正好相反)。#實現了完全意義上的面向對象,所以它沒有(全局變量、全局函數和全局方法),任何數據域,方法都必須封裝在類中。3. 在類中如果一個數據成員被聲明為static的,則說明這個類的所有實例都共享這個static數據成員。在類體外,static成員不能通過(繼承)來訪問,它必須通過(靜態方法(構造函數)方法)來訪問。4. 程序運行結果()usingSystem;publicclassTestPublicvoidchangel(strings)s=s+Ch“angel”;publicvoidchange2(refstrings)s=s+“Change2”;publicvo

5、idchange3(strings1,outstrings2)s1=s1+“Change3”;s2=s1;publicclassExe8publicstaticvoidMain()strings1,s2;s1=“Hello,”;Testt1=newTest();(s1);(“s1aftercalltochange1is0”,s1);(refs1);(“s1aftercalltochange2is0”,s1);(s1,outs2);(“s1aftercalltochange3is0”,s1);(“s2aftercalltochange3is0”,s2);();5. 程序運行結果是:(s1afte

6、rcalltochange1isHelloS1aftercalltochange2isS1aftercalltochange3isS2aftercalltochange3is)usingSystem;publicclassTestpublicvoidchange(strings)s=s+“Change1”;publicvoidchange(refstrings)s=s+“Change2”;publicvoidchange(strings1,outstrings2)s1=s1+“Change3”;s2=s1;publicclassExe9publicstaticvoidMain()strings

7、1,s2;s1=“Hello,”;Testt1=newTest();(s1);(“s1is0”,s1);(refs1);(“s1is“0”,s1);(s1,outs2);(“s1is0,s2is1”,s1,s2);();三編程題1.定義描述復數的類,并實現復數的輸入和輸出。設計三個方法分別完成復數的加法,減法和乘法運算。解:UsingSystem;UsingSystemCollectionsGeneric;UsingSystemText;Namespacestaticvoidmain(stringargs)complexa=newcomplex(2,5);complexb=newcomplex

8、(4,6);complexc=a+b;();complexd=a-b;();complexm=a+b;();();ClasscomplexDoubler,v;Publiccomplex(doubler,doublev)thisr=r;thisv=v;PubliccomplexPublicstaticcomplexoperator+(complexa,complexb)returnnewcomplex(ar+br,a-r+bv);Publicstaticcomplexoperator-(complexa,complexb)doubley,k;y=a-r*av-av*bv;K=ar+bv+av*b

9、r;Returnnewcomplex(y,k);Publicvoidprint()(r+“+”+v+“i/n”);2. 定義全班學生成績類,包括:姓名,學號,C+成績,英語成績,數學成績和平均成績。設計4個方法:(1)全班成績的輸入;(2) 求出每一個同學的平均成績;(3) 按平均成績的升序排序;(4) 輸出全班成績。usingSystem;using;usingvoidMain(stringargs)#regionStudentTextAllStudentall=newAllStudent(3);();();();();(冒泡排序)排序后成績如下:);();#endregion#region

10、Student類publicclassStudents#region構造函數publicStudents()maths)publicStudents(stringname,stringnumber,floatCres,floatElys,float_name=name;_number=number;_Cres=Cres;_ely=Elys;_math=maths;_avg=(Cres+Elys+maths)/3;#endregion#region字段privatestring_name;publicstringNamegetreturn_name;set_name=value;privates

11、tring_number;publicstringNumbergetreturn_number;set_number=value;privatefloat_Cres;publicfloatCresgetreturn_Cres;set_Cres=value;privatefloat_ely;publicfloatElygetreturn_ely;set_ely=value;privatefloat_math;publicfloatMathgetreturn_math;set_math=value;privatefloat_avg;publicfloatAvggetreturn_avg;set_a

12、vg=value;#endregion#endregion#region全體學生類publicclassAllStudent#region構造函數publicAllStudent(intcout)_cout=cout;_stuList=newList();#endregion#region字段和屬性privateint_cout;publicintCoutgetreturn_cout;set_cout=value;privateList_stuList;publicListStuListgetreturn_stuList;set_stuList=value;#endregion#region學

13、生成績錄入方法publicvoidAddAllreslut()for(inti=0;i100)(請輸入正確的成績:);strs2=();(請輸入學生英語成績:);strs3=();if(!Isfloat(strs3)(請輸入正確的成績:);strs3=();elseif(strs3)100)(請輸入正確的成績:);strs3=();(請輸入學生數學成績:);strs4=();if(!Isfloat(strs4)(請輸入正確的成績:);strs4=();elseif(strs4)100)(請輸入正確的成績:);strs4=();Studentsstudent=newStudents(strs0,

14、strs1,(strs2),(strs3),(strs4);(strs0+同學的平均成績為:+;();(student);#endregion#region按學號查詢平均成績publicvoidRtAvg()(請輸入要查詢平均成績學生的學號:);stringnumber=();floatavg=RtAvg(number);if(avg!=0)(number+的平均成績為:+avg);();else(沒有該學號學生成績!);();publicfloatRtAvg(stringnumber)for(inti=0;i;i+)if(_stuListi.()=()return_stuListi.Avg;

15、return0;#endregion#region按平均分排序方法publicvoidsorting()Listlist=newList();for(inti=0;i;i+)Studentsstus=newStudents();for(intj=0;j_stuListj+1.Avg)stus=_stuListj;_stuListj=_stuListj+1;_stuListj+1=stus;elsestus=_stuListj+1;if(i=-1)stus=_stuList0;(stus);_stuList=list;#endregion#region輸出所有學生成績publicvoidprin

16、tStu()(一下是所有學生信息:);for(inti=0;i;i+)(_stuListi.Name+同學的基本信息:);(學號:+_stuListi.Number+C+成績為:_stuListi.Cres+英語成績為:+_stuListi.Ely+數學成績為:_stuListi.Math+平均成績為:+_stuListi.Avg);();();#endregion#region驗證浮點數方法publicstaticboolIsfloat(stringInput)if(Input=null)returnfalse;elsestringpattern=A(d*.)d+$;if(Input,pat

17、tern,.Success)returntrue;elsereturnfalse;#endregion#endregion3. 定義一個描述學生基本情況的類,數據成員包括姓名,學號,C+,英語和數學成績;成員函數包括輸出數據,姓名和學號,3門課的成績,求出總成績和平均成績。classstudentpublicstringname;publicintnum;publicfloatc,e,m,ave;publicstudent()(請輸入name:);name=();(請輸入num:);num=();(請輸入C+成績:);c=();(請輸入English成績:);e=();(請輸入Math成績:)

18、;m=();publicvoidprint()(name=0,num=1,C+成績=2,English成績=3,Math成績=4,name,num,c,e,m);publicvoidgetSumAve(boolprint)floatsum=c+e+m;ave=sum/3;if(print)(總成績=0,平均成績=1,sum,ave);classtheclassstudentstudents;intcount;publictheclass()(學生數:);count=();students=newstudentcount;for(inti=0;i;i+)if(i=count)break;stud

19、entsi=newstudent();studentsi.getSumAve(false);publicvoidpaixu()studentt;for(inti=0;i;i+)for(intj=0;jstudentsi+1.ave)t=studentsi;studentsi=studentsi+1;studentsi+1=t;publicvoidshuchu()for(inti=0;i;i+)(姓名:0,學號:1,c語言:2,數學:3,英語:4,,studentsi.num,studentsi.c,studentsi.m,studentsi.e);classprog

20、ramstaticvoidMain(stringargs)theclassm=newtheclass();();();();4. 設有一個描述坐標點的CPoint類,其私有變量x和y代表一個點的x,y坐標值。編寫程序實現以下功能:利用構造函數傳遞參數,并設其默認參數值為60和75,利用成員函數display()輸出這一默認的值;利用公有成員函數setpoint()將坐標值的修改為(80,150),并利用成員函數輸出修改后的坐標值。usingSystem;usingclassMyClasspublicstaticvoidMain()CPointcp=newCPoint();();(80,150)

21、;();();publicclassCPointprivateintx;privateinty;publicCPoint():this(60,75)publicCPoint(intx,inty)=x;=y;publicvoidDisplay()(x=0,y=1,x,y);publicvoidSetPoint(intx,inty)=x;=y;5. 定義一個人員類CPerson包括數據成員:姓名,編號,性別和用于輸入輸出的成員函數。在此基礎上派生出學生類CStuden(t增加成績)和教師類CTeacher(增加教齡),并實現對學生和教師信息的輸入輸出。classCPersonstringname;

22、intnum;stringsex;publicvoidinput()(姓名:);=();(編號:);=();(性別:);=();publicvoidprint()(姓名:+name);(編號:+num);(性別:+sex);classCStudent:CPersonfloatscore;publicvoidinput1()(這是學生類);();(成績:);=();publicvoidprint1()();(成績:+score);classCTeacher:CPersonpublicintage;publicvoidinput2()(這是教師類);();(教齡:);=();publicvoidprint2()();(教齡:+age);classProgramstaticvoidMain(stringargs)CStudentstu=newCStudent();CTeacherteac=newCTeacher();();();();();();6. 把定義平面直角坐標系上的一個點的類CPoint作為基類,派生出描述一條直線的類Cline,再派生出一

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論