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

“觀察者模式”軟件工程綜合性實驗設計

2022-05-27 17:03:11金強山馮光孫傳國
計算機時代 2022年5期
關鍵詞:案例

金強山 馮光 孫傳國

摘? 要: 針對“軟件設計與體系結構”課程中設計模式的抽象性與復雜性,為了使學生能夠更好的理解“觀察者模式”的設計思路,設計了該綜合性實驗案例。該實驗以溫室蔬菜大棚中溫度、濕度、CO2、光照的數據采集處理問題為實例,對實驗目的、實驗要求、實驗環境、實驗步驟做了詳細介紹,目的是使學生掌握“觀察者模式”的結構與原理,能夠分析解決實際的問題。實踐表明:通過綜合性實驗案例,能提升學生學習的主動性和對知識的掌握程度,培養學生分析問題、解決問題的能力。

關鍵詞: 觀察者; 設計模式; 綜合性實驗; 案例

中圖分類號:TP311.1? ? ? ? ? 文獻標識碼:A? ? ?文章編號:1006-8228(2022)05-105-04

Comprehensive experimental design for "Observer Pattern" software engineering

Jin Qiangshan, Feng Guang, Sun Chuanguo

Abstract: Aiming at the abstraction and complexity of design patterns in the course of "software design and architecture", in order to enable students to better understand the design idea of "Observer Pattern", this comprehensive experimental case is designed. Taking the data acquisition and processing of temperature, humidity, CO2, and light in a vegetable greenhouse as an example, the purpose of the experiment, experimental requirements, experimental environment, and experimental steps are introduced in detail. It enables students to master the structure and principle of "Observer Pattern" and be able to analyze and solve practical problems. Practice shows that through comprehensive experimental cases, students can not only improve their learning initiative and mastery of knowledge, but also cultivate their ability to analyze and solve problems.

Key words: observers; design mode; comprehensive experiment; case

引言

“軟件設計與體系結構”課程是軟件工程專業的核心課程之一,主要在于提高設計者的開發效率與軟件質量,使設計的軟件更加靈活,具有可拓展性和可復用性。“設計模式”是“軟件設計與體系結構”課程的重要內容,它主要解決面向對象系統中的類似的問題,建立整個設計方案,給出系統的名稱和解釋[1]。學生需要理解軟件工程領域體系結構設計的基本思想,掌握面向對象設計的原則,靈活選擇與應用軟件設計模式,解決實際工程項目中存在的問題。

1 設計模式

設計模式[2]具有一定的抽象性和具體性,在軟件開發的過程中,它聯系著需求分析和系統實現,是溝通抽象設計和具體實現的橋梁。同時設計模式提高了軟件的封裝性和模塊化,降低了對象之間的耦合性,改善了軟件的可維護性和可拓展性。設計模式主要分為行為型、設計型、結構型三大類[3],其中觀察者模式作為一種常用的、使用頻率高的設計模式,它主要解決對象之間存在“一對多”的依賴關系,“一”發生變化時,“多”也能夠自動發生變化的問題。

2 觀察者模式

2.1 模式定義

觀察者模式[4](Observer Pattern)意味著對象之間存在相互的依賴關系,當對象的狀態發生變化時,可以自動通知和更新其依賴關系。即一個主題[5-6](Subject)同時被多個觀察者[5-6](Observer)監聽,當主題更改時,會通知多個觀察者自動更新。觀察者模式也稱為訂閱模式、模型視圖模式和源偵聽器模式[7]。

2.2 模式動機

觀察者模式可以減弱對象之間的依賴關系,降低耦合度,而且這些低耦合的對象之間在行動上能夠保持高度一致,彼此依賴減弱但能夠相互提供服務。觀察模式的對象之間彼此存在“1:n”的依賴關系,“1”發生變化,“n”收到通知自動更新;其中“1”(發生變化的對象)稱為主題,“n”(被通知的對象)稱為觀察者[8]。主題和觀察者之間存在“1:n”的依賴關系,但是觀察者與觀察者之間不存在彼此的聯系,在具體的實際情況中,可根據需求增加和刪除對象,極大的提升系統開發的拓展性。

2.3 模式結構

“觀察者模式”的結構圖[9-11]如圖1所示,主要包括四種角色。

⑴ 抽象主題(Subject)

抽象主題指被觀察者檢測的對象。抽象主題一般定義為接口,也可以是抽象類。抽象主題中能夠存儲任意多個觀察者,通過attach()和detach()方法可以增加和刪除觀察者;定義notify()方法通知觀察者主題已發生變化,自動進行更新。

⑵ 具體主題(ConcreteSubject)

具體主題是抽象主題的實現類或子類,它實現了抽象主題中的抽象方法。通常它的狀態信息發生變化時,向依賴于它的多個觀察者會自動發送通知。

⑶ 抽象觀察者(Observer)

