999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

軟件設計模式課程實驗教學系統探索①

2017-06-07 08:24:05趙洪達張倩雯
計算機系統應用 2017年5期
關鍵詞:課程系統學生

周 宇,趙洪達,張倩雯

(南京航空航天大學 計算機科學與技術學院,南京 211106)

軟件設計模式課程實驗教學系統探索①

周 宇,趙洪達,張倩雯

(南京航空航天大學 計算機科學與技術學院,南京 211106)

設計模式是軟件工程專業的重要核心課程,兼具理論性和實踐性,但其高度的抽象性給學生學習帶來較大困難.針對該課程及學生的認知特點,設計開發了一個基于Spring框架的設計模式實驗教學系統-在線教務管理平臺,該系統采用B/S架構,綜合了多種常用設計模式,不僅展示了單個設計模式的特點,同時展示了這些設計模式在實際項目開發中的復合應用,有助于學生加深設計模式方法學理論精髓的理解,提高實踐動手能力,從而為進一步掌握高級軟件工程知識奠定基礎.

軟件工程;設計模式;Spring框架;教學系統

在軟件工程的課程體系中,設計模式有著承上啟下的特殊地位.程序設計語言和數據結構是學習設計模式的基礎,但是,和這類課程不同,設計模式要解決的不是功能性問題,而是要解決其軟件質量相關非功能性的問題(如可維護性等),這就需要學生在學習時關注從功能性屬性到非功能性屬性的轉變,這個轉變對于設計模式的學習以及軟件工程思想的理解都非常關鍵,然而在筆者的教學實踐中發現,這個思維轉變對于初學者而言有一定困難.軟件工程的所有活動都是圍繞提高軟件質量、降低軟件開發成本而展開,大量工作都是在研究如何設計維護性良好的解決方案以應對環境或者需求方面引入的變化,設計模式是軟件工程專業課程體系中首次關注這個問題并提出解決方案的課程,盡管是初級課程,但為學生進一步學習軟件工程中的高級知識如軟件體系結構等奠定基礎,同時設計模式在工業界中有著廣泛的應用[1].因此,設計模式課程是軟件工程專業的特色和核心課程.

由于軟件工程專業初學者的思維慣性,往往認為軟件功能性屬性重要,而忽視非功能性屬性,這個軟件設計模式教學帶來了一定的障礙.設計模式課程同時具有一定的抽象性和具體性.從軟件開發周期來看,設計模式兩端聯系著需求階段和實現階段,是溝通抽象設計和具體實現的橋梁.設計模式本身是屬于方法學的范疇,是獨立于特定的程序設計語言,它強調的是一種質量高、魯棒性強、可復用的方案.而設計模式的落地應用需要在代碼中體現,需要大量依賴對象式語言中封裝、繼承、多態等機制,針對不同的上下文需求,初級設計模式課分為創建型、結構型、行為型三大類共23中設計模式[2,3],每種設計模式都有它所針對的特定的問題,簡單地照本宣科講授相關的定義和實現,學生難以消化運用,因此引入實驗教學系統,采用理實一體化教學手段,在現階段的設計模式教學中非常有必要.

基于上述分析,本文設計和實現了面向設計模式課程實驗教學系統-在線教務管理平臺,該平臺采用了流行的Spring框架結構[4],集成了多種設計模式,既可以展示設計模式的單個特點,也可以展現這些設計模式的復合協作,有助于學生理解設計模式思想,從而有效提高教學效果.

1 系統概述

1.1 設計背景及思路

教務管理系統是教育機構常用的一種信息管理系統,為相關不同涉眾提供信息服務,主要對象包括教師、學生以及管理員.基本的功能包括:課表的添加、修改功能,即管理員可以為每個專業的學生添加、修改課程信息,可以是必修課也可以是選修課;課表的顯示功能,即學生查看自己當前需要進行的課程以及該課程的詳細信息,在查看該課程的同時在允許范圍內可以對該課程進行退課等操作,可以查看已完成課程的情況,教師可以查看自己的需要準備的課程,以及正在進行該課程的學生信息;成績的輸入、修改功能,即教師有權限輸入或者修改學生所選課程的成績;學分的統計功能,即學生可以在系統查看已擁有的學分,和未完成的學分,以及學分的分布情況;意見反饋功能,即學生和教師都可以通過該系統反饋教學意見,并且學生、教師和管理員都可以看到所有的反饋意見,并且可以進行點贊,評論等操作,并且每次點贊該反饋的重要程度就會被提高.

