Java 程式設計()  第 五章 物件變數與物件陣列  上一頁    下一頁

 

5-3 物件的傳統運用

內容:

  • 5-3-1 範例研討:規劃員工薪資資料

  • 5-3-2 範例研討:薪資扣繳所得稅

  • 5-3-3 自我挑戰:產生商品資料

5-3-1 範例研討:規劃員工薪資資料

A程式功能:Ex5_1.java

『志明電器公司』希望建立電子化企業管理系統,人事部門所需的薪資管理子系統,需要規劃員工薪資資料,其中包含有:員工代號、姓名、部門、底薪與職務加級。請設計相關資料型態,並測試輸入/輸出結果,期望操作介面如下:

D:\Java2_book\chap5\Ex5_1>javac Ex5_1.java

 

D:\Java2_book\chap5\Ex5_1>dir/b

Employee.class                            // Employee 類別

Ex5_1.class                             //Ex5_1 類別

Ex5_1.java

 

D:\Java2_book\chap5\Ex5_1>java Ex5_1

***** 輸入員工資料 *****

輸入員工姓名 =>張大名

輸入員工所屬部門 =>資訊部

輸入員工代號 =>430

輸入員工底薪 =>25000

輸入薪資加級 =>12000

 

***** 印出員工資料 *****

員工代號 = 430

員工姓名 = 張大名

所屬部門 = 資訊部

    = 25000

職務加級 = 12000

備註:Ex5_1.java 經由 javac 編譯後,產生兩只中介檔案(Bytecode)檔案,一則由 class Employee{ …} 程式區塊所產生的 Employee.class 檔案;另一則由 class Ex5_1 {….} 區塊所產生的 Ex5_1.class 檔案。

B製作技巧研討:

當利用物件變數描述真實現象,最困擾的是應具有哪些變數成員,才能夠明確的表示該『實體』的屬性。其實,採用多少或選用哪些變數成員,並沒有一定的規範,重點是應用系統裡需要處理哪些資料,或實體之間需要哪些資料才能辨識。『志明電器公司』員工應該具有哪些資料呢?首先須思考哪些資料可以辨識不同員工,假設每一員工都有唯一的員工代號,就可以用來區分每一位員工之間的不同點。另一方面,需合乎該員工資料是要提供給哪種系統使用,假設是薪資管理系統,則可能需要登錄員工的底薪、職務加級、以及加班時數等等。因此,吾人必須利用一個類別(Employee)來描述員工薪資資料,主程式再利用它產生員工物件,也利用所產生的員工物件,儲存某位員工(emp)各種屬性的數值,如圖 5-8 所示。

5-8 利用 Employee 類別產生員工物件

C程式範例

5-9 Ex5-1 程式架構

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

//Ex5_1.java

/* 請建立一套電子化企業管理系統,

   其中包含:員工代號、姓名、部門、底薪與職務加級 */

 

import java.util.*;

/* 宣告類別 */

class Employee {

     int ID;          //員工代號

     String name;     // 員工姓名

     String depart;   // 服務部門

     int payment;     // 底薪

     int duty;        // 職務加級

}

public class Ex5_1{

    public static void main(String args[]) {

        Scanner keyin = new Scanner(System.in);

 

        /* new 產生物件變數 */

        Employee emp = new Employee();

        System.out.printf("***** 輸入員工資料 *****\n");

        System.out.printf("輸入員工姓名 =>");

        emp.name = keyin.nextLine();

        System.out.printf("輸入員工所屬部門 =>");

        emp.depart = keyin.nextLine();

        System.out.printf("輸入員工代號 =>");

        emp.ID = keyin.nextInt();

        System.out.printf("輸入員工底薪 =>");

        emp.payment = keyin.nextInt();

        System.out.printf("輸入薪資加級 =>");

        emp.duty = keyin.nextInt();

      

        System.out.printf("\n***** 印出員工資料 *****\n");

        System.out.printf("員工代號 = %d\n", emp.ID);

        System.out.printf("員工姓名 = %s\n", emp.name);

        System.out.printf("所屬部門 = %s\n", emp.depart);

        System.out.printf("    = %d\n", emp.payment);

        System.out.printf("職務加級 = %d\n", emp.duty);

    }

}

D程式重點分析:

(1) 5~11 :『class Employee { ….}』。宣告所欲產生物件變數的類別,該程式區塊會獨立產生 Employee.class 檔案,也可讓其他程式引用。

(2) 12~40 :『class Ex5_1 { …}』。主類別程式區塊,經由 javac 編譯後,會獨立產生 Ex5_1.class 檔案。