抽象觀察者也稱為觀察者,是指依賴于主題的對象。抽象主題通常被定義為一個接口,它定義了抽象update()方法,允許特定的觀察者在發布主題時自動更新自己。

⑷ 具體觀察者(ConcreteObserver)

具體觀察者實現抽象觀察者接口中定義的update()方法,它存儲與主題相一致的狀態,確保與主題保持高度一致與狀態協調。

2.4 模式分析

觀察者模式時序圖[12,13]所示,在實際的使用過程中,首先創建具體觀察者和具體主題,通過調用具體主題的attach(Observer observer)方法添加觀察者,在同一個主題上可以添加多個觀察者。其次,當使用setState()方法改變具體主題的狀態后,會調用具體主題的notify()方法,通過notify()方法將會激活注冊在此主題中具體觀察者的update()方法,所有觀察者將收到主題發送的通知,最后,觀察者調用getState()方法獲取具體主題的最新狀態。

2.5 適用情景

針對具體的問題,如果存在以下的情況,可以選擇觀察者模式。

⑴ 在實際問題抽象的過程中,存在兩個抽象的對象,一個對象的改變將導致其他一個或多個對象發生變化,但這個對象具體不知道有多少個對象需要更新數據[14-15],多個對象之間不存在聯系,可以對多個對象進行添加和刪除,降低了多個對象之間的耦合度。

⑵ 當一個對象的數據更新時需要通知其他對象,但這個對象不希望和被通知的那些對象形成緊耦合。

3 綜合設計性實驗案例

實驗在Windows操作系統下,借助Eclipse快速開發實現溫室蔬菜大棚溫度、濕度、CO2、光照檢測與預報,介紹綜合設計性實驗案例的設計。

3.1 實驗目的

①理解和掌握觀察者模式的運行原理;②能夠利用觀察者模式分析實際問題;③能夠繪制觀察者模式實例類圖;④熟練掌握觀察者模式的代碼編寫。

3.2 實驗要求

利用觀察者模式編寫程序,實現對溫室蔬菜大棚溫度和濕度的檢測與預報,CO2的檢測與預報,光照的檢測與預報,分別顯示在3個微型顯示屏上,實驗數據模擬溫室蔬菜大棚傳感器的輸入。

3.3 實驗環境

實驗所使用的計算機為Inter(R)Core(TM)i5-4590、3.3GHz、4GB內存、Win7操作系統,使用JDK1.8、Eclipse4.7.2、StarUML3.2.2開發環境。

3.4 實驗步驟

⑴ 分析問題,繪制類圖。對現實問題進行抽象,明確各對象之間的關系,利用StarUML繪制類圖,溫室蔬菜大棚實例類圖分析如圖2所示。

⑵ 分析對象之間的動態交互過程,繪制時序圖。對抽象的所有對象進行動態分析,利用StarUML繪制時序圖,如圖3所示。

⑶ 在Eclipse中新建項目Greenhouse,編寫Subject接口和Observer接口。

⑷ 編寫具體主題類GreenhouseData,實現Subject接口。

⑸ 編寫三個具體觀察者類TemHumObserver、CO2Observer、LightObserver,實現Observer接口和Screen接口。

⑹ 新建測試類Client,對程序進行測試。

3.5 實驗結果

當溫室蔬菜大棚中模擬傳感器將數據獲取到之后,三個顯示屏會自動更新數據信息,以保證數據的時效性與及時預報,運行結果如圖4所示。

4 結束語

通過“觀察者模式”綜合性設計實驗案例,學生能夠熟練掌握觀察者模式的設計原理;在面對現實中的具體問題,能夠利用觀察者模式解決特定的問題,提升代碼的復用性,降低對象之間的耦合性。在綜合性設計實驗案例的實施過程中,不僅考查了學生的編程能力,而且考查了學生對觀察者模式的理解,提升了學生面向對象程序設計的能力,激發了學生學習程序設計的興趣,夯實學生的專業基礎。

參考文獻(References):

[1] 李慧貞,鄭恩讓,張會生.電信管理網絡中觀察者模式的應用

研究[J].微電子學與計算機,2005(9):89-92

[2] 周宇,趙洪達,張倩雯.軟件設計模式課程實驗教學系統探索[J].

計算機系統應用,2017,26(5):86-90

[3] Freeman E, Robson E, Bates B, Sierra K. Head First

Design Patterns. US: O’Reilly Media,2004

[4] 陳萍萍,于衛紅,陳燕.觀察者模式中的“拉”模型在電子商務

系統中的應用[J].計算機時代,2014(9):49-51

[5] 李英軍,馬曉星,蔡敏等,譯.設計模式:可復用面向對象軟件

的基礎[M].北京:機械工業出版社,2005:89

[6] 李亞崗,王啟明.設計模式及其應用研究[J].伊犁師范學院

學報(自然科學版),2007(2):39-42

