3 物件(Object)

3.1 物件的建構

儲存:
    String Greeting =  "Hello";
運算:
    String s = Greeting.substring(0,4);
每一物件必須屬於某一類別(class)。

類別 : 可由用者定的資料型式。

例如,造一類別為 Time 的物件 millennium,千禧年元旦:

        Time millennium = new Time(2000, 1,1,0,0,0);

此例中, new 用以創造一個新物件。 Time(...) 是類別 Time 的建構器(constructor), 用以設定物件的初值,初值列在括弧中,共有六個,分別表示年、月、日、時、分、秒。

注意:建構器的名稱和類別相同(此例名稱都是Time)。

        Time now = new Time();

Time() 沒有參數,是類別預設的建構器,其參數初值採用預設值。

3.2 物件的使用

處理物件內儲的資料,可用物件提供的方法:
    object.function(parameters)
例如,
    now.addSeconds(1000);

讀取儲存在物件中的現值,則用方法 getXXX(), XXX 為物件內儲的資料名稱,Time 有 Year, Month, Day, Hours, Minutes, 和 Seconds 六項。

例如,Time 有

    getSeconds()
    getMinutes()
    getHours()
    getDay()
    getMonth()
    getYear()
例題:
  1. millennium : 類別 Time 的個例(instance)
    Time1.java
  2. millennium 離今天多久
    Time2.java

此二例用到類別 Time。 課本中很多例題必須使用package ccj 中的類別。 假設package ccj 安裝在目錄 C:\java\cs1,則必須在 C:\autoexec.bat 的 CLASSPATH 中加入, 如:
    SET CLASSPATH = %CLASSPATH%;C:\JAVA\CS1 
package ccj 的安裝說明,在 install.htm

3.3 實用的物件

例題:EmployeeTest.java
此例利用 ccj 中的類別 Employee。 Employee 是用者界定的類別,內儲員工的資料有 name 和 salary 兩項。 主要的 implementation 如下:

    public class Employee
	{
	   public Employee(String n, double s) { // constructor
	       name = n; 
	       salary = s; 
	   }

	   public Employee() {                   // default constructor 
	       name = ""; 
	       salary = 0; 
	   }

	   public String getName() { return name; }

	   public double getSalary() { return salary; }

	   public void setSalary(double s) { salary = s; }

	   ...

	   private String name;           // data
	   private double salary;         // data
	}

3.4 顯示圖形

  Input Output Usage
Console Application keyboard text standalone
Graphics Applet keyboard/mouse graphical need browser/viewer

文字模式的程式基本架構:

    public class MyProg {
        public static void main(String[] args) {
            your code goes here
        }
圖形模式的程式,可用小程式的方式,其基本架構:
    public class MyProg extends GraphicsApplet {
        public void run() {
            your code goes here
        }
GraphicsApplet 是屬於類別 Applet,提供寫圖形程式所需的基本架構,是 ccj 中的一個類別。 顯示小程式的結果時,必須另編一HTML檔(例如 HelloWeb.html), 說明小程式的名稱及顯示所需寬度和高度。 例如, HelloWeb.html 含有下列 HTML tags,就可利用 appletviewer 或綱頁瀏覽器(browser) 顯示圖形。
    <applet code = "HelloWeb.class" width=150 height=50></applet>

3.5 圖形結構

例題:

  1. 畫點PointTest.java 用到 ccj 中的類別 Point
    測試PointTest
  2. 畫圓CircleTest.java 用到 ccj 中的類別 Point 和 Circle
    測試CircleTest
  3. 畫線LineTest.java 用到 ccj 中的類別 Point 和 Line
    測試LineTest
  4. 畫信文HelloWin.java
    測試HelloWin
  5. 畫正方形Square.java
    測試Square

3.6 選擇坐標系統

例題:Phoenix.java
測試Phoenix

3.7 從圖形視窗輸入

    String name = readString("Please type your name:");

    int age = readInt("Please type your name:");

例題:Click.java
測試Click

3.8 物件的複製

        Point p = new Point(0,0);
        Point q = (Point) p.clone();    // Point q = p; 只抄 reference

        String b = "";          // 空字串
        String c = null;        // 沒有字串

3.9 視覺和數值資訊之比較

例題:
  1. 圓和直線相交
    Intsect1.java
    測試Intsect1
  2. 計算並畫出交點
    Intsect2.java
    測試Intsect2