高階軟體工程(CSSEE7023)課業1——2024年第1學期資訊科學技術學院昆士蘭大學截止日期:3月28日16:00 AEST一個人必須透過做事情來學習;因為儘管你認為你
要知道,在你嘗試之前,你沒有把握。--索福克勒斯不要分發。修訂版1.0.0概述本任務提供了基於所提供規範開發Java專案的實踐經驗。該規範以JavaDocs的形式提供,它描述了你的任務必須執行。將對您的能力進行評估
•實施符合規範的程式,
•並開發符合課程風格慣例的程式碼。
任務電子表格應用程式是功能強大的程式,可以將資料和公式結合起來執行計算。在本課業中,您將實現SheeP(圖紙處理器),一個電子表格應用程式。羊類似於Google Sheets或Microsoft Excel。它由一個單元格網格組成,每個單元格都包含任一資料或公式。公式可以引用網格中的其他單元格來使用它們的值。公式評估為
為單元格生成一個值。只要單元格引用的任何單元格中的資料或公式發生更改,就會更新單元格。常見錯誤請仔細閱讀附錄A。它概述了您所犯的常見和關鍵錯誤
必須避免標記丟失。如果您在任何時候都有點不確定,請儘快檢查與課程工作人員一起可能。抄襲本課業的所有工作都是您自己的個人作品。透過提交課業你聲稱這完全是你自己的工作。你可以討論應用程式的總體設計與其他學生一起學習。描述你如何與另一名學生一起實施你的設計的細節是值得考慮的是串通,將被視為剽竊。不能複製你在網際網路上找到的程式碼片段用於你的課業。提供的程式碼由課程工作人員(從本學期開始)是可以接受的,但必須在下一節中明確承認
段落
你可以透過外部資源(如StackOverflow、課本等)找到如何解決課業中問題的想法。如果你在設計解決方案時使用這些想法,你必須引用它們。引用一種資源,在名為refs.md的檔案中提供資源的完整書目參考。refs.md檔案必須位於專案的根資料夾。例如
1>目錄參考.md
2[1]E.W.Dijkstra,“轉到被認為有害的宣告”,ACM_的通訊,
3第11卷第3期,第147-148頁,1968年3月。訪問時間:2024年3月6日。線上的可獲得的
5[2]B.Liskov和J.V.Guttag,Java中的程式開發:抽象,
6規範和麵向物件設計。波士頓:艾迪森•韋斯利,2001年。
7[3]T.Hawtin,“字串串聯:concat()vs'+'運算子”,stackoverflow.com,
2008年9月6日。訪問時間:2024年3月8日。可獲得的
9https://stackoverflow.com/questions/47605/string-concatenation-concat-vs-operator
10 >在使用該想法的程式碼中,在註釋中引用引用。例如
6公共無效方法1()。。。
8.
9*方法2的作用。
10 */
11公共無效方法2(){
12 System.out.println(“Some”+“content.”)//[3]使用+運算子的字串串聯。
13 }
如果您對什麼是可接受的有疑問,請詢問課程工作人員。生成人工智慧您需要自己實施解決方案,而無需使用生成人工智慧(AI)工具(如ChatGPT或Copilot)。這是一個學習練習如果你不恰當地使用人工智慧工具,你將損害你的學習。記住,您將被要求編寫程式碼,在期末考試中用手。
規格規範檔案以JavaDocs的形式提供。
◦ 按照JavaDocs中的描述實現類和介面。
◦ 在程式設計之前,請仔細閱讀JavaDocs並理解規範。
◦ 不要以任何方式更改公共規範,包括更改的名稱或新增其他,公共類、介面、方法或欄位。
◦ 我們鼓勵您新增您認為合適的其他私有成員、類或介面。您可以從BlackBoard下載JavaDoc規範(評估→ Assignment One)或訪問下面的連結。要開始,請從BlackBoard下載提供的程式碼(評估→ 課業一)。此存檔包括GUI元件的程式碼。提取目錄中的存檔,並使用IntelliJ開啟它。
任務
實現JavaDoc規範中描述的每個類和介面。圖1:課業1的規範的類圖。專案概況這個包包含電子表格模型和使用者介面之間的介面。
SheetView介面的實現告訴介面如何呈現電子表格並透過ViewElement物件傳遞這些資訊。
SheetUpdate介面的實現處理使用者對電子表格的更新,並提供
透過UpdateResponse物件更新的結果。
sheet.sheets此包包含SheetView和SheetUpdate介面的實現以及其他支援類。它主要實現三種不同型別的電子表格:FixedSheet、DisplaySheet、,
和Sheet。
sheer.expression在電子表格中,特定單元格的值由表示式表示。這包儲存所有表示式必須實現的表示式介面。表示式是透過實現ExpressionFactory介面的表示式工廠構建的,例如CoreFactory。程式包還儲存相關的例外情況。代 寫CSSEE7023heer.expression.basic這個包儲存核心的表示式實現,即空單元格Nothing,
常數值constant和對另一個單元格reference的引用。sheer.expression.athmetic算術表示式包含在這個包中。所有算術表示式都是抽象類“算術”的子類。語法分析器接受字串輸入並構造適當的表示式。例如,給定字串“5”,解析器將構造表示5的Constant表示式的例項。所有解析器都實現了Parser介面。如果解析器無法解析字串,則ParseException為丟擲。sheer.fun提供了預載入帶有測試資料的電子表格的類,例如使用斐波那契類。sheer.ui提供了使用者介面的實現。
階段
任何合理大小或複雜程度的軟體都應分階段開發。這種技術被稱為增量發展它允許您確定您的邏輯方法是否有效,並且您可以實現工作解決方案。在專業軟體開發中,它允許您在開發過程中獲得客戶的反饋系統。這與花數月或數年時間開發整個系統的“大爆炸”方法形成了鮮明對比,然後把它展示給客戶,發現它沒有達到他們想要的效果。任務被分解為多個階段,以鼓勵增量開發。你應該完成每一個在進入下一階段之前。提供的Main類允許您透過以下方式單獨執行每個階段取消註釋main方法中相應的行。圖1突出顯示了將要實現的類在每個階段中:綠色表示階段0,藍色表示階段1,黃色表示階段2,紫色表示提供的程式碼。在每個階段,確保徹底測試您的實現。階段0建立一個簡單的電子表格FixedSheet實現。FixedSheet類必須是在sheet.sheets包裝內,執行sheet.core。SheetView和綿羊網。Sheep更新介面。在實現FixedSheet類並取消註釋main中相應的行之後方法,程式在執行時應顯示如下。階段1在電子表格中實現基本型別的表示式:常數值、對的引用其他細胞和空細胞。建立一個表示式工廠來建立這些表示式,並建立一個解析器來解析字串中的表示式。最後建立DisplaySheet來顯示這些表示式的結果。什麼時候主方法中適當的行被註釋掉,當執行。第2階段完成表示式的實現,包括算術運算。您的解析器和表示式工廠應該能夠解析和建立這些表示式。建立完整的工作表實現時,此工作表應在其他單元格發生更改時適當更單元格。當適當的線路在主方法中被註釋掉,程式執行時應顯示如下。
分級
在對您的提交進行評分時,將考慮您的解決方案的三個方面。這些都是自動化的功能樣式檢查和人類可讀的樣式。功能每個類都有許多與之相關的單元測試。你的功能評分是基於取決於你透過單元測試的百分比。類的權重可能會因其複雜性而有所不同。©昆士蘭大學2024第5頁
樣式檢查您的自動樣式檢查分數基於樣式的百分比Checkstyle工具1識別的違規行為。同一型別的多個樣式衝突將分別計算在內在計算樣式衝突的百分比時。注意:IntelliJ有一個外掛,可以突出顯示程式碼中的樣式衝突。新增錯誤),請聯絡課程協調員(csse7023@uq.edu.au)請求對此進行修復。對於所有其他情況,請參閱下頁瞭解更多資訊。https://uq.mu/rl552更改日誌修訂版:1.0.0如果有必要更正或澄清任務表或JavaDoc,將釋出一個新版本公告將在課程黑板網站上釋出。所有更改都將列在任務的此部分中床單關鍵錯誤你必須避免的事情一點在這裡得到了高度強調,因為這些都是必須避免的重大錯誤。在IntelliJ中,程式碼可能在您自己的計算機上本地執行良好,但它也需要構建和執行當使用成績儀中的電子標記工具進行標記時,正確無誤。您的解決方案需要符合發生這種情況的規範。
•檔案必須(準確地)位於JavaDoc指定的正確目錄中。如果檔案不正確目錄(甚至稍有錯誤),您可能會因為實現不符合規範而丟失這些檔案中的功能標記。
•檔案必須在每個檔案的頂部有正確的包宣告。如果檔案的包不正確宣告(即使是稍微錯誤的,例如不正確的大寫),您可能會丟失功能標記在這些檔案中,因為實現不符合規範。
•您必須完全按照提供的文件中的描述實現公共成員和受保護成員(沒有額外的公共/受保護成員或類)。在中建立公共或受保護的資料成員類時,將導致標記丟失,因為實現不符合規範。
◦ 我們鼓勵您建立您認為合適的私人成員,以實現所需的功能或者改進解決方案的設計。
•不要匯入org.unit.jupiter.api包。這來自JUnit 5,可能會導致我們的JUnit測試失敗。
•在編寫解決方案時,不要使用除21以外的任何Java版本。如果您不小心使用了Java在21歲以上的版本中不同的功能,則您提交的檔案可能無法透過功能測試。如果
如果您不小心使用了Java功能,而這些功能僅存在於21以上的版本中,那麼您的提交可能無法編譯。