(3) 19 :『Employee emp = new Employee();』。利用 Employee 類別宣告產生 emp 物件變數,並產生 Employee 物件(new Employee())填入其中。該行敘述欲執行有效,必須 Employee.class(類別檔案)是在同一目錄底下,不然就需利用 import 命令指定位於哪一個目錄下並導入。

(4) 21~ 31 :鍵盤輸入填入 emp.IDemp.nameemp.depart...等變數成員內。

(5) 34~39 :螢幕輸出 emp.IDemp.nameemp.depart...等變數成員內。

5-3-2 範例研討:薪資扣繳所得稅

A 程式功能:Ex5_2.java

『志明電器公司』會計部門需要計算幫每位同仁預扣所得稅,稅額是總領薪資的 10%,請製作一套薪資扣繳所得稅系統,期望操作介面如下:

D:\Java2_book\chap5\Ex5_1>javac Ex5_2.java

 

D:\Java2_book\chap5\Ex5_1>dir/b

Employee.class

Ex5_1.class

Ex5_1.java

Ex5_2.class

Ex5_2.java

 

D:\Java2_book\chap5\Ex5_1>java Ex5_2

 

***** 列印員工稅額 *****

員工代號= 43210 姓名= 張大名 部門= 製造部 薪資= 65000 預扣稅額= 6500

備註:Employee.class 類別可與其他程式共用。

B製作技巧研討:

吾人利用原來薪資管理系統所建立的 Employee.class 類別,再來製作薪資扣繳所得稅系統。於同一電子化企業系統內,使用相同型態的物件變數,資料較能保持一致性,但類別檔案必須存放於相同目錄下,否則必須用 import 導入。

C程式範例:

01

02

03

04

05

06

07

08

09

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

//Ex5_2.java

 

/*  Employee.class 檔案需存在於同目錄下 */

public class Ex5_2 {

    public static void main(String args[]){

        int tax;

        /* new 產生物件變數 */

        Employee emp = new Employee();

        emp.name = "張大名";

        emp.depart = "製造部";

        emp.ID = 43210;

        emp.payment = 50000;

        emp.duty = 15000;

      

        System.out.printf("\n***** 列印員工稅額 *****\n");

        System.out.printf("員工代號= %d ", emp.ID);

        System.out.printf("姓名= %s ", emp.name);

        System.out.printf("部門= %s ", emp.depart);

        System.out.printf("薪資= %d ", emp.payment+emp.duty);

        tax = (int)((emp.payment+emp.duty)*0.1);

        System.out.printf("預扣稅額= %d\n", tax);

    }

}

D程式重點說明:

(1) 7 :『Employee emp = new Employee();』。利用 Employee.class 類別宣告產生 emp 物件變數。

5-3-3 自我挑戰:產生商品資料

A程式功能:PM5_1.java

請您幫『春嬌生鮮超市』建立商品資料登錄系統,為了配合倉庫管理系統、銷售管理系統、會計管理系統使用,每一商品必需登錄有:編號(String)、名稱(String)、單價(int)、庫存量(int)、單位(String)、製造商(String)、安全庫存量(int)。請編寫一系統,讓管理員可登錄商品資料,登錄後再由螢幕顯出結果。期望操作介面如下:

D:\Java2_book\chap5\PM5_1>javac PM5_1.java

 

D:\Java2_book\chap5\PM5_1>dir/b

Article.class

PM5_1.class

PM5_1.java

 

D:\Java2_book\chap5\PM5_1>java PM5_1

***** 輸入商品資料 *****

請輸入商品編號 =>A10134

請輸入商品名稱 =>肉燥麵

請輸入單價 =>20

請輸入庫存量 =>200

請輸入安全庫存量 =>50

請輸入單位 =>

請輸入製造商 =>統一食品股份有限公司

 

***** 印出商品資料 *****

商品編號 = A10134

商品名稱 = 肉燥麵

    = 20

= 200

安全庫存量 = 50

    =

= 統一食品股份有限公司

B製作技巧提示:

將所欲規描述商品的『屬性』規劃成類別,再利用它產生物件變數,如圖 5-9 所示。接著,輸入商品各種屬性的內容,再將物件變數內容印出即可。虛擬碼提示如下:

5-11 利用 Article 類別產生商品物件

程式架構如圖 5-11 所示。

5-12 PM5_1 程式架構圖

/* 宣告產品類別 */

class Article {

     String ID;         // 產品編號

     String name;       // 產品名稱

     int price;          // 單價

     int storage;        // 庫存量

     int safetyStock;    // 安全庫存量

     String unit;        // 單位

     String maker;       // 製造商

}

….

/* 宣告產生物件變數 */

Article goods = new Article();

輸入商品資料並填入物件的變數成員內;

輸出顯示物件的變數成員;

 

翻轉工作室:粘添壽

 

Java 程式設計(二) 含物件導向

 

 

翻轉電子書系列: