面向對象程序設計試卷A_第1頁
面向對象程序設計試卷A_第2頁
面向對象程序設計試卷A_第3頁
面向對象程序設計試卷A_第4頁
面向對象程序設計試卷A_第5頁
已閱讀5頁,還剩5頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

1、武漢大學測繪學院2008-2009學年度第二學期期末考試面向對象程序設計課程試卷(A卷)出題者 李軍, 李英冰,艾松濤 審核人 班級 學號 姓名 成績 一、選擇題(以下各題中只有一個正確答案。每小題2分,共40分)1.C#中的數據類型long是( C)A.Int32 B. Int16 C. Int64 D. int2. C#中的char數據類型是(B )A.ASCII字符集 B. unicode字符集 C. 其他字符集3. C#中封裝一組API函數是用( C)A. 抽象類 B. 分部類 C. 靜態類4.”委托”是( D)A.接口 B. 函數 C. 抽象類 D. 密封類5. ”事件”是( BC)

2、A.接口 B. 函數 C. 屬性 D. 密封類6.C#中的類繼承( SonClass : BaseClass )指的是( B)A. private繼承 B. public繼承 C. protected繼承7.+運算符的重載,正確的定義是(B )A. static double operator +( double a, double b) B. public static double operator +( double a, double b) C. public double operator +( double a, double b) D. protected double oper

3、ator +( double a, double b) 8. C#中的屬性是(D )A.變量 B.私有函數 C.字段 D. get/set方法9. C#中的接口是(B )A.屬性 B.對不同對象相同功能的封裝 C.構造函數 D.變量10. string st, st1 = ”I am”, st2 = ” here.”; 不正確的語句是(B)A. st=st1+st2; B. st=strcat(st1, st2); C. st=string.Concat(st1, st2);11. C#工具箱中放的是(C )A.都是控件 B. 都是組件 C.有控件,也有組件12. 控件類Button的Text

4、是( C)A. private變量 B. public變量 C. 屬性 13. 在ADO.NET中,用( B)對象進行SQL Server數據庫的連接。A.SqlCommand B.SqlConnection C.OleDbConnection 14.SolidBrush的命名空間是( C) A.System.IO B.System.Data 15.NET中的大多數控件派生于( C)類A. System.Data B. System.Windows.Forms 16. 密封類的作用是(C ) A. 作為基類 B. 實現多態性 C. 不被別的類繼承17.C#中的類可以多重繼承( B)A. 多個基

5、類 B. 多個接口 C. 多個抽象類18.異常可以被 (AB )定義的塊捕捉A.catch B.try C.finally 19.C#中的純虛函數是用(B )來定義的函數A.virtual B.abstract C.override D.sealed20.C#中的.NET組件是指 ( B)A.Com組件 B.CLR組件 C. 控件二、名詞解釋,并簡要描述其作用(每題3分,共21分)1. IL 2.JIT 3. CLR 4. GDI+ 5.事件 6.委托 7. out和ref 三、改錯題(代碼有多處錯,請指出并改正,要求不能違背題目原意)1. 定義一double數組A, 賦值,并打印. (有3處

6、錯,每錯改正2分,共6分)double A= new double100;for(int i=0; i<100; i+) Ai = i/100.0;foreach(int a in A) Console.WriteLine(“%d”, a);2. 代碼取出Access2003的數據庫c:sutdent.mdb中sutdent表的第一條記錄, 并打印Name字段的值。 (有5處錯,每錯改正2分,共10分)string strcon = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:Student.mdb" OleDbCo

7、nnection myConnection = new OleDbConnection(strcon); SqlCommand myCommand = myCommand.CreateCommand(); myCommand.CommandText = "select * from Student" OleDbDataReader myDataReader = myCommand.ExecuteReader(); myDataReader.Read(); myDataReader.Read(); Console.WriteLine(myDataReader"Nam

8、e"); myDataReader.Close();四編程題:(有1小題,共10分)定義一個接口IShape:public interface IShape int Side get; set; / 邊長的get/set方法double Area(); / 求面積的函數請寫一個正方形類Square,它實現了IShape接口。五問答題:(有5小題,1,2小題每題2分, 3,4,5小題每題3分, 共13分)創建一Windows應用程序,系統定義了一個Form1類;在Form1.cs設計中,從工具箱拖一個Button控件到Form1中去,1. 系統在Form1類中定義了什么?用語句表達。2

9、. 系統在Form1類的InitializeComponent()中添加了什么?用語句表達。3. 在Form1.cs設計中雙擊Button控件,系統在Form1類中定義了函數:private void button1_Click(object sender, EventArgs e) 請在函數體中添加語句,可顯示”Hello”字符串。4. 系統如何把button1_Click函數與button1的Click事件進行綁定?用語句表達。5 Button1的Click事件是如何聲明的?用語句表達。C#復習資料1 值類型和引用類型A 類型可以分為值類型和引用類型,值類型可以分為結構和枚舉,結構又分為整

10、型、浮點型、布爾型、用戶自定義類型。引用類型可以分為指針類型、接口類型、類類型、數組類型、委托類型。B 在。Net中類只能單繼承,接口可以多繼承。C 值類型和引用類型的特點值類型直接包括他們的數據,每個值類型變量都有自己的數據副本,變量之間賦值時采用值復制的方式,他們的實例要放在堆棧上。引用類型存儲對值得內存地址的引用,變量之間的賦值采用傳遞引用的方式,他們位于堆上。D 所有的類型都派生于System。Object基本類型。E 值類型和引用類型的資源回收問題 值類型不受垃圾收集器控制,可以減少托管堆的壓力,引用類型內存必須從托管堆中分配,在分配時一些額外的附加成員必須初始化。從托管堆分配的對象

11、可能導致執行垃圾回收。A:C#代碼的運行是基于上的B:C#代碼編譯運行的第一個函數是2 程序集 A他是是一個或者多個托管模塊的集合,可以包含資源文件,他是組件復用、實施安全策略和版本策略的最小單位。B 程序集清單(manifest)描述該程序集由哪些部分組成,沒有程序集清單的托管PE文件不會被執行C 程序集的作用 是可執行的最小單元,是可授予權限的最小單元,是版本控制的最小容器形成引用范圍邊界,是基本的部署單元,是支持并行執行的單元.D 程序集的部署方式 私有部署(將程序集直接Copy到某個應用程序的根目錄或者子目錄中,前提:強命名程序集和弱命名程序集都可以這樣部署,優點:部署簡單,除了Cop

12、y不需要其他操作,適用場合:程序集沒有共享要求時)全局部署(將程序集通過GacUtil命令行工具將程序集部署到全局程序集緩存(Global Assembly Cache)中,或者利用資源管理器轉到“WinDirAssembly”目錄下,通過拖放方式部署,前提:只有強命名的程序集才可以部署到GAC,優點:可供其他程序集共享使用,缺點:損害簡化安裝、備份、還原、移動和卸載的部署要求,適用場合:程序集有共享要求時。)最常用的部署方式是私有部署方式,盡量減少或避免對全局環境的影響3 4種修飾符 他們分別是public,private,protected,partial4 數組的下標是從0到n-1數組類

13、型從抽象基類Array派生的引用類型,由于Array實現了IEnumerable接口,因此可以對所有的數組類型使用foreach迭代5 求數組元素個數的方法6 異常處理 在c#中所有的異常處理必須用一個從System.Exception 派生類的類型的是類中表示。異常的產生一個throw語句會直接無條件的拋出一個異常,控制不會接觸到進跟在throw后面的語句。異常的處理 異常被try catch語句處理。7 值類型的裝箱與拆箱裝箱和拆箱操作需要進行大量的計算,裝箱時還必須分配并構造一個全新的對象。大量的裝箱和拆箱操作是性能殺手,應盡量避免不必要的裝箱、拆箱操作裝箱:值類型實例到對象的轉換。此轉

14、換意味著值類型實例在運行時將攜帶完整的類型信息,并在堆中為其分配空間。通過復制值類型,并將它嵌入到新分配的對象中,將值類型轉換為對象裝箱操作是隱式的操作拆箱:將裝箱后的值類型還原到值類型。確定對象實例是給定值類型的已裝箱值,從裝箱類型中復制值到值類型變量拆箱操作是顯式的操作8 元數據的定義在模塊或程序集定義的每個類型和成員都將在元數據中以非特定語言的方式描述   元數據的最大優勢就是內臵在被說明的模塊或程序集之內9 元數據的內容使一種語言開發的類型可以被另外一種語言所使用,圾收集器(GC)利用元數據確定哪些對象是可達的,isual Studio等開發工具可根據元數據提供智能

15、感知功能以及其他與幫助有關的功能,對象的序列化和反序列化提供支持,他的我們可以利用Arrtibute完成的功能10元數據的舉例11 數組的申明以及傳遞參數聲明一維數組:int array = new int5;/從0到4共5個元素,每個元素默認值為0int arrayX= new int51,3,5,7,9;int arrayX= 1,3,5,7,9;int a; a = new int5;/聲明與實例化分開則必須通過new操作符注意SomeType stArray= new SomeType3;當SomeType是值類型時      Some

16、Type stArray= new SomeType3;當SomeType是引用類型時二維數組:int, array = new int4,2;三維數組:int, array = new int4,2,3;(詳細請參看書上12)12 聲明常量的倆個關鍵字以及他們的區別A 靜態成員以static關鍵字標識,靜態成員歸類型所有,為所有類型的實例所共享   B 關鍵字 readonly與constC 區別 const字段只能在該字段的聲明中初始化 public const inti=5;        read

17、only既可以在聲明中初始化,也可以在構造函數中初始化        根據所使用的構造函數,readonly字段可能具有不同的值,const字段為編譯時常數,readonly字段可用于運行時常數 public readonlyinth = DateTime.Now.Hour; const屬于類型,readonly屬于實例13 值類型和引用類型的強制轉換以及關鍵字當需要把值類型按引用傳遞到某個方法里面去的話,可以使用ref或out關鍵字public void SetValue(ref StructAa)public void

18、SetValue(out StructAa)使用ref關鍵字當值類型被傳遞到被調用方法里之前,必須進行初始化使用out關鍵字 當值類型被傳遞到被調用方法里之前,可以不用初始化,但在被調用方法面必須被初始化14 委托15 結構的繼承、委托的調用和累的生命的有關問題A 類及其成員通過class關鍵字定義一個類,類可以包含字段、屬性、方法、事件等,統稱為類的成員類定義對象的類型,對象是類的具體實體,對象有時也稱為實例,通過new關鍵字實例化和初始化類的對象:類只能從一個基類繼承,但可以同時實現多個接口Customer cus= new Customer();Customer anotherCus=

19、new Customer(“CusName”);B 結構public structAddress/字段、屬性、方法、事件結構的靜態字段可以初始化,但結構的實例字段不能使用初始值設定結構不能聲明默認構造函數或析構函數,但是可以聲明帶有參數的構造函數C 結構的特點結構的副本由編譯器自動創建和銷毀,因此不需要使用默認構造函數和析構函數,編譯器通過為所有字段賦予默認值來實現默認構造函數,結構不能從類或其他結構繼承,也不能作為一個類的基類型,結構是值類型,而類是引用類型,結構實例化可以不是用new運算符。結構可以實現接口,在結構中初始化實例字段是錯誤的。18委托和事件19 Main方法 C#為純面向對象

20、語言,任何方法都必須作為某個類型的成員方法,Main方法必須作為類或者結構內的靜態方法,一個C#程序中只能有一個入口點(Main方法)。20 Main方法的簽名 static void Main() static intMain() static void Main(string args) static intMain(string args)。21 System.Console類進行控制臺的操作,包括輸入、輸出等操作 Console類的部分方法 Console.WriteConsole.WriteLine Console.Read Console.ReadLine22 基元類型 編譯器直接

21、支持的數據類型稱為基元類型(primitive type)System.Int32 a = new System.Int32();inta=023 基元類型與FCL中的類型直接映射int System.Int32 long System.Int64 float System.Single object System.Object string System.String24 使用checked/unchecked的原則如果希望出現溢出時拋出異常,則應該顯式使用checked操作符或checked語句如果希望即使出現了溢出,也不希望有異常拋出,則應該顯式使用unchecked。如果不使用chec

22、ked/unchecked,則表明應用程序在開發階段希望溢出時能夠拋出異常,而在發布后,不再做溢出檢查25 類型引用的方式 類型引用完全限定名稱:命名空間.類型名稱比如:System.Console.WriteLine(“Hello”);可以使用using簡化類型的引用 using System; Console.WriteLine(“Hello”);26 實例化與初始化實例化 為對象等分配存放值數據內存空間初始化 為對象等的內容進行初始設置new運算符通常先執行實例化,再執行初始化對于值類型,如果只是聲明了變量但沒有使用new運算符,則默認實現了實例化,但是沒有執行初始化對于引用類型,如果只

23、聲明了變量但沒有使用new運算符,則既沒有實例化,也沒有初始化27 類型轉換作為強類型語言,不同類型直接賦值必須進行類型轉換隱式轉換:小類型轉換為大類型,比如short轉換為int子類型轉換為父類型,比如SqlConnection轉換為DbConnection實現接口的類型轉換為對應的接口類型,比如SqlDataReader轉換為IDataReader顯式轉換大類型轉換為小類型,比如int轉換為short整數類型轉換為枚舉值,比如WeekDaywd = (WeekDay)2;父類型或者接口類型指向的具體類型還原為具體類型引用,比如:DbConnectionconnect=new SqlConn

24、ection();SqlConnectionsqlConnect= connect as SqlConnection; 1.比較傳統開發模式下和.NET平臺下開發程序有什么不同? NET開發平臺使得開發者創建運行在Internet Information Server (IIS)(互聯網信息服務器)Web服務器上的Web應用程序更為容易,它也使創建穩定、可靠而又安全的Windows桌面應用程序更為容易。托管執行。2. 如何理解C#中string類型所具有的“恒定性”?我們一旦創建了一個string,在堆上為他分配了一塊連續的內存空間,我們將不能以任何方式對這個string進行修改使之變長、變短、改變格式。所有對這個string進行各項操作而返回的string,實際上另一個重新創建的string。3.請舉例說明:(1)什么C#中值類型和引用類型(2)各自有什么特 值類型: 單元直接存放“有效值” 如: int a=3; 則a內存單元就放的是3 引用類型: 單元放的是另外一個對象的引用(地址) 如: Form form1=new Form(); 就是說,在內存中開辟了一個對象new Form(),form1內存單元存放的是那個對象的地址,并非對象本身4.舉

溫馨提示

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

評論

0/150

提交評論