日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

《软件工程》实验报告——软件设计

發布時間:2024/10/5 编程问答 80 豆豆
生活随笔 收集整理的這篇文章主要介紹了 《软件工程》实验报告——软件设计 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、實驗目的

  • 掌握Axure RP軟件基本用法;
  • 掌握軟件體系結構設計;
  • 了解常用軟件設計模式;
  • 將實驗過程中形成的圖形、文字內容插入本文檔。

    ?

    二、實驗內容

    1、當前Web前端最經典的軟件體系結構模式是MVC模式(Model-View-Controller),其中的三個組成部分為:

  • V即View視圖是指用戶看到并與之交互的界面。比如由html元素組成的網頁界面,或者軟件的客戶端界面。MVC的好處之一在于它能為應用程序處理很多不同的視圖。在視圖中其實沒有真正的處理發生,它只是作為一種輸出數據并允許用戶操縱的方式。
  • M即Model模型是指模型表示業務規則。在MVC的三個部件中,模型擁有最多的處理任務。被模型返回的數據是中立的,模型與數據格式無關,這樣一個模型能為多個視圖提供數據,由于應用于模型的代碼只需寫一次就可以被多個視圖重用,所以減少了代碼的重復性。
  • C即Controller控制器是指控制器接受用戶的輸入并調用模型和視圖去完成用戶的需求,控制器本身不輸出任何東西和做任何處理。它只是接收請求并決定調用哪個模型構件去處理請求,然后再確定用哪個視圖來顯示返回的數據。
  • 在一個復雜的Web站點中,處理一個請求時,需要做很多類似的工作,包括安全認證、國際化、為特定用戶提供特殊視圖等。如果輸入控制器行為分散為多個對象中,這種行為相當一部分會在各處被復制,同時,在運行時改變行為也比較難。前端控制器通過引導請求經過一個處理程序對象來統一所有的請求處理,可以執行一些通用的行為,并且在程序運行時采用decorators來修改這些行為。然后,處理程序就調度一些command對象來處理某一請求的特定行為。前端控制器模式類圖如下:

    根據上述描述,先畫出前端控制器+MVC模式的順序圖,再根據所學的軟件分析方法導出MVC模式對應的類圖。

    2、利用Axure RP軟件模仿類似下方的一個Web頁面:

    ?

    操作過程:

    1)準備各項元件。從元件庫中將所需元件拖放到頁面上。如需圖片,可從百度下載或搜索得到。按照示例頁面,設備各項元件的對齊關系和樣式。注意:復選框和右邊的鏈接文字是兩個不同元件,只是靠得近。保存,點擊菜單“發布>預覽”,在瀏覽器中打開。以后改動該文件后,只要刷新瀏覽器頁面,就可觀察到最新的頁面。

    2)添加兩個標簽,放置在第一與第二文本框后,內容分別為“不得為空”和“密碼長度不得小于6個字符”,并設置隱藏。

    3)為第一個文本框添加事件。點擊“失去焦點時/設置可見性”,下方選擇標簽“不得為空”,再點擊下方“確定”按鈕。然后點擊“啟用用例”按鈕,彈出條件設置對話框,點擊“添加邏輯”,設置如下。這表明如果文本框是空的,就會將“不得為空”顯示出來。

    ?????????

    你可以添加更多的邏輯,如判斷手機號是否正確,判斷郵箱是否正確等。

    4)為密碼輸入框添加類似事件,當密碼長度小于6時顯示提示。

    5)為“換一張”添加事件,點擊時將其左邊驗證碼換掉。

    6)為“用戶協議”標簽、“注冊”按鈕、右上角“登錄”按鈕添加事件,轉至其它頁面(其它頁面內容不作要求)。

    保存本文件,隨實驗報告一起上交。

    3、了解并練習裝飾模式的用法

    設計模式中裝飾模式的介紹如下:

    裝飾(Decorator)模式的意圖

  • 意圖:動態地給一個對象添加一些額外的職責。就增加功能來說,Decorator 模式比生成子類更為靈活
  • 適用場合:
  • 1)在不影響其他對象的情況下,以動態、透明的方式給單個對象添加職責;

    2)當不能采用生成子類的方法進行擴充時。一種情況是,可能有大量獨立擴展,每一種組合將產生大量的子類,使得子類數目呈爆炸性增長。另一種情況是因為類定義被隱藏,或類定義不能用于生成子類

    裝飾模式的結構:

  • Component:對象接口:可以給對象動態地添加職責
  • ConcreteComponent:具體對象
  • Decorator:維持一個指向Component對象的指針,并定義一個與Component接口一致的接口
  • ConcreteDecorator:向組件添加職責
  • Decorator將請求轉發給它的Component對象,并有可能在轉發請求前后執行一些附加的動作
  • 裝飾模式的評價:

  • 使用Decorator模式可以很容易地向對象添加職責。可以用添加和分離的方法,在運行時添加和刪除職責
  • 使用Decorator模式可以很容易地重復添加一個特性,而兩次繼承則極容易出錯
  • 避免在層次結構高層的類有太多的特征:可以從簡單的部件組合出復雜的功能。具有低依賴性和低復雜性
  • 缺點:Decorator與Component不一樣,使用裝飾時不應該依賴對象標識;有許多小對象
  • 基于上述內容,編寫代碼,以兩種方式實現該模式:。

    例1:游戲中,角色Character可以有屬性attack, defence,可以有裝備weapen, armour,可以對屬性造成影響,它們可以是類的屬性;可以隨時變成巨人gigantize,可以變狂暴furious,都可以對attack和defence形成影響,它們可以形成裝飾。

    package io.shentuzhigang.demo.design;import org.junit.jupiter.api.Test;/*** @author ShenTuZhiGang* @version 1.0.0* @date 2020-11-19 14:22*/public class DecoratorTEST{@Testpublic void t(){Character person = new ConcreteCharacter();Decorator decorator = new Gigantize(new Person(person));decorator.weapen();decorator.armour();} } interface Character {public void weapen();public void armour(); } class ConcreteCharacter implements Character{@Overridepublic void weapen() {System.out.println("ConcreteCharacter+weapen");}@Overridepublic void armour() {System.out.println("ConcreteCharacter+armour");} } abstract class Decorator implements Character{private Character character;public Decorator(Character character){this.character = character;}String attack;String defence;@Overridepublic void weapen() {this.character.weapen();}@Overridepublic void armour() {this.character.armour();} } class Person extends Decorator {public Person(Character character) {super(character);}@Overridepublic void weapen() {super.weapen();System.out.println("Person+weapen");}@Overridepublic void armour() {super.armour();System.out.println("Person+armour");} }class Gigantize extends Decorator {public Gigantize(Character character) {super(character);}public void furious(){System.out.println("furious");}@Overridepublic void weapen() {super.weapen();System.out.println("Gigantize+weapen");}@Overridepublic void armour() {super.armour();System.out.println("Gigantize+armour");} }

    ?

    例2:考試成績Score,如果直接告訴(report)成績(例如65分),家長會生氣;加一個裝飾器,先告訴家長,這次考試比上次增加了幾分,家長會比較高興;加一個裝飾器,告訴家長,這次考試最高成績比我只高一點,家長也會比較高興;加一裝飾器,告訴家長,這次考試班級排名前列,家長也會比較高興。

    package io.shentuzhigang.demo.design.score;import org.junit.jupiter.api.Test;/*** @author ShenTuZhiGang* @version 1.0.0* @date 2020-11-19 18:40*/ public class ScoreTEST {@Testpublic void t(){Person person = new Person();Decorator decorator = new Decorator_zero(new Decorator_first(new Decorator_two(person)));decorator.report();} } interface Reportor{void report(); } abstract class Decorator implements Reportor{private Reportor reportor;public Decorator(Reportor reportor){this.reportor = reportor;}@Overridepublic void report() {reportor.report();} }class Decorator_zero extends Decorator {public Decorator_zero(Reportor reportor) {super(reportor);}@Overridepublic void report() {System.out.println("這次考試比上次增加了幾分");super.report();} }class Decorator_first extends Decorator {public Decorator_first(Reportor reportor) {super(reportor);}@Overridepublic void report() {System.out.println("這次考試最高成績比我只高一點");super.report();} }class Decorator_two extends Decorator {public Decorator_two(Reportor reportor) {super(reportor);}@Overridepublic void report() {System.out.println("這次考試班級排名前列");super.report();} }class Person implements Reportor {@Overridepublic void report() {System.out.println("65");} }

    參考文章

    設計模式——裝飾者(Decorator)模式DEMO——成績匯報的裝飾者模式實現

    設計模式——裝飾者(Decorator)模式DEMO——游戲角色的裝飾者模式實現

    設計模式之裝飾者模式(實例+Demo)

    JAVA設計模式初探之裝飾者模式

    總結

    以上是生活随笔為你收集整理的《软件工程》实验报告——软件设计的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。