亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        “觀察者模式”軟件工程綜合性實(shí)驗(yàn)設(shè)計(jì)

        2022-05-27 17:03:11金強(qiáng)山馮光孫傳國
        計(jì)算機(jī)時(shí)代 2022年5期
        關(guān)鍵詞:案例

        金強(qiáng)山 馮光 孫傳國

        摘? 要: 針對(duì)“軟件設(shè)計(jì)與體系結(jié)構(gòu)”課程中設(shè)計(jì)模式的抽象性與復(fù)雜性,為了使學(xué)生能夠更好的理解“觀察者模式”的設(shè)計(jì)思路,設(shè)計(jì)了該綜合性實(shí)驗(yàn)案例。該實(shí)驗(yàn)以溫室蔬菜大棚中溫度、濕度、CO2、光照的數(shù)據(jù)采集處理問題為實(shí)例,對(duì)實(shí)驗(yàn)?zāi)康?、?shí)驗(yàn)要求、實(shí)驗(yàn)環(huán)境、實(shí)驗(yàn)步驟做了詳細(xì)介紹,目的是使學(xué)生掌握“觀察者模式”的結(jié)構(gòu)與原理,能夠分析解決實(shí)際的問題。實(shí)踐表明:通過綜合性實(shí)驗(yàn)案例,能提升學(xué)生學(xué)習(xí)的主動(dòng)性和對(duì)知識(shí)的掌握程度,培養(yǎng)學(xué)生分析問題、解決問題的能力。

        關(guān)鍵詞: 觀察者; 設(shè)計(jì)模式; 綜合性實(shí)驗(yàn); 案例

        中圖分類號(hào):TP311.1? ? ? ? ? 文獻(xiàn)標(biāo)識(shí)碼:A? ? ?文章編號(hào):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

        引言

        “軟件設(shè)計(jì)與體系結(jié)構(gòu)”課程是軟件工程專業(yè)的核心課程之一,主要在于提高設(shè)計(jì)者的開發(fā)效率與軟件質(zhì)量,使設(shè)計(jì)的軟件更加靈活,具有可拓展性和可復(fù)用性?!霸O(shè)計(jì)模式”是“軟件設(shè)計(jì)與體系結(jié)構(gòu)”課程的重要內(nèi)容,它主要解決面向?qū)ο笙到y(tǒng)中的類似的問題,建立整個(gè)設(shè)計(jì)方案,給出系統(tǒng)的名稱和解釋[1]。學(xué)生需要理解軟件工程領(lǐng)域體系結(jié)構(gòu)設(shè)計(jì)的基本思想,掌握面向?qū)ο笤O(shè)計(jì)的原則,靈活選擇與應(yīng)用軟件設(shè)計(jì)模式,解決實(shí)際工程項(xiàng)目中存在的問題。

        1 設(shè)計(jì)模式

        設(shè)計(jì)模式[2]具有一定的抽象性和具體性,在軟件開發(fā)的過程中,它聯(lián)系著需求分析和系統(tǒng)實(shí)現(xiàn),是溝通抽象設(shè)計(jì)和具體實(shí)現(xiàn)的橋梁。同時(shí)設(shè)計(jì)模式提高了軟件的封裝性和模塊化,降低了對(duì)象之間的耦合性,改善了軟件的可維護(hù)性和可拓展性。設(shè)計(jì)模式主要分為行為型、設(shè)計(jì)型、結(jié)構(gòu)型三大類[3],其中觀察者模式作為一種常用的、使用頻率高的設(shè)計(jì)模式,它主要解決對(duì)象之間存在“一對(duì)多”的依賴關(guān)系,“一”發(fā)生變化時(shí),“多”也能夠自動(dòng)發(fā)生變化的問題。

        2 觀察者模式

        2.1 模式定義

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

        2.2 模式動(dòng)機(jī)

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

        2.3 模式結(jié)構(gòu)

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

        ⑴ 抽象主題(Subject)

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

        ⑵ 具體主題(ConcreteSubject)

        具體主題是抽象主題的實(shí)現(xiàn)類或子類,它實(shí)現(xiàn)了抽象主題中的抽象方法。通常它的狀態(tài)信息發(fā)生變化時(shí),向依賴于它的多個(gè)觀察者會(huì)自動(dòng)發(fā)送通知。

        ⑶ 抽象觀察者(Observer)

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

        ⑷ 具體觀察者(ConcreteObserver)

        具體觀察者實(shí)現(xiàn)抽象觀察者接口中定義的update()方法,它存儲(chǔ)與主題相一致的狀態(tài),確保與主題保持高度一致與狀態(tài)協(xié)調(diào)。

        2.4 模式分析

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

        2.5 適用情景

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

        ⑴ 在實(shí)際問題抽象的過程中,存在兩個(gè)抽象的對(duì)象,一個(gè)對(duì)象的改變將導(dǎo)致其他一個(gè)或多個(gè)對(duì)象發(fā)生變化,但這個(gè)對(duì)象具體不知道有多少個(gè)對(duì)象需要更新數(shù)據(jù)[14-15],多個(gè)對(duì)象之間不存在聯(lián)系,可以對(duì)多個(gè)對(duì)象進(jìn)行添加和刪除,降低了多個(gè)對(duì)象之間的耦合度。

        ⑵ 當(dāng)一個(gè)對(duì)象的數(shù)據(jù)更新時(shí)需要通知其他對(duì)象,但這個(gè)對(duì)象不希望和被通知的那些對(duì)象形成緊耦合。

        3 綜合設(shè)計(jì)性實(shí)驗(yàn)案例

        實(shí)驗(yàn)在Windows操作系統(tǒng)下,借助Eclipse快速開發(fā)實(shí)現(xiàn)溫室蔬菜大棚溫度、濕度、CO2、光照檢測(cè)與預(yù)報(bào),介紹綜合設(shè)計(jì)性實(shí)驗(yàn)案例的設(shè)計(jì)。

        3.1 實(shí)驗(yàn)?zāi)康?/p>

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

        3.2 實(shí)驗(yàn)要求

        利用觀察者模式編寫程序,實(shí)現(xiàn)對(duì)溫室蔬菜大棚溫度和濕度的檢測(cè)與預(yù)報(bào),CO2的檢測(cè)與預(yù)報(bào),光照的檢測(cè)與預(yù)報(bào),分別顯示在3個(gè)微型顯示屏上,實(shí)驗(yàn)數(shù)據(jù)模擬溫室蔬菜大棚傳感器的輸入。

        3.3 實(shí)驗(yàn)環(huán)境

        實(shí)驗(yàn)所使用的計(jì)算機(jī)為Inter(R)Core(TM)i5-4590、3.3GHz、4GB內(nèi)存、Win7操作系統(tǒng),使用JDK1.8、Eclipse4.7.2、StarUML3.2.2開發(fā)環(huán)境。

        3.4 實(shí)驗(yàn)步驟

        ⑴ 分析問題,繪制類圖。對(duì)現(xiàn)實(shí)問題進(jìn)行抽象,明確各對(duì)象之間的關(guān)系,利用StarUML繪制類圖,溫室蔬菜大棚實(shí)例類圖分析如圖2所示。

        ⑵ 分析對(duì)象之間的動(dòng)態(tài)交互過程,繪制時(shí)序圖。對(duì)抽象的所有對(duì)象進(jìn)行動(dòng)態(tài)分析,利用StarUML繪制時(shí)序圖,如圖3所示。

        ⑶ 在Eclipse中新建項(xiàng)目Greenhouse,編寫Subject接口和Observer接口。

        ⑷ 編寫具體主題類GreenhouseData,實(shí)現(xiàn)Subject接口。

        ⑸ 編寫三個(gè)具體觀察者類TemHumObserver、CO2Observer、LightObserver,實(shí)現(xiàn)Observer接口和Screen接口。

        ⑹ 新建測(cè)試類Client,對(duì)程序進(jìn)行測(cè)試。

        3.5 實(shí)驗(yàn)結(jié)果

        當(dāng)溫室蔬菜大棚中模擬傳感器將數(shù)據(jù)獲取到之后,三個(gè)顯示屏?xí)詣?dòng)更新數(shù)據(jù)信息,以保證數(shù)據(jù)的時(shí)效性與及時(shí)預(yù)報(bào),運(yùn)行結(jié)果如圖4所示。

        4 結(jié)束語

        通過“觀察者模式”綜合性設(shè)計(jì)實(shí)驗(yàn)案例,學(xué)生能夠熟練掌握觀察者模式的設(shè)計(jì)原理;在面對(duì)現(xiàn)實(shí)中的具體問題,能夠利用觀察者模式解決特定的問題,提升代碼的復(fù)用性,降低對(duì)象之間的耦合性。在綜合性設(shè)計(jì)實(shí)驗(yàn)案例的實(shí)施過程中,不僅考查了學(xué)生的編程能力,而且考查了學(xué)生對(duì)觀察者模式的理解,提升了學(xué)生面向?qū)ο蟪绦蛟O(shè)計(jì)的能力,激發(fā)了學(xué)生學(xué)習(xí)程序設(shè)計(jì)的興趣,夯實(shí)學(xué)生的專業(yè)基礎(chǔ)。

        參考文獻(xiàn)(References):

        [1] 李慧貞,鄭恩讓,張會(huì)生.電信管理網(wǎng)絡(luò)中觀察者模式的應(yīng)用

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

        [2] 周宇,趙洪達(dá),張倩雯.軟件設(shè)計(jì)模式課程實(shí)驗(yàn)教學(xué)系統(tǒng)探索[J].

        計(jì)算機(jī)系統(tǒng)應(yīng)用,2017,26(5):86-90

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

        Design Patterns. US: O’Reilly Media,2004

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

        系統(tǒng)中的應(yīng)用[J].計(jì)算機(jī)時(shí)代,2014(9):49-51

        [5] 李英軍,馬曉星,蔡敏等,譯.設(shè)計(jì)模式:可復(fù)用面向?qū)ο筌浖?/p>

        的基礎(chǔ)[M].北京:機(jī)械工業(yè)出版社,2005:89

        [6] 李亞崗,王啟明.設(shè)計(jì)模式及其應(yīng)用研究[J].伊犁師范學(xué)院

        學(xué)報(bào)(自然科學(xué)版),2007(2):39-42

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

        度系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)技術(shù)與發(fā)展,2009,19(3):110-113,122

        [8] 劉小凡.監(jiān)測(cè)類軟件設(shè)計(jì)中觀察者模式淺析[J].儀器儀表與

        分析監(jiān)測(cè),2016(4):5-8

        [9] [美]ErichGamma等著.設(shè)計(jì)模式[M].機(jī)械工業(yè)出版社,2000

        [10] 耿祥義.Java設(shè)計(jì)模式[M].清華大學(xué)出版社,2009

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

        [12] ErichGamma,加馬,李英軍.設(shè)計(jì)模式:可復(fù)用面向?qū)ο?/p>

        軟件的基礎(chǔ)[J].機(jī)械工業(yè)出版社,2000

        [13] 狄斌.設(shè)計(jì)模式的研究及在圖表類庫中的應(yīng)用[D].北京工

        業(yè)大學(xué),2009

        [14] 劉凌云.觀察者模式在面向抽象編程中的應(yīng)用[J].計(jì)算機(jī)

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

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

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

        收稿日期:2021-10-11

        *基金項(xiàng)目:教育部產(chǎn)學(xué)合作協(xié)同育人項(xiàng)目(202002254013); 新疆自治區(qū)高校本科教育教學(xué)研究和改革項(xiàng)目

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

        猜你喜歡
        案例
        案例點(diǎn)評(píng)
        幼兒100(2023年36期)2023-10-23 11:41:48
        THE STARSHIP CEDIA 2020案例大賽獲獎(jiǎng)案例
        LAKERIDGE CEDIA 2020案例大賽獲獎(jiǎng)案例
        案例4 奔跑吧,少年!
        TWO VILLAS IN ONE CEDIA 2020案例大賽獲獎(jiǎng)案例
        Superheroes CEDIA案例大賽優(yōu)秀案例
        Smarter Homes Experience Centre CEDIA案例大賽優(yōu)秀案例
        隨機(jī)變量分布及統(tǒng)計(jì)案例拔高卷
        發(fā)生在你我身邊的那些治超案例
        中國公路(2017年7期)2017-07-24 13:56:38
        隨機(jī)變量分布及統(tǒng)計(jì)案例拔高卷
        人与嘼交av免费| 亚洲一区二区三区偷拍视频| 精品亚洲一区二区三区四区五区| 天天躁夜夜躁天干天干2020| 午夜大片又黄又爽大片app| 人妻无码∧V一区二区| 亚洲a级视频在线播放| 少妇裸体性生交| 男人边吻奶边挵进去视频| 国产精品亚洲综合色区韩国| 亚洲av高清一区二区| 天天躁日日躁aaaaxxxx| 四川丰满少妇被弄到高潮| 欧美性xxx久久| 日本免费影片一区二区| 日本a片大尺度高潮无码| 国产精品va在线观看无码| 亚洲成精品动漫久久精久| 亚洲国产一区一区毛片a| 中文字幕人妻熟女人妻| 国产suv精品一区二区69| AV在线毛片| 偷拍视频网址一区二区| 色爱无码av综合区| 狠狠躁夜夜躁AV网站中文字幕| 一本大道加勒比东京热| 尤物在线观看一区蜜桃| 久久精品国产www456c0m| 老熟女熟妇嗷嗷叫91| 中文字幕午夜精品一区二区三区| 欧美成人看片一区二区三区尤物| 天天操夜夜操| 国产免费人成视频在线观看播放| 神马影院日本一区二区| 中文字幕久久精品一二三区| 91短视频在线观看免费| 亚洲乱码av中文一区二区第八页 | 荡女精品导航| 国内色精品视频在线网址| 国产精品一区二区三区专区| 国产精品无码av一区二区三区 |