Posts

Use the Linked List to write out the functions of the stack's Delete (Pop) for its class

Image
使用 Linked List 為 Stack 的類別寫出其 Delete(Pop) 的函式(Functions)   已知使用 Linked List 為 Stack 的類別(Class)宣告如下,請寫出其 Delete(Pop) 的函式(Functions)。(10 分) s x wt v y z u 1 1 1 1 1 1 110 10 10 10 10 10 template <class T> class Node { friend LinkedStack<T>; private : T data; Node<T> *link; }; template <class T> class LinkedStack { public : LinkedStack() {top = 0;} ~LinkedStack(); bool IsEmpty() const {return top == 0;} bool IsFull() const ; T Top() const ; LinkedStack<T>& Add(const T& x); LinkedStack<T>& Delete(T& x); private : Node<T> *top; // pointer to top node }; 以下是使用 Linked List 实现的 Stack 类的 Delete(Pop)函数的示例代码: ```cpp template <class T> LinkedStack<T>& LinkedStack<T>::Delete(T& x) {     if (IsEmpty()) {         cout << "Stack is empty. Cannot pop." << endl;         return *this;    ...

Cohesion and coupling in programmatic design

程式模組化設計的內聚力與耦合力   在程式模組化設計中,常以內聚力,耦合力來評量模組。 請定義內聚力(Cohesion)及耦合力(Coupling)。(10 分) 請 說 明 : 通 訊 內 聚 力 ( Communicational Cohesion ) 及 邏 輯 內 聚 力 ( Logical Cohesion)。(10 分) 請說明:資料耦合(Data Coupling)及內容耦合(Content Coupling)。(1 **內聚力(Cohesion)**是評量模組內部元素(例如函數、類別、過程)彼此之間相互關聯程度的概念。內聚力描述了一個模組內元素彼此相關的程度,其目標是確保模組的內部元素具有相關性,以便提高模組的可讀性、可維護性和可重用性。 內聚力: 評估模組內元素的相關性,確保其具相關性,以提高模組的唯讀蟲(維讀重) 耦合力: 評估模組間的相依或連接程度。低耦合相依低易修改維護。 **耦合力(Coupling)**是評量模組之間的相依性或連接程度的概念。耦合力描述了一個模組與其他模組之間的關聯程度,較低的耦合力通常表示模組間的相依性較低,模組可以更容易獨立地修改和維護。 在內聚力方面: 1. **通訊內聚力(Communicational Cohesion)**是指一個模組內的元素彼此相關,因為它們在執行某些通信或操作,例如,一個模組包含了所有與文件操作相關的功能。這種內聚力是基於元素之間的通信或互動。 2. **邏輯內聚力(Logical Cohesion)**是指一個模組內的元素彼此相關,因為它們在執行相似的邏輯操作。例如,一個模組內包含所有數學運算的功能,而不僅僅是特定類型的運算。這種內聚力是基於元素執行的邏輯操作的相似性。 在耦合力方面: 1. **資料耦合(Data Coupling)**是指兩個模組之間的耦合僅涉及數據交換。這表示兩個模組通常只通過參數或數據交換信息,而不依賴彼此的內部結構或算法。資料耦合力較低,模組之間的獨立性較高。 2. **內容耦合(Content Coupling)**是指兩個模組之間的耦合涉及訪問彼此的內部結構或內容,如變數、函數或類別。這使得兩個模組更加相依,因為它們需要了解對方的內部實現細節。內容耦合力較高,模組之間的獨立性較低。 內聚力和耦合力的良好平衡有助於建立易於維護和擴展的模組化系統。高內聚力...

Methods of black box testing

黑箱測試的方法   測試範例的設計是測試流程的一個關鍵步驟,按照測試範例的不同出發點,有一種 測試稱為黑箱測試。請從使用者、資料、程式觀點,說明何謂黑箱測試。請就常見 的黑箱測試方法提出三種方法做說明,並各舉一例說明之。(20 分) **黑箱測試**是一種軟體測試方法,測試人員專注於測試系統的功能和行為,而不需要深入瞭解系統的內部結構或程式碼。黑箱測試將系統視為一個封閉的「黑箱」,測試人員只關心系統的輸入和輸出,以確保系統按照預期的方式運作。 ### 常見的黑箱測試方法包括: 1. **等價類別測試(Equivalence Class Testing):** 在等價類別測試中,測試人員將輸入分為不同的等價類別,每個等價類別代表一個相似的輸入值集合。測試人員選擇代表每個等價類別的輸入值來測試系統,以確保系統對於每個等價類別都有相似的行為。例如,對於一個登錄系統,等價類別可以包括有效的用戶名、無效的用戶名、有效的密碼等。 2. **邊界值測試(Boundary Value Testing):** 在邊界值測試中,測試人員關注輸入的邊界條件,通常是極大值和極小值,以確保系統在這些邊界條件下能正確處理輸入。例如,對於一個接受 1 到 100 之間數字的系統,邊界值測試將包括 1 和 100 這兩個極端值。 3. **決策表測試(Decision Table Testing):** 決策表測試用於測試基於不同條件和規則的決策邏輯。測試人員創建一個決策表,列出各種可能的輸入條件和對應的預期結果,然後對每個組合進行測試。例如,一個訂單處理系統的決策表可以包含付款方式、訂單金額、交貨地址等條件,以確保不同組合下的訂單處理正確。 每種黑箱測試方法都有不同的應用場景,通常組合使用多種方法以確保充分的測試覆蓋率。這些方法的目標是確保系統對各種不同情況下的輸入都能正確處理,並產生預期的輸出。黑箱測試有助於確保系統的功能性和完整性,而不需要深入了解內部實珅和程式碼。

When the new system is completed, what documents need to be prepared by the developer for acceptance

新系統完成時,開發商需 要準備哪些文件以便驗收   長宮管理中心將原本使用多年的業務處理系統加以置換。新系統完成時,開發商需 要準備各式文件以便驗收。 請問您建議需要準備那些文件?(10 分) 這些文件的大致內容與主要使用者是誰?(15 分 在進行系統交付和驗收時,建議準備以下文件: ### 文件清單: 1. **系統需求規格書(System Requirements Specification):** 此文件應包括系統的功能需求、性能需求、安全需求等。主要使用者是系統開發商和驗收方。 2. **系統設計文件(System Design Documentation):** 這包括了系統的架構、結構和設計,包括類別圖、流程圖、數據庫結構等。主要使用者是系統開發商和驗收方。 3. **系統測試計劃(System Test Plan):** 這個文件應包括系統測試的範圍、策略、測試用例和測試數據。主要使用者是測試團隊和驗收方。 4. **使用手冊(User Manual):** 用於教導最終用戶如何使用系統,包括系統操作、功能說明和疑難解答。主要使用者是最終用戶。 5. **系統維護文檔(System Maintenance Documentation):** 這些文檔包括系統配置信息、維護程序、問題追蹤等,以協助維護人員管理系統。主要使用者是維護團隊。 6. **交付報告(Delivery Report):** 描述系統的交付情況,包括交付的版本、日期和任何特殊注意事項。主要使用者是開發商和驗收方。 7. **數據遷移計劃(Data Migration Plan):** 如果需要將現有數據遷移到新系統中,這個計劃應包括數據遷移策略、工具和流程。主要使用者是數據遷移團隊。 8. **安全性和隱私報告(Security and Privacy Report):** 如果系統處理敏感數據,這份報告應描述系統的安全措施和隱私政策。主要使用者是管理者和監管機構(如果適用)。 9. **性能報告(Performance Report):** 如果性能是關鍵指標,這份報告應包括系統的性能評估和優化建議。主要使用者是管理者和性能測試團隊。 10. **費用和時間報告(Cost and Time Report):** 描述開發過程中的成本和時間情況。主要使用者是管理者和財務部門。...

The basic concepts of object-orientation include: Object, Class, Encapsulation, Inheritance, Polymorphism, and Overload

  物件導向的基本概念包括:物件(Object)、類別(Class)、封裝(Encapsulation)、 繼承(Inheritance)、多型(Polymorphism)與超荷(Overload)等。 請說明何謂物件。(6 分) 請說明何謂類別。(6 分) 請說明何謂多型。(6 分) 請說明何謂超荷。(6 分) 請說明運用多型與超荷的目的。(4 分 物件導向的基本概念涵蓋了物件、類別、封裝、繼承、多型和超荷等要素。 1. **物件(Object):**    - 物件是物件導向程序設計的核心概念之一。物件是具體的實體,代表了系統中的一個個獨立的數據或實體,具有屬性(數據)和方法(操作)。物件可以代表現實世界中的任何事物,如汽車、人、帳戶等。物件是類別的實例。 2. **類別(Class):**    - 類別是定義物件的模板或藍圖,它包含了描述物件所應該擁有的屬性和方法。一個類別可以用來創建多個物件,這些物件將共享相同的屬性和方法,但可以包含不同的數據。類別是物件的抽象描述。 3. **多型(Polymorphism):**    - 多型是物件導向編程中的一個概念,它指的是一個對象可以表現出多種不同的行為。多型使得不同類別的物件可以對相同的方法名稱做出不同的響應。多型實現了代碼的靈活性和可擴展性,使得可以使用通用的接口處理不同的對象。 4. **超荷(Overload):**    - 超荷是一種多態性的實現,它指的是在同一類別中定義多個具有相同名稱但不同參數列表的方法。這允許根據傳遞給方法的參數的不同來調用不同的方法。編譯器將根據方法的參數列表選擇正確的方法來執行。 5. **運用多型與超荷的目的:**    - 多型和超荷的主要目的是實現代碼的可讀性、可維護性和可擴展性。通過多型,我們可以使用通用的介面來處理不同類別的物件,減少代碼的冗余,提高代碼的可重用性。超荷使得同一方法名稱可以有不同的實現,根據不同的參數列表,使得代碼更容易理解和使用。多型和超荷使得代碼更靈活,能夠適應不同的需求,並支持多態性和重用性。

Code fill-in-the-blank coupling with program modules

Image
程式碼填空與程式模組耦合性  敘述統計學上中位數和平均數均為數據資料的集中趨勢,中位數是將一 組數值資料由小到大排列,最中間的數值為中位數。若有奇數個資料, 則取最中間的數值為中位數,例如 1, 2, 3, 3, 4, 6, 7, 7, 21 的中位數是 4; 若有偶數個資料,則取最中間兩個數值的平均為中位數,例如 1, 2, 3, 3, 4, 6, 7, 7, 8, 21 的中位數是(4+6)/2=5。算術平均數是將一組數值加總, 除以這組數值的個數,例如 1, 2, 3, 3, 4, 6, 7, 7, 21 的算術平均數=54/9=6。 以下 C++程式輸出:4, 6, 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 #include <iostream> #include <algorithm> using namespace std; class Compute{ public: void setData(int *, int); (I) =0; protected: int *data, d_size; }; class ComputeMedian: public Compute{ public: double getNum(); }; class ComputeMean: public Compute{ public: double getNum(); }; void Compute::setData(int *d, int s){ data = d; d_size = s; sort(data, data+d_size); } double ComputeMedian::getNum(){ if ( (II) ==1) return data[d_size/2]; else return (data[ (III) ]+data[1+d_size/2])/2.0; } double ComputeMean::getNum(...