首頁‎ > ‎電子期刊‎ > ‎2005 年 第 7 期‎ > ‎

排課系統解析-物件導向程式設計案例研究(二)

摘要

  • 文章編號:20050403
  • 投稿日期:2005/03/25
  • 作者:董世尊、徐志祥、施志樹、何建良、吳致中
  • 備註:


利用電腦排課是我們用來節省人工排課時間的方法,而該如何設計出程式,則是我們該思考的問題。現今來說,最熱門的莫過於物件導向技術(Object Orientated Paradigm),這技術是一種觀點,比較像是人對物體看法以及如何解決問題的方法。而我們可以利用物件導向技術在排課系統上的發展加以應用並享用它的 便利性。

所謂的物件導向就是將程式模組化及規格化。軟體在發展過程中,如果使用物件導向技術的話,就像組裝一部個人電腦(PC)一樣,選擇自己所需 的零(組)件,去組成一部適合自己的電腦。而零件就是物件導向技術裡所謂的物件(Object),利用物件來開發軟體的方法(Method)就是物件導向 程式設計。而設計方法是依照人類的方法和思維來分析解決問題,著重在資料結構和意義上,以及資料之間的相互操作。如果軟體設計能完全達到此境界,就能快速 地、正確地開發出符合使用者需求的軟體系統。

所有的物件導向程式設計語言都提供有三個重要的特性,它們分別是封裝(Encapsulation)、繼承(Inheritance)及多型(Polymorphism)。底下將介紹這三個特性的觀念:

1.封裝:

資料封裝是將程式碼與其所處理的資料緊密結合,並保護兩方面在外部介面的安全與防止誤用的機制。封裝可以想成是受保護的封包以防範程式碼或 資料被其他定義在封包外的程式碼任意地存取。存取封包內的程式碼和資料是由定義完整的介面來嚴格控制。簡單講,資料封裝就是將資料分成私用 (Private)、保護(Protected)、公用(Pubic)等,達到資料保密的目的。

2.繼承:

繼承是一個物件得到另一個物件特性的過程。這點非常重要,因為它支援了階層式分類的觀念。大部份的知識是以階層式(也就是由上而下)的分類 法而可管理。例如,獵犬在分類中屬於狗的一種,換句話說也是哺乳類的一種,而哺乳類是隸屬於一個更大的類別動物之下。如果沒有階層,每個物件就必須明確地 定義自己所有的特性。但是,利用繼承,物件只需要定義那些在它的類別中特有的屬性。它可以從它的父層繼承共有的屬性。因此,是繼承這個機制才能讓一個物件 成為一個較一般性案例中的特例。繼承也會與封裝相互作用。如果一個類別封裝了每些屬性,任何子類別就會有相同的屬性再加上另外它特有的部份。這是讓物件導 向程式的複雜度成線性成長而非幾何成長的關鍵觀念。一個新的子類別繼承其所有前代的所有屬性。它不會與系統中其他大多數的程式碼有無法預期的交互影響。

3.多型

多型是一個讓單一介面用在一般性動作的功能。特定的工作取決於狀況的實際性質。更具體的說,多型的概念常以一句話來解釋:「一個介面,多個 方法」。這代表有可能可以設計一個通用的介面給一組相關動作。這因為讓相同的介面用於指定一般的分類而降低複雜度有幫助。選擇特定的動作(也就是方法)應 用於各種情況是編譯器的工作。身為程式設計師的你,不需要手動去選擇。你只需要記住和應用通用的介面即可。

物件導向的概念也可以運用到排課的問題,我們可以將排課所需的因素,視為個別的物件,利用各物件之間的關係,來推導出所需的課表。而我們幾個重要的物件包括:

  1. 教師時間:教師的意願的時間、兼任校內行政業的時間等。
  2. 排課時間:每週五天、每天八小時。
  3. 教學設備:各班教室、教學特殊設備、專任教室等。
  4. 課 程:共同科目及專業科目。

一個基本的課表至少需要這四項資料,才可滿足排課的基本條件。

排課物件的彈性運用,我們透過排課條件中教師時間、排課時間、教學設備及課程等四項可以做各種不同的線性排列方式如下:

  1. 課程→排課時間→老師時間→教學設備的排列,適用於學習效果為優先考量,老師與設備充足的學校。
  2. 老師時間→課程→排課時間→教學設備的排列,適用於教師人數較不充足的學校。
  3. 教學設備→老師時間→排課時間→課程則適用於教學設備不充足的學校。

以此類推…。

學校可以依照師生的比例、資源設備的多寡,進行適當的調整。此外更可在課程、排課時間、老師時間三者中以權重加強在應用上的彈性變更,有利於發展出最適合的排課規則,以符合各學校不同的需求。 接下來就可依照上述所訂出的規則來設計程式,由於是使用物件導向程式設計的理念,在開發程式的時候,對於物件的觀念即可運用在程式中,不需再對物件作重新定義,再依照規則來訂出排課的方法,如此可以節省開發程式的時間,這也是利用物件導向最大的好處。

Comments