# hw03 report ## 組員名單 : 紀軒宇、王芷鈴、楊昊翰、張凱博 ## How to run it - 環境 - Python 3.11.3 - 步驟 - 在程式所在處(hw3/Code)打開 cmd(Windows)/terminal(macOS) - 輸入 ```python hw3.py``` - 如果想要有隨機的輸出結果,可以在 `hw3.py` 中 line 5 將 random.seed() 中的數字設為 None -  ## Design & UML 我們的程式主要在模擬一個 VideoStore 的運作,主要的 class 及之間的關係如下 ### 主要類別 - VideoStoreSimulator - 這個 class 主要負責模擬 VideoStore 的運作,可以設定指定數量的隨機 Customer 及 Video,模擬指定天數的營業狀況,並產生模擬報告,VideoStoreSimulator使用 CustomerFactory 及 VideoFactory 創造隨機的 Customer 及 Video 作為 VideoStore 的內部屬性 - VideoFactory - 這個 class 負責依據傳入的參數內容產生不同類型的 Video 物件,各 Video 物件會在下方說明 - Video - 這個類別負責一個影片的相關行為,如計價及回傳分類的功能 - 這個類別有一些 abstract method 並強制繼承此類別的 subclass 實做這些 method - 在系統中繼承此類別的子類別如下: 「NewReleaseVideo」, 「DramaVideo」, 「ComedyVideo」, 「RomanceVideo」, 「HorrorVideo」 - 這些子類別繼承自 Video 並 override 其中的一些 method,讓這些子類別可以用多型的方式做呼叫,並產生不同的行為 - CustomerFactory - 這個 class 負責依據傳入的參數內容產生不同類型的 Video 物件,各 Video 物件會在下方說明 - Customer - 這個類別負責一個顧客在 VideoStore 的行為,比如租/還影片、選擇租借影片及天數等 - 這個類別有一些 abstract method 並強制繼承此類別的 subclass 實做這些 method - 在系統中繼承此類別的子類別如下: 「BreezyCustomer」, 「HoarderCustomer」, 「RegularCustomer」 - 這些子類別繼承自 Customer 並 override 其中的一些 method,讓這些子類別可以用多型的方式做呼叫,並產生不同的行為 - Rental - 這個 class 負責記錄各筆租借紀錄相關行為,比如判斷是否租借已到期,每晚將剩餘天數減少等 - VideoStore - 這個 class 主要負責管理店的營業相關行為,比如加入新影片/顧客、店的租/還片等操作 ### 關係 如 UML 所示,可見 hw3\hw3_uml.drawio.png ### UML 
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up