(抽像類別Abstract class)

在介面中我們可以定義方法的名稱與傳入、傳出的型態,但不去實作當中的邏輯。抽像類別與介面不同之處在於,抽像類別可以同時包含抽像的方法,與己實作的法方。在抽像類別中我們可以同時定議許多的抽像方法Abstract method(如同介面並實作其中的邏輯),但也可以包含其他己經具有邏輯實作的方法。 簡單的說我們可以把抽像類別看成一個完成一半的程式,另一半未完成的部份我們只明確定義了操的介面,實作部份則交由其他的類別去完成。我們將上節中的Student範例改寫成Abstract類別:

package com.ittraining.example;

在上述的範例中,我們將printData方法宣告成抽像方法(Abstract Method),並將實作的內容去除掉。接著我們在撰寫另一個類別繼承Student類別,並對printData抽像方法進行實作。

package com.ittraining.example;

使用Abstract設計可以讓你的程式架構更好,更具彈性,我們可以將程式的主架構撰寫好,而部份的實作細節可以切開由其他不同的類別去進行實作,如此當程式的功能有需要變動時,我們只需重新撰寫一套新的實作類別,便可直接擴充程式的功能,而無需回過頭去將整套程式改寫.事實上,上述的例子即是一個Template Method的Pattern,使用抽象類別與方法來實作Template Method 模式,在很多應用場合都可以見到。

    • 練習題目: 簡易購物車系統,設計一套簡易的購物車系統。管理人員可以上架商品,顧客可以購買指定商品,商品可以向製造商進貨,並會依進貨的價格與預期要賺的利潤自動為商品制定售價。最後收銀員會依顧客購買的商品進行結帳。而每天可以利用結帳機統計出整個商品的總收入,與每個收銀員的個人績效(為公司賺進多少利潤)。
    • 功能定義:
      • 管理者可得知目前架上的商品項目還有那些,與每個商品的購買數量
      • 賣場有許多不同的收銀機與員工,必須要能各別統計每位員工今日的營業額與結帳的商品項目清單
      • 商場可以選擇向製造商進貨,進貨的商品種類與價格都會有所不同,並會自動依照預計要賺的毛利去決定終端售價。
      • 最後必須能夠統計加總所有員工今日的營收,並計算出每位員工的業績排行榜。
    • 主要練習目標:

由於員工的總會來來去去,架上的商品也會不斷的有所變更。因此必須利用物件導向技巧將員工與商品給抽像化,以提供倉庫與收銀機一致的操作介面。

    • 實作方式:
      • 定義商品抽像介面
      • 實作一商品製造工廠,負責產出許多不同的商品實作類別
      • 實作一個商場,商場上可上架從製造工廠補進的商品。
      • 定義員工抽像介面
      • 實作不同的員工類別
      • 定義收銀機抽像介面
      • 實作收銀機類別,負責結合員工與商品之間的對應關係.
      • 撰寫一主程式,運用上述的物件進行功能測試

Android 產訓專班 – Java課程

作者: Jarey
課程: 第三堂 物件導向思維與重構
內容: 1.軟體功能的分割與組合