[7] 王海賓,白尚旺,黨偉超,等.基于Observer模式的AS/RS調

度系統設計與實現[J].計算機技術與發展,2009,19(3):110-113,122

[8] 劉小凡.監測類軟件設計中觀察者模式淺析[J].儀器儀表與

分析監測,2016(4):5-8

[9] [美]ErichGamma等著.設計模式[M].機械工業出版社,2000

[10] 耿祥義.Java設計模式[M].清華大學出版社,2009

[11] 劉偉.設計模式(第2版)[M].清華大學出版社,2019

[12] ErichGamma,加馬,李英軍.設計模式:可復用面向對象

軟件的基礎[J].機械工業出版社,2000

[13] 狄斌.設計模式的研究及在圖表類庫中的應用[D].北京工

業大學,2009

[14] 劉凌云.觀察者模式在面向抽象編程中的應用[J].計算機

與數字工程,2016,44(8):1474-1477,1522

[15] 歐陽宏基,楊衛忠,趙薔.觀察者模式在Java事件處理中的

應用研究[J].微處理機,2013,34(4):77-79

收稿日期:2021-10-11

*基金項目:教育部產學合作協同育人項目(202002254013); 新疆自治區高校本科教育教學研究和改革項目

作者簡介:金強山(1990-),男,甘肅永昌人,碩士,新疆理工學院信息工程學院教學辦主任,主要研究方向:軟件工程、數據挖掘。

猜你喜歡
案例
案例點評
幼兒100(2023年36期)2023-10-23 11:41:48
THE STARSHIP CEDIA 2020案例大賽獲獎案例
LAKERIDGE CEDIA 2020案例大賽獲獎案例
案例4 奔跑吧,少年!
少先隊活動(2021年2期)2021-03-29 05:40:48
TWO VILLAS IN ONE CEDIA 2020案例大賽獲獎案例
Superheroes CEDIA案例大賽優秀案例
Smarter Homes Experience Centre CEDIA案例大賽優秀案例
隨機變量分布及統計案例拔高卷
發生在你我身邊的那些治超案例
中國公路(2017年7期)2017-07-24 13:56:38
隨機變量分布及統計案例拔高卷
主站蜘蛛池模板: 免费一级毛片完整版在线看| 一级做a爰片久久毛片毛片| 国语少妇高潮| 欧美 亚洲 日韩 国产| 久青草国产高清在线视频| 国产日韩欧美视频| 在线观看亚洲人成网站| 98超碰在线观看| 国产一区二区精品高清在线观看| 亚洲av无码久久无遮挡| a毛片免费看| 亚洲第一视频免费在线| 国产欧美日韩视频怡春院| 国产精品久久国产精麻豆99网站| 人妻一本久道久久综合久久鬼色| 亚洲色图欧美| 亚洲精品视频免费观看| 日韩色图区| 日本91视频| 欧美日在线观看| 国产日本欧美亚洲精品视| 第九色区aⅴ天堂久久香| 无码久看视频| 日韩高清在线观看不卡一区二区 | 免费国产高清精品一区在线| 色欲不卡无码一区二区| 亚洲精品午夜无码电影网| 97超级碰碰碰碰精品| 国产菊爆视频在线观看| 一级爱做片免费观看久久| 一本一道波多野结衣一区二区| 亚洲精品中文字幕午夜| 亚洲人成网站18禁动漫无码| 中文字幕欧美日韩高清| 国产精品19p| 欧美日韩亚洲综合在线观看| 在线观看网站国产| 欧美日韩国产成人高清视频| 久久久精品无码一二三区| 亚洲熟妇AV日韩熟妇在线| 成年网址网站在线观看| 亚洲精品视频网| 熟妇丰满人妻av无码区| 综合色亚洲| 无码电影在线观看| 成人综合在线观看| 永久免费AⅤ无码网站在线观看| 99久久人妻精品免费二区| 福利姬国产精品一区在线| 欧美日韩福利| 99热这里只有精品在线播放| 国产成人精品第一区二区| 精品无码一区二区三区电影| 久久亚洲国产最新网站| 999国内精品视频免费| 亚洲日韩AV无码精品| 欧美啪啪网| 无码AV高清毛片中国一级毛片| 国产噜噜噜| 亚洲天堂网视频| 在线网站18禁| 成人夜夜嗨| 日本午夜影院| 免费在线视频a| 91在线激情在线观看| 日韩精品一区二区三区视频免费看| 欧美一级高清视频在线播放| 国产麻豆另类AV| 米奇精品一区二区三区| 不卡色老大久久综合网| www.av男人.com| 免费无码在线观看| 国产在线啪| 精品撒尿视频一区二区三区| 国产精品xxx| 国产福利在线免费观看| 91精品久久久无码中文字幕vr| 国产福利一区视频| 91精品久久久无码中文字幕vr| 亚洲第一色视频| 免费无遮挡AV| 中国毛片网|