<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      Blog2-題目集4~6

      一、前言:

      本次的大作業(yè),包含了兩個(gè)部分,一個(gè)是之前的1-3大作業(yè)(答題程序)還剩余的一次迭代,另外兩個(gè)是最近做的電路設(shè)計(jì)的迭代,總而來說,這些大作業(yè)都是對(duì)于自己能力的考驗(yàn),也是對(duì)自己的提升。


      二、設(shè)計(jì)與分析:

      大作業(yè)4最后一題:

      1.源碼分析:

      這次的迭代相比于上次的內(nèi)容,主要是增加了如下

      • 題目:增加了題目類型,包括多選題,填空題了
      • 對(duì)于類的設(shè)計(jì),主要是需要使用繼承的思想,這些多選題,填空題都是可以繼承于題目類,然后重寫其中的方法。
      • 對(duì)于判分,就需要增加多選題的判分邏輯,填空題的判分邏輯。因?yàn)闀?huì)有半對(duì)的情況產(chǎn)生,所以需要考慮。

      其實(shí)我這里也是使用小巧思

      class MCQuestion extends Question { // 定義選擇題類,繼承題目類
          public MCQuestion(int number, String content, String standardAnswer) {
              super(number, content, standardAnswer);
          }
      }
      
      class FQuestion extends Question { // 定義填空題類,繼承題目類
          public FQuestion(int number, String content, String standardAnswer) {
              super(number, content, standardAnswer);
          }
      }
      

      其實(shí)不難發(fā)現(xiàn),我這個(gè)完全就是一個(gè)虛假的繼承,因?yàn)槲移鋵?shí)還是把他當(dāng)那種單選題做了,不過能出一個(gè)半對(duì)的情況。只是我分開存儲(chǔ)了答案,然后就會(huì)有我如下的判定:

      
      boolean isAllCorrect = standardAns.equals(providedAns); // 對(duì)于一模一樣的答案直接通過,針對(duì)填空題
      boolean isCorrect = containsAllCharacters(MstandardAns, MproviedAns); // 對(duì)于錯(cuò)序的選擇題,如標(biāo)準(zhǔn)答案是:ABD,給出答案是:DBA
      boolean ishalfCorrect = containspartCharacters(MstandardAns, MproviedAns); // 判斷是否有包含,針對(duì)半對(duì)的情況,不能有多余字符
      

      可以看見我的是有三種情況的,然后分開判定,這樣就能處理多選題和半對(duì)的情況。也算是一個(gè)投機(jī)取巧的辦法?

      2.SourceMontor分析結(jié)果:

      3.UML圖:

      4.時(shí)序圖


      大作業(yè)5最后一題:

      1.源碼分析

      這是第一次新的題,就是對(duì)于電路電器的模擬
      我做出了如下設(shè)計(jì):

      1. 電氣設(shè)備類(Electrical_equipment)
      • 屬性:
        • identifier: 設(shè)備的唯一標(biāo)識(shí)符(例如,VCC、GND等)。
        • inputVoltage: 輸入電壓(默認(rèn)值為0V)。
        • outputVoltage: 輸出電壓(默認(rèn)值為0V)。
        • number: 設(shè)備編號(hào)。
          input 和 output: 分別表示設(shè)備的輸入和輸出端口。
      • 方法:
        • getOutputVoltage(): 返回輸出電壓,調(diào)用 computeOutput() 進(jìn)行計(jì)算。
        • setInputVoltage(double inputVoltage): 設(shè)置輸入電壓。
        • computeOutput(): 抽象方法,用于每個(gè)設(shè)備根據(jù)輸入電壓計(jì)算輸出電壓,具體實(shí)現(xiàn)由子類提供。
      1. 具體設(shè)備類
      • 電壓源(Voltage_source): 輸出固定電壓220V,表示電源設(shè)備。
      • 接地(Ground): 輸出固定電壓0V,表示接地設(shè)備。
      • 控制設(shè)備(如 Switch, Binning_governor, Continuous_governor): 用于調(diào)節(jié)電路的開關(guān)狀態(tài)、調(diào)速或調(diào)節(jié)電壓輸出。
      1. 受控設(shè)備(如 Light, Fan): 由電壓控制,執(zhí)行具體的控制操作,如燈的亮度或風(fēng)扇的轉(zhuǎn)速。
        每個(gè)設(shè)備類繼承自 Electrical_equipment 并實(shí)現(xiàn)了 computeOutput() 方法,計(jì)算設(shè)備的輸出電壓或亮度等。
      • 控制設(shè)備類
        Switch: 用于控制電路開關(guān)狀態(tài)。電路的狀態(tài)(開或關(guān))會(huì)影響設(shè)備的電壓輸出。toggle() 方法改變開關(guān)狀態(tài)。
        Binning_governor: 分檔調(diào)速器,通過切換檔位控制電壓輸出的比例。共有4檔,檔位0至3。
        Continuous_governor: 連續(xù)調(diào)速器,輸出電壓比例在0至1之間,可以細(xì)粒度調(diào)整輸出電壓。
        這些設(shè)備通過輸入調(diào)節(jié)命令(例如 #K1, #F2+ 等)來控制設(shè)備的狀態(tài)。

      • 電路連接和設(shè)備控制
        ProcessSystem 類負(fù)責(zé)解析輸入命令并管理設(shè)備。輸入包括設(shè)備連接(例如 [VCC 1])和設(shè)備控制命令(如 #K2, #F3+ 等)。
        解析設(shè)備連接:parseConnection() 方法通過正則表達(dá)式解析輸入的設(shè)備連接命令。根據(jù)設(shè)備連接,更新設(shè)備列表 deviceList。
        設(shè)備控制:parseControlEquipment() 方法解析并執(zhí)行控制命令,比如切換開關(guān)狀態(tài)或調(diào)整調(diào)速器檔位。

      串聯(lián)電路(SeriesCircuit): 設(shè)備通過 SeriesCircuit 類連接,模擬串聯(lián)電路的行為。電壓從 VCC(電壓源)流向其他設(shè)備,并根據(jù)設(shè)備的狀態(tài)計(jì)算每個(gè)設(shè)備的輸出電壓。

      在串聯(lián)電路中,電流流過每個(gè)設(shè)備時(shí),可能會(huì)遇到開關(guān)(Switch),若開關(guān)關(guān)閉,則電路中斷,電壓為0V。

      輸出計(jì)算:computeSystemOutput() 方法會(huì)計(jì)算整個(gè)系統(tǒng)的輸出,并將結(jié)果按設(shè)備編號(hào)排序輸出。

      其實(shí)是以巨大的繼承關(guān)系,
      如圖:

      可以見到總的父類是Electrical_equipment,然后是Voltage_source、Ground、Switch、Binning_governor、Continuous_governor、Light、Fan等具體設(shè)備類,最后是ProcessSystem類負(fù)責(zé)管理設(shè)備。

      2.SourceMontor分析結(jié)果:

      3.UML圖

      4.時(shí)序圖

      大作業(yè)6最后一題:

      1.源碼分析

      此次迭代基于上次的基礎(chǔ)上添加了并聯(lián)電路,以及新的受控設(shè)備,對(duì)于新的受控設(shè)備來說,改的不多,只是增加了一個(gè)新的類來繼承Fan,然后重寫了computeOutput()方法,計(jì)算風(fēng)扇的轉(zhuǎn)速。并且在處理設(shè)備的時(shí)候增加對(duì)于落地扇的操作即可。
      最主要的是新增的并聯(lián),思路也比較簡單,我是計(jì)算電阻分壓來做的,在并聯(lián)的類里,有
      private List< SeriesCircuit > seriesCircuits; 來存放串聯(lián)電路,通過computeOutput()計(jì)算分壓,然后再計(jì)算總電壓。
      另外,我把之前的設(shè)備里的comouteOutput()方法改成了compute(),因?yàn)楝F(xiàn)在同一以compute()來計(jì)算設(shè)備的各種參數(shù)值。comouteOutput()就主要用于處理電壓,以及電阻等了。

      2.SourceMontor分析結(jié)果:

      3.UML圖

      4.時(shí)序圖


      三、踩坑心得

      • 在大作業(yè)4的實(shí)現(xiàn)中,嘗試通過繼承關(guān)系來簡化多種題型的設(shè)計(jì)(如選擇題、填空題等)。雖然這種設(shè)計(jì)看起來符合面向?qū)ο蟮脑O(shè)計(jì)原則,但實(shí)際上并沒有充分利用繼承的優(yōu)勢,而是出現(xiàn)了“虛假的繼承”——多選題和填空題本質(zhì)上和單選題差別不大,繼承只是為了區(qū)分不同的題型。然而,這種設(shè)計(jì)使得代碼的可擴(kuò)展性變差,因?yàn)楹罄m(xù)若需要對(duì)新類型的題目進(jìn)行擴(kuò)展(如判斷對(duì)錯(cuò)規(guī)則),則不得不修改現(xiàn)有類。但是那一次我也只會(huì)這樣考慮了
      • 在大作業(yè)5和大作業(yè)6的電路模擬中,涉及到了設(shè)備之間的數(shù)據(jù)流和控制邏輯。尤其是在串聯(lián)和并聯(lián)電路的實(shí)現(xiàn)過程中,需要仔細(xì)設(shè)計(jì)每個(gè)設(shè)備的輸入輸出接口以及控制命令的解析。最初在設(shè)計(jì)控制命令的解析時(shí),難以保證命令的順序和格式的一致性,導(dǎo)致程序出錯(cuò)或行為不符合預(yù)期。
      • 電路模擬中的每個(gè)設(shè)備都有不同的計(jì)算邏輯,如電壓源、電壓控制器、負(fù)載設(shè)備等,而每個(gè)設(shè)備的輸出都可能受到其他設(shè)備的影響。調(diào)試時(shí)發(fā)現(xiàn)電路在某些情況下輸出不正常,往往是因?yàn)槟硞€(gè)設(shè)備的狀態(tài)或參數(shù)沒有正確傳遞。比如在串聯(lián)電路中,若一個(gè)開關(guān)狀態(tài)未被正確更新,可能導(dǎo)致電路中斷,輸出為零。在并聯(lián)電路中,之前沒有分開compute()和computeOutput(),導(dǎo)致在計(jì)算分壓的時(shí)候,沒有考慮到電阻的值,導(dǎo)致計(jì)算錯(cuò)誤。
      • 大作業(yè)6中,我實(shí)現(xiàn)了并聯(lián)電路的模擬。并聯(lián)電路的輸出電壓需要通過電阻分壓來計(jì)算,雖然思路清晰,但實(shí)際編碼時(shí),如何準(zhǔn)確模擬電流分流和電壓分配,尤其是在不同設(shè)備和電路組合時(shí),給我?guī)砹艘恍├Щ蟆F鸪?,我沒能很好地處理串聯(lián)電路和并聯(lián)電路之間的相互影響,導(dǎo)致某些情況下計(jì)算結(jié)果不準(zhǔn)確。

      四、改進(jìn)建議

      • 盡量避免為了繼承而繼承,特別是在子類和父類之間差異不大的情況下??梢钥紤]通過接口或者策略模式來提高代碼的靈活性和可維護(hù)性。
      • 對(duì)于大作業(yè)4的答題程序來說,應(yīng)該是進(jìn)一步優(yōu)化進(jìn)程的,可以增加屬性:答案的集合等信息,以便于判分。這樣相對(duì)于我的程序更加優(yōu)良
      • 對(duì)于大作業(yè)6來說,我的成績是94分的樣子,在今天走的時(shí)候想到,似乎有個(gè)地方?jīng)]有改掉,就是在sort中,沒有把A(落地扇)加上去,導(dǎo)致其實(shí)落地扇是沒有加入排序的。

      總結(jié)

      通過這次的大作業(yè),我不僅鞏固了面向?qū)ο蟮脑O(shè)計(jì)思維,也深入理解了如何將抽象的電路模型轉(zhuǎn)化為具體的代碼實(shí)現(xiàn)。從設(shè)計(jì)繼承關(guān)系到電路的模擬,每一部分都考驗(yàn)了我的編程能力和解決問題的思路。通過這次迭代,我收獲了很多實(shí)踐經(jīng)驗(yàn),也發(fā)現(xiàn)了自己的不足之處,特別是在如何設(shè)計(jì)靈活、可擴(kuò)展的系統(tǒng)方面。

      posted @ 2024-11-20 22:39  22207123-吳裕杰  閱讀(27)  評(píng)論(0)    收藏  舉報(bào)
      主站蜘蛛池模板: 亚洲精品一区二区天堂| 一区二区免费高清观看国产丝瓜| 少妇午夜福利一区二区三区 | 99久久国产综合精品女图图等你| 92精品国产自产在线观看481页| 人人妻人人澡人人爽| 欧美在线观看www| 久久综合色最新久久综合色| 日韩高清国产中文字幕| 丰满无码人妻热妇无码区| 国产精品一起草在线观看| 波多野结衣久久一区二区| 国产高清乱码又大又圆| 日本一区二区不卡精品| 遵义县| 久久se精品一区二区三区| 在线看免费无码的av天堂| 欧美人与动牲交a免费| 99久re热视频这里只有精品6| 诏安县| 国产精品成人综合色在线| 人妻少妇久久久久久97人妻| 日韩一本不卡一区二区三区| 国产成人高清亚洲综合| 国产卡一卡二卡三免费入口| 亚洲性图日本一区二区三区| 亚洲va韩国va欧美va| 成人午夜在线观看刺激| 欧美日韩综合网| 老司机亚洲精品一区二区| 亚洲国产精品一区第二页| 崇州市| 国产欧亚州美日韩综合区| 一本大道久久香蕉成人网| 国产午夜福利视频在线| 亚洲第一尤物视频在线观看导航| 天堂a无码a无线孕交| 麻豆一区二区中文字幕| 护士张开腿被奷日出白浆| 日韩精品一区二区在线看| 欧美无人区码suv|