1.m-model:模型 負責業務邏輯,封裝軟體的核心功能如:登入功能,開始考試,交卷等2.v-view:檢視 負責顯示介面和使用者的互動,呈現使用者的資料狀態,接受使用者請求,介面中只包含顯示邏輯
3.c-controller:控制器 是模型層m和檢視層之間的橋梁,用於控制流程,耦合介面與業務模型,響應使用者請求將請求轉化給業務模型(處理)。根據處理結果更新資料發給檢視介面。控制器中包含介面的控制邏輯(如:介面的顯示和關閉)
1.業務層2.資料管理層 提供對資料的crud操作,只關心資料操作不涉及業務功能
使用者訪問view,發出請求,請求由控制器處理,控制器請求業務模型完成處理,然後根據處理結果跟新介面4.任務:登入流程的實現
1).增加業務模型層:
com.tarena.elts.sever.examsever
裡麵包好登入的抽象功能(包括登入成功或失敗)
2).增加業務和介面之間的控制器:
com.tarena.elts.ui.clientcontext
3).新增loginframe登入按鈕的響應事件**
4).在loginframe裡面新增控制器屬性和set方法
5).將loginframe裡面輸入框和密碼框設為全域性屬性,並添
加獲得內容的方法
6).在clientcontext裡面新增loginframe屬性,menuframe屬
性以及他們的set方法
7).回到clientcontext中完成login()方法
1.獲取介面中的id和pwd,
2.呼叫examservice中的login(得到結果)
if成功:更新選單介面,關閉登入介面,顯示選單介面。
else
失敗:捕獲失敗異常,更新登入介面,顯示失敗資訊
8).去loginframe新增noticelabel的全域性屬性,增加顯示noticelabel錯誤
資訊的方法
9).寫測試類,
[1].建立了一些物件,
[2].注入物件
[3].測試
10).通過測試得知,判斷登入的邏輯需在examservice的實現類,
11).建立com.tarena.elts.service.examserviceimpl
[1].繼承自examservice介面(自動重寫login方法).
[2].新增entiycontext屬性和set方法.
[3].完成login方法,
根據id找使用者:
if cant's find,throw exception,
if find id,match password,
if match password right ,create *****,return user
if match password wrong,throw exception
12).修改測試類,建立examservice物件,給examservice這個介面增加乙個set方法,然後注入物件,
[1].在clientcontext中新增介面退出方法
[2].位loginframe的cancelbtn新增事件監聽,在事件中呼叫exit方法
[3].遮蔽了loginframe的視窗關閉按鈕
[4].為loginframe新增windowlistener,重寫windowclosing方法,
一.在menuframe裡面,新增clientcontext屬性,及set方法,給「開始考試」按鈕新增事件(事件中呼叫控制器的start()方法)
二.重構clientcontext類,新增start方法
1.呼叫examservice的start(),同時返回乙個考試資訊,
2.關閉選單介面
3.更新考試介面
4.顯示考試介面
三.重構examservice類,新增start()
1.建立考卷試題,考卷資訊
2.返回考卷資訊(供考試介面呼叫),
四.重構examservice類(供考試介面呼叫),
1.新增examinfo start()
2.新增getquestioninfo(int index),獲取一道考題
五.examserviceimpl
1.重寫examinfo start()
2.重寫getquestioninfo(int index)
3.新增乙個私有的建立考卷的方法create*****(int numbers)
4.建立乙個包含所有考題的集合,list*****
5.新增乙個私有的設定每個考題的分數的方法 setscore()
六.examframe中新增乙個更新介面的方法;
updateview(examinfo e,questioninfo q)
重構:refactoring 通過調整**改善軟體的質量和效能,使其程式的設計模式和架構趨於合理,提高軟體的擴充套件和維護實體物件有唯一標識,可以進行比較和區分,可以持久化實體物件和值物件
實體物件:user question
值物件:examinfo qusetioninfo
值物件,乙個具體的值,不需要比較,不需要持久化
過程中遇到的問題,
q1:
listgetoptionstatus()
if (b.isselected())if (c.isselected())if (d.isselected())
return answerslist;
}
q2: 下方的button會隨左邊label的長度大小變化而變化
解決方法:把左右兩邊的label都分別新增進jpanel,然後設定jpanel的預設大小就ok。
然後這差不多就是實訓的筆記和問題,
**在這:
歡迎使用CSDN markdow
本markdown編輯器使用stackedit修改而來,用它寫部落格,將會帶來全新的體驗哦 markdown 是一種輕量級標記語言,它允許人們使用易讀易寫的純文字格式編寫文件,然後轉換成格式豐富的html頁面。維基百科 使用簡單的符號標識不同的標題,將某些文字標記為粗體或者斜體,建立乙個鏈結等,詳細...
歡迎毛毛與妞妞使用CSDN markdown編輯器
建立乙個自定義列表 如何建立乙個註腳 注釋也是必不可少的 katex數學公式 新的甘特圖功能,豐富你的文章 uml 圖表 flowchart流程圖 匯出與匯入 你好!這是你第一次使用markdown編輯器所展示的歡迎頁。如果你想學習如何使用markdown編輯器,可以仔細閱讀這篇文章,了解一下mar...
歡迎使用CSDN markdow1n編輯器
本markdown編輯器使用stackedit修改而來,用它寫部落格,將會帶來全新的體驗哦 markdown 是一種輕量級標記語言,它允許人們使用易讀易寫的純文字格式編寫文件,然後轉換成格式豐富的html頁面。維基百科 使用簡單的符號標識不同的標題,將某些文字標記為粗體或者斜體,建立乙個鏈結等,詳細...