這個作業要大家寫的程式的應用對象應該不算太陌生, 像是百視達或是亞藝影音這些連鎖店大家都很熟悉, 大家除了很少看到 VHS 錄影帶之外, VCD, DVD, 和 BD 的影音光碟片都是生活必備的東西, 所以大家一定都能夠想像程式的基本要求, 也一定有很多點子可以發揮。在這個作業裡希望大家能夠以物件化的方式、 在應用程式領域 (application domain) 裡以實際看到、接觸到的物件來設計程式的架構, 並且在這個架構上設計程式的各種功能。 在這個程式裡有很多物件的觀念需要大家去練習, 請盡量跳脫你原來設計 C 程式時 top-down 的功能分解方式, 從刻劃物件系統裡各個物件的基本型態、 描述物件間的界面、 與物件系統的組成開始著手吧。
基本上這個作業應用在一個碟片的出租連鎖店, 它在全省各大都市有多家營業據點。每一個據點的基本資料包括城市、店名 (例如台北仁愛店)、 電話、傳真、地址、網址、統一編號、負責人等等。
每一家店裡都詳細記錄店內可供出租商品, 包括影帶、VCD、DVD和 BD等等不同的貨品、 每一個商品基本資料包括影片標題、第幾片、 出片商、演員/表演者、序號、出片年月、租售價格 (以星期計算或是以日計算)、 商品原價值、商品折舊率、商品上架日期、商品存放位置、 內容分類 (愛情文藝、冒險動作、奇幻科幻、驚悚恐怖、幽默喜劇、溫馨小品)、 內容摘要說明...
每一家店裡都有自己招募的會員, 每一個會員的基本資料包括會員編號、姓名、住址、聯絡電話、email、 累計剩餘會費、碟片租借記錄等等。
例如:你有一個 VideoTitle 的類別, 這樣的物件裡面負責維護著 private 的碟片標題的資料, 如果你在設計程式的時候希望替 VideoTitle 類別定義一個介面叫做 char *getTitle() 的成員函式, 請稍後, 你應該可以再進一步想一下, 為什麼你需要這個函式呢? 比方說你希望拿到碟片標題然後列印在螢幕上, 那麼你可以考慮替 VideoTitle 類別定一個介面叫做 printOnScreen(ostream &out), 如此你就不需要把 VideoTitle 自己管理的資料丟到物件外面了, 這樣的情況也會發生在類別資料存檔/讀檔的時候...
回
C++ 程式設計課程
首頁
製作日期: 05/02/2011
by 丁培毅 (Pei-yih Ting)
E-mail: pyting@cs.ntou.edu.tw
TEL: 02 24622192x6615
國立台灣海洋大學
電機資訊學院
資訊工程系
Lagoon