為實現以上基本功能,我們采用B/S架構,以Spring框架作為平臺基礎,設計和實現了相應的教務管理系統,由于不同的涉眾用戶有不同的權限、視圖以及安全等方面的需求,為便于擴展,具有良好的可維護性,系統集成多種設計模式,設計思路如下:

(1)基于Spring框架中MVC設計模式的三層架構,分別為UI Layer(表現層)、DataAccess Layer(數據訪問層)和Business Layer(業務邏輯層),目的是保障系統的可維護性和可重用性,加強系統對功能領域的專注.

(2)基于多種設計模式來實現相關業務邏輯.

(3)基于角色的訪問控制機制,教務管理系統將會有三方人員進行訪問分別是教師、學生以及管理員.不同的人訪問教務管理系統將會有不同的訪問權限.

1.2 系統的架構

系統架構層次使用了 MVC(Model–View–Controller)模式[5].MVC模式是軟件工程中的一種經典軟件架構模式,把軟件系統分為三個基本部分:模型(Model)、視圖(View)和控制器(Controller).控制器負責請求處理邏輯,視圖是用戶接口界面,模型部分是數據模型相關管理和數據庫設計等各種功能.本文采用MVC軟件架構模式實現與用戶的交互以及后臺的數據管理,能良好的體現高內聚性、低耦合性思想.

圖1 系統MVC架構圖

如圖1所示,本文設計和實現的教務管理系統Spring框架下釆用基于MVC設計模式的三層架構,分別為UI Layer(表現層)、DataAccess Layer(數據訪問層)和Business Layer(業務邏輯層).目的是保障系統的可維護性和可重用性,加強系統對功能領域的關注.

根據以上的思路我們設計的面向設計模式教學實驗的教務管理系統結構如圖2所示.其中,身份認證模塊主要負責對用戶身份的甄別.系統通過該模塊對用戶提供的登錄憑證進行校驗,甄別用戶是否是合法的訪問主體,確定用戶是否有權進入系統.授權訪問模塊主要負責判斷一個資源要不要給當下的訪問者操作或者展示.這里系統會通過該模塊將用戶擁有的權限和請求的安全資源的權限列表進行匹配,對匹配成功的用戶授予相應的權限,并且將資源對其開放,若匹配失敗則不具有相應的權限,那么就通知用戶不具有相應權限無法訪問對應的資源.數據加密模塊主要職責為針對敏感數據進行md5加密保證數據的安全性以及可靠性.同時防止用戶利用請求完成頁面因為數據未加密而導致的非法跳轉的情況.同時保證了數據意外泄露的安全性.課表管理模塊,學分、成績管理模塊以及意見反饋管理模塊主要針對前文所述的功能需求,在此不做贅述.數據庫我們采用開源數據庫MySQL[6].

圖2 系統結構圖

2 基于設計模式實現方案

在系統實現過程中,我們融入了多種設計模式,展示了它們在實際系統中的應用,主要包括代理模式、工廠模式、策略模式、裝飾者模式、觀察者模式、組合模式、以及迭代器模式,本節主要介紹這些設計模式在該系統中的使用情況,由于篇幅所限,重點介紹其中較有代表性的一種設計模式-裝飾者模式的使用.

2.1 代理模式

代理模式通過使用代理對象完成用戶請求,屏蔽了用戶對真正對象的訪問.同時做到對真實對象的控制和管理訪問.

系統設計中,使用JDBC實現網頁前端接口與MySQL數據庫交互的時候需要創建數據庫連接,而每一個數據庫鏈接都有比較大的開銷,所以不到真正使用的時候沒有必要創建數據庫連接對象.所以這里使用的代理模式的虛擬代理.使用虛擬代理作為創建開銷大的對象的代表.而每一個數據表對應的操作類都有數據庫連接,所以對每一個數據表操作類都有一個對應的代理類.這樣只有在需要對相應的數據表進行操作的時候才會創建相應的對象,之后代理類將請求給已創建的對象進行數據庫操作,這樣可提高系統的運行效率.

在實現中,我們對每個數據表的操作都抽象為了一個接口如AdminDAO,然后AdminDAOimpl類是對應接口的具體實現,代理類AdminDAOProxy是實現了同樣的接口,將真正的操作傳遞給AdminDAOimpl對象并調用AdminDAOimpl中的具體操作方法,圖3展示了代理模式結構的UML示意圖.

