(含參考答案)浙江大學城市學院試卷(Java高級程序設計2023-1011-1)_第1頁
(含參考答案)浙江大學城市學院試卷(Java高級程序設計2023-1011-1)_第2頁
(含參考答案)浙江大學城市學院試卷(Java高級程序設計2023-1011-1)_第3頁
(含參考答案)浙江大學城市學院試卷(Java高級程序設計2023-1011-1)_第4頁
(含參考答案)浙江大學城市學院試卷(Java高級程序設計2023-1011-1)_第5頁
已閱讀5頁,還剩3頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

誠信應考考出水平考出風格浙江大學城市學院2023—2023學年第一學期期末考試試卷?Java高級程序設計?開課單位:計算分院;考試形式:開卷;考試時間:2023年1月16日所需時間:120分鐘題序一二三總分得分評卷人得分一.__簡答題_(本大題共_7__題,每題__5__分,共__35_分)注意:答復以下問題盡量簡明扼要。多線程可以使用Runnable接口。是否可以認為,通過Runnable接口實現(xiàn)多線程的方式與Thread類沒有任何關系?如果你認為有關系,那么Runnable實現(xiàn)類與Thread類是什么關系?請舉例說明。有關系;Thread類實現(xiàn)了Runnable接口,因此可以擴展了Thread即實現(xiàn)了Runnable接口。采用“Runnable實現(xiàn)類〞方式需要構造一個新的Thread對象,并把Runnable實現(xiàn)類的實例作為參數(shù)傳入Thread的構造器中——Thread(task:Runnable)。舉例:publicclassTestRunnable{ publicstaticvoidmain(String[]args){ Threadthread=newThread(newAnTask()); thread.start(); }}classAnTaskimplementsRunnable{ @Override publicvoidrun(){ //dosomething }}采用“擴展Thread類〞方式無只需創(chuàng)立擴展Thread類的實例〔無參構造〕即可,但是不推薦使用這種方法,因為它將任務和運行任務的機制混在了一起。將任務從線程中別離出來是比較好的設計。舉例:publicclassTestThread{ publicstaticvoidmain(String[]args){ Threadthread=newAnThread(); thread.start(); }}classAnThreadextendsThread{ @Override publicvoidrun(){ //dosomething }}

2.通過Jdbc可以訪問數(shù)據(jù)庫。很多情況下,既可以使用JDBC-ODBC驅動、也可以使用純java驅動。請問兩種驅動方式都有何特點和優(yōu)缺點?JDBC-ODBC橋接方式:就是搭建JDBC與ODBC之間的橋梁,〔ODBC是微軟的驅程,JDBC是甲骨文的驅程〕你要在控制面板上指定數(shù)據(jù)源,通過數(shù)據(jù)源來建立連接。這樣程序的可移植性并不高,需要有ODBC數(shù)據(jù)源,幾乎只能在Windows平臺下運行,跨平臺性較差。而且當你換一臺主機運行,必須先要去配置數(shù)據(jù)源,否那么程序是無法運行的。純Java方式,即JDBC連接方式,就是通過java代碼直接與數(shù)據(jù)庫建立連接關系,所以執(zhí)行效率很高,而且可移植性較好,Java本身跨平臺性較好,所以不存在平臺的障礙,也無需配置數(shù)據(jù)源。早期的JDBC由于各大數(shù)據(jù)庫廠商沒有提供較完善的JDBC驅動器,所以JDBC-ODBC成為一個主要的連接方式,但是現(xiàn)在不存在這種問題,只有Access數(shù)據(jù)庫必須采用JDBC-ODBC方式橋接。請說明BorderLayout布局的特點。如果希望在BorderLayout布局的容器中放入多于5個的控件,那么需要如何處理?嵌套JPanel當應用程序需要配置文件時,既可以采用Properties屬性文件、也可以采用XML文件。請簡要分析它們各自的特點。Properties屬性文件缺點:1、無法直接使用中文編碼2、無法表現(xiàn)樹形結構、數(shù)組結構等復雜數(shù)據(jù)結構優(yōu)點:1、書寫簡單方便2、程序讀取簡單XML文件優(yōu)點:1.可拓展性xml中標記可以由程序員自己定義。2.xml與內容與形式的別離〔1〕顯示方式內嵌于數(shù)據(jù)當中〔2〕數(shù)據(jù)庫搜索可以簡單高效率的運行〔3〕XML是自我描述語言3.遵守嚴格的語法要求缺點:1.在數(shù)據(jù)中尋找信息非常困難〔樹狀存儲雖然搜索效率高但是插入和修改比較困難〕2.數(shù)據(jù)自身邏輯不得不讓位于HTML語言3.大數(shù)據(jù)量低效率4.XML文檔做為數(shù)據(jù)提供者使用,沒有數(shù)據(jù)庫系統(tǒng)那樣完善的管理功能5通信難,由于XML是元置標語言,任何人、公司和組織都可以利用它定義新的標準,這些標準間的通信就成了巨大的問題MVC是什么?請簡要說明它的特點。MVC全名是ModelViewController,是模型(model)-視圖(view)-控制器(controller)的縮寫,一種軟件設計典范,用于組織代碼用一種業(yè)務邏輯和數(shù)據(jù)顯示別離的方法,這個方法的假設前提是如果業(yè)務邏輯被聚集到一個部件里面,而且界面和用戶圍繞數(shù)據(jù)的交互能被改進和個性化定制而不需要重新編寫業(yè)務邏輯MVC被獨特的開展起來用于映射傳統(tǒng)的輸入、處理和輸出功能在一個邏輯的圖形化用戶界面的結構中。請簡述JavaSwing/AWT的事件處理機制〔說明事件源、事件監(jiān)聽器、以及它們的關系〕。Page.322請舉例說明什么情況下需要使用多線程。1、使用線程可以把占據(jù)時間長的程序中的任務放到后臺去處理2、用戶界面可以更加吸引人,這樣比方用戶點擊了一個按鈕去觸發(fā)某些事件的處理,可以彈出一個進度條來顯示處理的進度3、增加算法效率4、在一些等待的任務實現(xiàn)上如用戶輸入、文件讀寫和網(wǎng)絡收發(fā)數(shù)據(jù)等,線程就比較有用了。在這種情況下可以釋放一些珍貴的資源如內存占用等等。得分二.__論述題__(本大題共__3__題,每題_15_分,共__45_分。)1.Java集合框架中有List、Set、Map等接口,請分析答復以下問題:〔1〕請分別說明上述三個接口的實現(xiàn)類的特點。〔2〕請分析比較一下如何選用上述三個接口的實現(xiàn)類,即什么情況下選用List實現(xiàn)類,什么情況下應該使用Set實現(xiàn)類,什么情況下使用Map實現(xiàn)類?!?〕使用接口變量操作集合對象有何優(yōu)點和缺點?比方,以下兩行代碼都各自有何優(yōu)缺點?Lista=newArrayList();//用List接口類型變量a來訪問ArrayList對象ArrayListb=newArrayList();//用ArrayList類型變量b來訪問ArrayList對象〔1〕List特點:元素有放入順序,元素可重復

Map特點:元素按鍵值對存儲,無放入順序

Set特點:元素無放入順序,元素不可重復〔注意:元素雖然無放入順序,但是元素在set中的位置是有該元素的HashCode決定的,其位置其實是固定的〕〔2〕List實現(xiàn)類:元素可重復且有序的情況下;Set實現(xiàn)類:元素不可重復且無需的情況下;Map實現(xiàn)類:需要存儲鍵值對的情況下?!?〕方式1:利用Java繼承的機制,隱藏了List實現(xiàn)類的細節(jié),讓使用者無需考慮List接口的具體實現(xiàn)方式,有利于代碼的維護〔一個簡單的例子,如需更換List的實現(xiàn)類,只需修改在創(chuàng)立對象的那一句代碼〕,缺點就是無法調用ArrayList擴展的方法,例如方法trimToSize();方式2:直接把ArrayList這個實現(xiàn)類耦合進代碼,不利于代碼的維護。優(yōu)點就是可以調用ArrayList擴展的方法。根據(jù)具體情況選擇相應的方式。

2.關于OR映射,請答復以下問題:〔1〕什么是OR映射?OR映射有何用途?〔2〕請簡要說明OR映射的根本原理?!?〕訪問數(shù)據(jù)庫既可以通過OR映射方式,也可以直接通過JDBC。請分析比較兩種訪問方式的優(yōu)缺點?(1)OR映射即對象關系映射,O為Object即面向對象程序中的對象,R為Relation即關系數(shù)據(jù)庫。使用OR映射的編程方法使得Java程序員可以使用對象編程思維來操縱數(shù)據(jù)庫,使得程序設計得更加精煉易于理解與修改,把復雜的SQL語句與業(yè)務邏輯解耦,使得程序更符合高內聚低耦合的設計思想。(2)創(chuàng)立與數(shù)據(jù)庫表對應的實體類(Entity或Object),設置相應的域于數(shù)據(jù)庫表的屬性做映射,然后設置get/set方法,然后封裝操作SQL語句〔查刪改〕到對應的DAO

(DataAccessObjects數(shù)據(jù)訪問對象)中,由這兩種對象構成即為數(shù)據(jù)持久層,封裝了底層數(shù)據(jù)操作細節(jié),提供相應的接口給業(yè)務邏輯層使用,分工明確,表達了高內聚低耦合的思想。(3)OR映射:采用低耦合高內聚的設計思想,分別封裝了數(shù)據(jù)、數(shù)據(jù)訪問以及業(yè)務邏輯,雖然程序設計會變得更為復雜,但是從長期的擴展性、健壯性、可理解性來說,這樣的付出是值得的,尤其是在大型工程中顯得尤為必要。JDBC:直接使用JDBC接口操縱數(shù)據(jù)庫,使得程序模式簡單,而且效率會比OR映射略高,更易于性能和存儲的優(yōu)化等,但是在復雜的工程中使得數(shù)據(jù)庫操作和業(yè)務邏輯耦合在一起,變的難以調試,所以適合小型工程、業(yè)務邏輯簡單的工程。

3.關于Java網(wǎng)絡編程,請答復以下問題:〔1〕在使用TCP協(xié)議進行網(wǎng)絡編程時,需要使用哪些關鍵類〔包括偵聽、數(shù)據(jù)傳送時所涉及的核心類〕?并請簡要描述這些類的用途?!?〕在使用UDP協(xié)議進行網(wǎng)絡編程時,需要使用哪些關鍵類〔包括偵聽、數(shù)據(jù)傳送時所涉及的核心類〕?并請簡要描述這些類的用途?!?〕請簡要說明上述兩種網(wǎng)絡通信方式的各自優(yōu)缺點。(1)ServerSocket:此類實現(xiàn)效勞器套接字。效勞器套接字等待請求通過網(wǎng)絡傳入。它基于該請求執(zhí)行某些操作,然后可能向請求者返回結果。Socket:此類實現(xiàn)客戶端套接字〔也可以就叫“套接字〞〕。套接字是兩臺機器之間的通信端點。(2)DatagramSocket:此類表示用來發(fā)送和接收數(shù)據(jù)報包的套接字。DatagramPacket:此類表示UDP數(shù)據(jù)報包。(3)1、TCP是基于連接的,UDP是基于無連接2、對系統(tǒng)資源的要求〔TCP較多,UDP少〕3、UDP程序結構較簡單4、流模式與數(shù)據(jù)報模式5、TCP保證數(shù)據(jù)正確性,UDP可能丟包,TCP保證數(shù)據(jù)順序,UDP不保證得分三.__編程題__(本大題共__2__題,每題__10_分,共___20__分。)1.設計一個線程類,該線程類可以執(zhí)行長時間任務,并且可以被中途終止。要求如下:該線程類的類名為TaskThread,為Thread的子類。該線程類中有一個excuteTask方法〔為實例方法〕,該方法用于模擬一種操作〔比方壓縮文件操作〕,具體實現(xiàn)代碼可以用注釋方式說明,無需實現(xiàn)。線程啟動執(zhí)行時,在run方法中可以循環(huán)調用上述excuteTask方法。換言之,線程所執(zhí)行的長時間任務就是對excuteTask方法的循環(huán)調用。該線程類有一個stopTask方法〔為實例方法〕。stopTask方法被調用后,可以終止線程的執(zhí)行〔即終止循環(huán)〕。publicclassTaskThreadextendsThread{ privatebooleanisExit;//退出標志 publicvoidexcuteTask(){ //dosomething try{ Thread.sleep(10); }catch(InterruptedExceptione){ e.printStackTrace(); } System.out.println("dosomething"); } @Override publicvoidrun(){ System.out.println("TaskThreadbegin"); while(!isExit){ this.excuteTask(); } System.out.println("TaskThreadstop"); } publicvoidstopTask(){ this.isExit=true; } publicstaticvoidmain(String[]args){ TaskThreadtaskThread=newTaskThread(); taskThread.start(); try{ Thread.sleep(100); }catch(InterruptedExceptione){ e.printStackTrace(); } taskThread.stopTask(); }}實現(xiàn)撥號器程序,界面如下:設計要求如下:設計一個MyTelephone類,該類從JFrame繼承。窗體的尺寸大小是:寬500,高300。在主窗體的中央?yún)^(qū)域放入一個JPanel容器,該容器使用GridLayout布局,共有12個JButton按鈕,各按鈕排放位置如上圖所示。在主窗體的南方區(qū)域放入1個JLabel對象。當點擊按鈕時,可以將點擊的按鈕所對應的數(shù)字填入JLabel中。比方,圖中的“1338899999〞就是依次點擊“1〞、“3〞、“3〞、“8〞、“8〞、“9〞、“9〞、“9〞、“9〞、“9〞等按鈕后顯示的號碼。importjava.awt.BorderLayout;importjava.awt.GridLayout;importjava.awt.event.ActionEvent;importjava.awt.event.ActionListener;importjavax.swing.JButton;importjavax.swing.JFrame;importjavax.swing.JLabel;importjavax.swing.JPanel;publicclassMyTelephoneextendsJFrameimplementsActionListener{ privateJLabelnumLabel=newJLabel(); publicMyTelephone(){ this.setSize(500,300); JPanelnumPanel=newJPanel(); numPanel.setLayout(newGridLayout(4,3)); JButton

溫馨提示

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

評論

0/150

提交評論