圖3 代理模式UML示意圖

2.2 工廠模式

工廠模式主要用于對象的創建,分為三種,一種是簡單工廠模式(Simple Factory Pattern).在該模式中,定義了一個類來負責創建其他產品類的實例,可以根據參數的不同返回不同類的實例.第二種是工廠方法模式(Factory Method Pattern),它屬于類創建型模式.在工廠方法模式中,工廠父類負責定義創建產品對象的公共接口,而工廠子類則決定生成具體的產品對象,這樣類實例的創建就可以在子類中單獨完成.第三種是抽象工廠模式(Abstract Factory Pattern):提供一個創建一系列相關或相互依賴對象的接口,而無須指定它們具體的類.在我們的系統中數據庫表越多,需要代理對象就越多.

在model層涉及到大量數據庫操作,比如登錄,添加課表等,這樣需要一個工廠類來獲得所需要的代理對象.因為系統僅僅是一個演示系統,規模比較小,實現中我們采用簡單工程模式就可以.在需要某個代理的時候就可以根據需要創建相應的代理對象.若是使用頻繁某一代理對象,可以使用單例模式減少代理對象創建次數.

2.3 策略模式

在策略模式中,存在一系列算法,每一種方法稱之為一個策略,將每一個方法封裝起來,并讓它們可以相互替換.策略模式讓算法獨立于使用它的客戶,然后根據環境或者條件的不同選擇不同的策略來完成該項任務.

在我們的系統中的開發中有很多情況需要用到策略模式,如意見反饋管理模塊.反饋意見分為教師意見和學生意見,都有相同的操作如意見的添加,修改等操作,但操作實現的時候處理略有不同.所以就采用了策略模式.另外實現學生教師的各自的操作(行為)即相同的操作但是有不痛的具體的實現方式.先實現關于意見反饋的操作的接口.然后實現學生意見和教師意見,在實現教師意見的時候將關于教師意見的操作添加進去,實現學生意見的時候將關于學生意見操作添加進去.這樣即使要修改有關操作的具體實現也只需要修改有關操作的類即可.下面以意見的更新操作為例,首先聲明一個意見更新的接口IUpdateSuggestionAction.然后教師和學生實現意見更新操作時的具體內容并不相同,所以創建兩個類UpdateStuSuggestion以及UpdateTchSuggestion分別實現這個接口.創建一個類Suggestions,它擁有關于意見所有操作的方法,同時擁有所有如IUpdateSuggestionAction一樣行為接口類型的成員變量.無論是教師的意見還是學生的意見都需要實現這些方法,再創建StuSuggestion和TchSuggestion兩個類繼 承 Suggestion類 ,然 后 在 構 造 函 數 中 將UpdateStuSuggestion以及UpdateTchSuggestion的實例賦值給對應接口類型的成員變量,這樣在成員函數中使用成員變量就可以直接調用其相應的行為.

2.4 裝飾者模式

裝飾者模式動態地將新的功能附加到對象上,所以若要擴展功能,裝飾者提供了比繼承更有效的方法.裝飾者模式給一個對象動態的添加新的功能,裝飾者和被裝飾者實現同一個接口,裝飾者持有被裝飾者的實例.

在該模式中,首先聲明一個主題接口,通過實現這個接口創建一個裝飾者類和被裝飾者類.由于實現了同一個接口所以擁有相同的方法,然后在裝飾者類中聲明一個主題接口類型的變量以便擁有被裝飾者對象.在裝飾者類中添加需要擴展的功能,然后在執行接口繼承的方法的同時執行擴展的方法,這樣相對于被裝飾者類,同樣的方法卻多出來擴展的功能.也符合上面所說的在運行的時候增加行為.

教務管理系統中每個學生或者教師提交的反饋意見都有點贊等功能.也就是說每次點贊后在完成其他相應操作(記錄點贊人等操作)的同時還需要將點贊數量更新或者將該條意見的重要程度進行更新.我們將原始的點贊操作定義為一個抽象類(IUpvoteSuggestion),具體的更新重要程度的類(ImportantDecorator)和 改 變 點 贊 次 數 的 類(ChangeTimesDecorator)則繼承了公共的裝飾者類(Decorator),而 該 裝 飾 者 類 繼 承 了 抽 象 類IUpvoteSuggestion,同時與該抽象類存在組合關系.使用裝飾者模式可以較容易的擴展增加功能,比如通過對點贊操作的再一次裝飾使其擁有在記錄點贊人的同時更新點贊數據以及重要程度的功能,實現面向對象中的“對修改是封閉的,對擴充是開放的”設計原則.圖4展示了在我們的系統中所采用的裝飾者模式UML類圖.

圖4 裝飾者模式UML示意圖

2.5 模式的復合使用

模式的復合主要體現在用戶界面相關的設計中.復合并不是簡單的將幾個設計模式組合到一起,而是更側重于解決一般性或者重復性的問題.如前所述,該系統設計是基于Sping框架,而該框架的重要特征是采用了MVC架構.在我們的實現中,復合的模式主要包括了觀察者模式、組合模式、策略模式和迭代器模式.

觀察者模式定義了對象間的一種一對多依賴關系,使得每當一個對象狀態發生改變時,其相關依賴對象皆得到通知并被自動更新.觀察者模式也稱發布-訂閱(Publish/Subscribe)模式、源-監聽器(Source/Listener)模式等.觀察者模式所建立的一對多的關系通常稱為一個觀察目標對多個觀察者的關系,每當觀察目標獲取到新的數據,即觀察目標本身發生改變就通知其對應的所有觀察者,然后觀察者獲取到新的數據,然后跟據自身的需要進行更新,而且這些觀察者之間不存在相互依賴的關系,即可以根據需要添加觀察者以及刪除觀察者,使整個系統更易于擴展.

組合模式把一組相似的對象當作一個單一的對象處理.一般而言,組合模式依據層次式的樹形結構來管理對象,當一組對象和單個對象執行相同操作時便可使用組合模式,這樣可以更加方便的處理一組對象.比如XML結構中的原子節點和復合節點可以用同樣操作進行訪問.迭代器模式相對比較簡單,它提供一種方法訪問一個容器對象中各個元素,而又不暴露該對象的內部細節,在JDK中,已經把迭代器模式融入語法之中,針對于所有的Java容器類,都定義了相同的接口用于遍歷其中元素.

在我們的系統用戶界面部分實現中,綜合使用了上述設計模式,管理員在系統后臺添加專業課程后,對應專業的學生的課表就需要更新,添加上對應的課程.由于權限不同,每個專業的學生看到的課表也僅僅是自己專業的課表.每個專業都有自己的課表操作類來實現對該專業學生課表的更新.我們使用觀察者模式完成課表的更新.主題對象獲取到管理員提交的新數據便通知注冊的操作類,然后操作類開始對該專業學生課表的更新.課表的顯示視圖控件有多個,我們采用組合模式,針對不同的控件定義一個公共的父類和抽象方法,具體的顯示邏輯在控件子類中實現,這樣我們只需按照統一的接口調用它們的方法,簡化了客戶端邏輯;同時,在更新操作中由于每一個專業的學生都不止一個,這樣我們將專業里的學生對象放到該專業的列表中,而對學生的遍歷操作則使用迭代器模式.在管理系統中的視圖和控制器兩部分剛好實現策略模式.視圖作為一個對象對應主體部分來調用不同的策略,而控制器作為行為部分,具體實現不同的策略.在視圖中的每一個行為無論是顯示還是更新都是交給控制器來實現具體的操作.策略模式本身的主體和行為的解耦性也正好完成了視圖和控制器的解耦.

3 結語

設計模式是軟件工程專業的特色和核心課程,對于學生掌握軟件工程思想、進一步學習架構方面知識有著重要作用,筆者在教學實踐中,針對課程特點,設計和實現了一個面向設計模式實驗教學的教務管理系統,該系統基于Spring框架,采用B/S架構,融合了多種設計模式,不僅展現了模式的單個應用,同時也示例了若干設計模式的協作復合.從課程反饋來看,該實驗系統的采用可有效激發學生學習的興趣和主動性,加深理論理解程度,提高動手實踐能力,達到了預期的教學效果.

1嚴華,張欲蓉.設計模式在通訊接口設計中的應用.計算機系統應用,2012,21(5):172–175.

2 Erich G,Richard H,Ralph J,et al.Design Patterns:Elements of Reusable Object-Oriented Software.北京:機械工業出版社,2005.

3 Freeman E,Robson E,Bates B,Sierra K.Head First Design Patterns.US:O’Reilly Media,2004.

4 Johnson R,Hoeller J,Arendsen A,et al.Professional Java Development with the Spring Framework.New York:John Wiley&Sons,2009.

5劉紅霞,陸文迪.改進的MVC設計模式的研究與應用.計算機工程與科學,2015,37(9):1688–1691.

6韓兵,王照清,廖聯軍.基于MySql多表分頁查詢優化技術.計算機系統應用,2016,25(8):171–175.

Teaching Platform for the Course of Software Design Patterns

ZHOU Yu,ZHAO Hong-Da,ZHANG Qian-Wen

(College of Computer Science and Technology,Nanjing University ofAeronautics and Astronautics,Nanjing 211106,China)

The course of design patterns is an important core course of software engineering.The course is characterized by both theory and applicability.But the abstract feature brings obstacles to students.According to the features of the course and the students’cognition,we design and implement a teaching platform based on Spring Framework-online education management system.The system adopts B/S architecture,and integrates multiple design patterns.It shows not only the features of individual design patterns,but also their composite application in a practical project.Thus it helps the students to have a deeper understanding of the essence theory of design patterns,enhance their programming ability and lay the foundation for them to learn more advanced knowledge in software engineering.

software engineering;design patterns;Spring framework;teaching platform

江蘇省自然科學基金(BK20151476);中央高?;究蒲袠I務基金(NS2016093)

2016-09-02;收到修改稿時間:2016-09-29

10.15888/j.cnki.csa.005754

猜你喜歡
課程系統學生
Smartflower POP 一體式光伏系統
工業設計(2022年8期)2022-09-09 07:43:20
WJ-700無人機系統
數字圖像處理課程混合式教學改革與探索
ZC系列無人機遙感系統
北京測繪(2020年12期)2020-12-29 01:33:58
軟件設計與開發實踐課程探索與實踐
計算機教育(2020年5期)2020-07-24 08:53:38
為什么要學習HAA課程?
趕不走的學生
連通與提升系統的最后一塊拼圖 Audiolab 傲立 M-DAC mini
學生寫話
學生寫的話
主站蜘蛛池模板: 国产真实乱了在线播放| 伊人久久福利中文字幕| 久久久久亚洲精品无码网站| 国产精品无码AV中文| 无码aaa视频| 亚洲狠狠婷婷综合久久久久| 亚洲αv毛片| 午夜无码一区二区三区| 亚洲无码视频图片| 欧亚日韩Av| 台湾AV国片精品女同性| 片在线无码观看| 日韩av无码精品专区| 亚洲无码不卡网| 国产精品无码翘臀在线看纯欲| 欧美国产菊爆免费观看 | 国产91高跟丝袜| 都市激情亚洲综合久久| 欧日韩在线不卡视频| 国产网站免费看| 亚洲天堂啪啪| 伊人91在线| 熟妇丰满人妻| 国产三区二区| 日韩欧美国产另类| 国产九九精品视频| 日韩在线播放中文字幕| 亚洲va欧美va国产综合下载| 欧美精品三级在线| 国产内射在线观看| 国产女人18毛片水真多1| 第一区免费在线观看| 亚洲久悠悠色悠在线播放| 99精品在线看| 国产午夜福利在线小视频| 亚洲无码四虎黄色网站| 亚洲一级毛片免费观看| 精品国产一二三区| 九一九色国产| 精品国产免费第一区二区三区日韩| 五月天天天色| 呦系列视频一区二区三区| 成人午夜免费视频| 永久免费无码日韩视频| 成年人福利视频| 特级毛片免费视频| 久久99热这里只有精品免费看| 巨熟乳波霸若妻中文观看免费| 在线国产资源| 日本伊人色综合网| 精品91在线| 亚洲欧美自拍中文| 在线精品视频成人网| 久久中文无码精品| 国产人妖视频一区在线观看| 456亚洲人成高清在线| 浮力影院国产第一页| 久久国产精品无码hdav| 91免费国产在线观看尤物| 香蕉久久国产精品免| 激情综合网激情综合| 免费99精品国产自在现线| 农村乱人伦一区二区| 精品视频在线一区| 久久国产精品夜色| 在线99视频| 九九九国产| 欧美第二区| 亚洲第一在线播放| 丰满的少妇人妻无码区| 欧美激情第一区| 国产精品.com| 亚洲精品中文字幕午夜| 网久久综合| 国产日本一区二区三区| 无码一区18禁| 无码国内精品人妻少妇蜜桃视频| 99在线国产| 蜜桃臀无码内射一区二区三区| 精品国产99久久| 国产激情无码一区二区三区免费| 国产va免费精品观看|