第1章

Size: px
Start display at page:

Download "第1章"

Transcription

1 第 9 章 類別 1

2 本章提要 9.1 前言 9.2 物件導向程式設計基礎 9.3 類別的基本認識 9.4 公有成員與私有成員 9.5 類別變數與類別方法 9.6 進一步認識方法 9.7 進一步認識建構元 9.8 其它 9.9 綜合練習 9.10 後記 2

3 9.1 前言 物件導向程式設計的特性主要有 : 分而治之 (Divide and Conquer) 資訊隱藏 (Information Hiding) 封裝 (Encapsulation) 模組化 同名異式 (Polymorphism) 多型 繼承 (Inheritance) 資料抽象化 (Data Abstraction) 動態連結 (Dynamic Binding) 3

4 9.1 前言 物件導向觀念類別 (Class) 物件 (Object) 資料成員 (Data Member) 方法 (Method) 封裝 (Encapsulation) 建構元 (Constructor) 方法多載 (Method Overloading) 建構元多載 (Constructor Overloading) 動態連結 (Dynamic Binding) 4

5 9.2 物件導向程式設計基礎 物件 (Object) 物件是用來模擬真實世界的實體 物件是一個具有狀態 (State) 行為 (Behavior) 和識別 (Identity) 的實體 (Entity) 每一個物件都有一個足以識別的名稱物件是一組由 資料成員 ( 即變數 ) 和 成員函式( 即方法 ) 所組成的程式碼 5

6 9.2 物件導向程式設計基礎 物件 (Object) 資料成員就是 變數, 也稱作 範疇 (Field) 變數用來儲存物件的資料, 這些資料是用來描述物件的狀態和屬性特徵 (Attributes) 資訊隱藏 : 讓外界無法得知物件到底有哪些變數以及變數的值為何成員函式就是 方法 操作 方法是物件展現在外的行為, 它讓外界知道可以對物件進行哪些操作盡量讓外界只能透過方法來和物件溝通, 只能透過方法來傳遞訊息給變數或更改變數的值 6

7 9.2 物件導向程式設計基礎 類別 (Class) 物以類聚, 類別是物件抽象化的結果 將具有相同性質的物件歸類後成為一個群體對於性質相同的物件, 我們可以用類別來定義它的變數和方法類別是一個用來產生物件的模板 (Template), 用這個模版可以產生相同性質的物件物件則是類別的一個實例 (Instance) 7

8 9.2 物件導向程式設計基礎 類別和物件 8

9 9.2 物件導向程式設計基礎 物件是類別的一個實例物件自己使用的變數稱為實例變數 (Instance Variable) 類別變數 (Class Variable) 則是該類別所產生的眾多物件所共用的變數實例方法 (Instance Method) 實例方法必須先產生物件, 然後由物件來驅動類別方法 (Class Method) 類別方法則不必先產生物件, 它可以直接由類別來驅動 9

10 9.2 物件導向程式設計基礎 封裝 (Encapsulation) 封裝乃指將變數和方法包裝在物件 ( 類別 ) 裡, 封裝隱藏了變數和實作方法等細節, 讓外界只能經由方法這個窗口來對物件進行操作, 只能透過方法來傳遞訊息給物件的變數, 進而改變物件的狀態行為封裝將資訊隱藏在物件 ( 類別 ) 裡, 讓系統較容易維護 10

11 9.2 物件導向程式設計基礎 相同涵義的名詞 項次 相同意義的名詞 1 類別 物件的資料型別 模板 2 物件 類別的實例 3 資料成員 變數 範疇 4 成員函式 方法 操作 5 封裝 資訊隱藏 11

12 9.3.1 定義類別 12

13 9.3.1 定義類別 類別修飾子有 public( 公開的 ) private( 私有的 ) protected( 保護的 ) 和 abstract 等數種 同一個程式檔 (.java) 裡只能有一個類別被宣告成 public 類別名稱習慣上是以大寫字母開頭, 並須符合識別字的命名規則 ( 參考第 3 章 3.4 節 ) extends 用在類別的單一繼承上, 我們留待下一章再來介紹 implements 用來實作多重繼承, 我們留待下一章再來介紹 13

14 9.3.2 定義資料成員 定義資料成員的語法 [ 變數修飾子 ] [static] [final] 資料型別變數名稱 ; 變數修飾子用來設定其他的程式存取這個變數的方式 public: 允許外界程式可以直接存取到該變數 private: 僅在該變數所在的類別裡, 可以存取到該變數 protected: 在該類別裡 由該類別衍生出來的子類別裡 與該類別同一個類別庫的其他類別可以存取到該變數 14

15 static 定義資料成員 用來指明該變數為類別變數 ( 也稱為靜態變數 ), 而非實例變數 類別變數是物件的公共變數, 為物件所共享 編譯器會將用 static 宣告的類別變數視為靜態變數, 而其他的變數視為動態變數 使用類別變數時須採用 類別名稱. 變數名稱 的格式, 而使用實例變數時則是採用 物件名稱. 變數名稱 的格式 final 用來表示該變數的值一旦指定之後就不能再被更改, 亦即該變數是一個常數 15

16 9.3.3 定義方法 定義類別的語法 [ 方法修飾子 ] [static] 傳回值型別方法名稱 ( 參數串列 ) { 敘述群 ; [return 運算式 ;] }[;] 方法修飾子 : public: 公開的方法, 可供外界呼叫 private: 私有的方法, 只供類別內部使用的方法 也就是說,private 方法只能被該類別的其他方法呼叫 protectd: 受保護的方法, 僅供給該類別以及該類別的衍生類別使用 16

17 static 定義方法 它表示這個方法為類別方法 傳回值型別 : 又稱函式型別 就是指函式傳回 (return) 值的資料型別 若沒有傳回值則必須用 void 來表示 函式名稱 : 函式名稱的命名方式與變數相同 參數串列 :( 型別參數 1, 型別參數 2,...) 參數是用來接收呼叫者傳送進來的訊息, 它是一組變數 陣列或物件, 也必須宣告資料型別 參數的命名方式也和變數相同, 如果省略參數, 則仍須保留括號 17

18 9.3.4 利用類別來產生物件 產生物件的語法 1 類別名稱物件變數 ; 物件變數 = new 類別名稱 (); // 用類別來宣告物件變數 // 產生一個新物件並讓物件 // 變數指向它 產生物件的語法 2 類別名稱物件變數 = new 類別名稱 (); 18

19 9.3.5 如何存取資料成員 點運算子 (.) 使用點運算子的語法 1. 物件名稱. 資料成員名稱 // 存取資料成員, // 亦即 : 物件名稱. 變數名稱 2. 物件名稱. 方法名稱 // 驅動實例方法 3. 類別名稱. 方法名稱 // 驅動類別方法 19

20 9.3.5 如何存取資料成員 範例程式 1 Rectangle 類別 2 // 程式名稱 :ch09_rectangle_1.java 6 class Rectangle 7 { 8 int x, y; 9 double height, width; double getarea() 12 { 13 return (height * width); 14 } 16 void draw() 17 { 18 System.out.printf(" 以 ( 橫座標, 縱座標 )=(%d,%d) 為起點 ", x, y); 19 System.out.printf(", 畫一個高為 %3.2f 寬為 %3.2f 的矩形 ", height, width); 20 } 21 } 20

21 9.3.5 如何存取資料成員 23 public class ch09_rectangle_1 24 { 25 public static void main(string args[]) 26 { 27 Rectangle r1 = new Rectangle(); 29 r1.x = 0; 30 r1.y = 5; 31 r1.height = 25.5; 32 r1.width = 35.5; 34 r1.draw(); 35 System.out.printf("\n 矩形的面積為 %5.2f", r1.getarea()); 36 } 執行結果 以 ( 橫座標, 縱座標 )=(0,5) 為起點, 畫一個高為 寬為 的矩形矩形的面積為

22 9.3.5 如何存取資料成員 25 public static void main(string args[]) 26 { 27 Rectangle r1 = new Rectangle(); r1.draw(0, 5, 25.5, 35.5); 30 System.out.printf("\n 矩形的面積為 %5.2f", r1.getarea(25.5, 35.5)); 31 } 執行結果 以 ( 橫座標, 縱座標 )=(0,5) 為起點, 畫一個高為 寬為 的矩形矩形的面積為

23 9.3.5 如何存取資料成員 範例程式 2 Rectangle 類別, 不使用建構元 2 // 程式名稱 :ch09_rectangle_2.java 6 class Rectangle 7 { 8 int x, y; 9 double height, width; double getarea(double height, double width) 12 { 13 return (height * width); 14 } void draw(int x, int y, double height, double width) 17 { 18 System.out.printf(" 以 ( 橫座標, 縱座標 )=(%d,%d) 為起點 ", x, y); 19 System.out.printf(", 畫一個高為 %3.2f 寬為 %3.2f 的矩形 ", height, width); 20 } 21 } 23

24 9.3.6 建構元 定義建構元的語法 [ 建構元修飾子 ] 類別名稱 ( 參數串列 ) { 敘述群 ; } 建構元 (Constructor) 是一個方法 它的名稱必須與類別名稱相同 它專門用來產生物件並設定物件的初值 當使用類別來產生物件時, 便會執行建構元這個方法 24

25 9.3.6 建構元 建構元修飾子可以是 public 或 private 建構元的特性 產生物件時, 系統便會自動地呼叫建構元, 執行建構元的程式內容 建構元的名稱必須與類別名稱相同 建構元不能有傳回值, 且建構元名稱之前不可以使用 void 這個關鍵字 可以省略建構元, 若省略建構元則是執行預設建構元, 預設建構元為 : public 類別名稱 () { } 25

26 9.3.6 建構元 範例程式 3 Rectangle 類別, 使用建構元 2 // 程式名稱 :ch09_rectangle_3.java 6 class Rectangle 7 { 8 int x, y; 9 double height, width; Rectangle(int i, int j, double h, double w) // 建構元 12 { 13 x = i; 14 y = j; 15 height = h; 16 width = w; 17 } 26

27 9.3.6 建構元 19 double getarea() 20 { 21 return (height * width); 22 } 24 void draw() 25 { 26 System.out.printf(" 以 ( 橫座標, 縱座標 )=(%d,%d) 為起點 ", x, y); 27 System.out.printf(", 畫一個高為 %3.2f 寬為 %3.2f 的矩形 ", height, width); 28 } 33 public static void main(string args[]) 34 { 35 Rectangle r1 = new Rectangle(0, 5, 25.5, 35.5); r1.draw(); 38 System.out.printf("\n 矩形的面積為 %5.2f", r1.getarea()); 39 } 27

28 9.3.7 從方法呼叫方法 範例程式 4 Rectangle 類別, 方法呼叫方法 2 // 程式名稱 :ch09_rectangle_4.java 6 class Rectangle 7 { 8 int x, y; 9 double height, width; Rectangle(int i, int j, double h, double w) // 建構元 12 { 13 x = i; 14 y = j; 15 height = h; 16 width = w; 17 } 28

29 9.3.7 從方法呼叫方法 19 double getarea() 20 { 21 return (height * width); 22 } 24 void draw() 25 { 26 System.out.printf(" 以 ( 橫座標, 縱座標 )=(%d,%d) 為起點 ", x, y); 27 System.out.printf(", 畫一個高為 %3.2f 寬為 %3.2f 的矩形 ", height, width); 28 System.out.printf("\n 矩形的面積為 %5.2f", getarea()); 29 } 34 public static void main(string args[]) 35 { 36 Rectangle r1 = new Rectangle(0, 5, 25.5, 35.5); 38 r1.draw(); 39 } 29

30 9.3.8 程式的分割 接下來的範例總共用到兩個程式檔 (.java), Rectangle.java 和 ch09_rectangle_5.java 分別將這兩個程式檔編譯之後, 會產生兩個類別檔 (.class) Rectangle.class 和 ch09_rectangle_5.class 30

31 9.3.8 程式的分割 範例程式 5 Rectangle 類別, 程式的分割 2 // 程式名稱 :ch09_rectangle_5.java 6 public class ch09_rectangle_5 7 { 8 public static void main(string args[]) 9 { 10 Rectangle r1 = new Rectangle(0, 5, 25.5, 35.5); r1.draw(); (new Rectangle(0, 0, 10, 20)).draw(); 15 } 31

32 9.3.8 程式的分割 2 // 程式名稱 :Rectangle.java 6 class Rectangle 7 { 8 int x, y; 9 double height, width; Rectangle(int i, int j, double h, double w) // 建構元 12 {...} double getarea() 20 {...}... 執行結果 24 void draw() 25 {...} } 以 ( 橫座標, 縱座標 )=(0,5) 為起點, 畫一個高為 寬為 的矩形矩形的面積為 以 ( 橫座標, 縱座標 )=(0,0) 為起點, 畫一個高為 寬為 的矩形矩形的面積為

33 9.3.8 程式的分割 程式編譯和執行的過程 33

34 9.4 公有成員與私有成員 成員修飾子 成員修飾子 存取權限 public 可供外界自由存取, 沒有任何限制 private 僅可供該類別存取 protected Package ( 預設 ) 可供該類別及子類別存取 可供該類別 子類別及與該類別同一個類別庫的其他類別存取 34

35 9.4 公有成員與私有成員 範例程式 6 公有成員與私有成員 2 // 程式名稱 :ch09_rectangle_private.java 6 class Rectangle 7 { 8 private int x = 0, y =0; 9 private double height, width; public boolean setfields(int i, int j, double h, double w) 12 { 13 if(i >0 && j >= 0 && h >= 0 && w >= 0 ){ 14 x = i; 15 y = j; 16 height = h; 17 width = w; 18 return true; 19 } 35

36 9.4 公有成員與私有成員 25 private double getarea() 26 { 27 return (height * width); 28 } public void draw() 32 { 33 System.out.printf(" 以 ( 橫座標, 縱座標 )=(%d,%d) 為起點 ", x, y); 34 System.out.printf(", 畫一個高為 %3.2f 寬為 %3.2f 的矩形 ", height, width); 35 System.out.printf("\n 矩形的面積為 %5.2f", getarea()); 36 } 37 } 36

37 9.4 公有成員與私有成員 39 public class ch09_rectangle_private 40 { 41 public static void main(string args[]) 42 { 43 Rectangle r1 = new Rectangle(); if(r1.setfields(5, 5, 10, 20)) 46 r1.draw(); 47 else 48 System.out.printf("\n 矩形的起點座標 高 寬必須大於等於 0"); // r1.height = 15; 51 // r1.width = 15; 52 // System.out.printf("\n 矩形的面積為 %5.2f", r1.getarea()); 53 } 54 } 37

38 9.5 類別變數與類別方法 在類別程式區塊之外, 使用類別變數的格式為 : 類別名稱. 類別變數名稱 使用類別方法的格式為 : 類別名稱. 類別方法名稱 物件名稱. 類別方法名稱 38

39 9.5 類別變數與類別方法 在類別方法的程式區塊裡 可以存取類別變數, 可以呼叫類別方法 不可以存取實例變數, 不可以呼叫實例方法不可使用 this 關鍵字, 不可使用 super 關鍵字 ( 參考 節 ) 39

40 9.5.1 實例變數與類別變數 範例程式 7 Rectangle 類別 ( 矩形類別 ), 類別變數 2 // 程式名稱 :ch09_rectangle_static_1.java 6 class Rectangle 7 { 8 public static int objects; // 物件的個數 9 private String color; // 顏色 10 private double height, width; // 高, 寬 Rectangle(String c, double h, double w) // 建構元 ( 顏色, 高, 寬 ) 13 { 14 color = c; 15 height = h; 16 width = w; 17 objects ++; 18 } 40

41 9.5.1 實例變數與類別變數 20 public double getarea() 21 { 22 return (height * width); 23 } public String getcolor() 26 { 27 return color; 28 } 31 public class ch09_rectangle_static_1 32 { 33 public static void main(string args[]) 34 { 36 System.out.printf(" 一開始, 共有 %d 個矩形物件 \n", Rectangle.objects); 41

42 9.5.1 實例變數與類別變數 38 Rectangle r1 = new Rectangle(" 紅色 ",10, 10); 39 System.out.printf(" 產生矩形物件 r1, 此時共有 %d 個矩形物件 ", Rectangle.objects); // 不能用 r1.objects 40 System.out.print(",r1 的顏色為 " + r1.getcolor()); 41 System.out.printf(",r1 的面積為 %5.2f\n", r1.getarea()); Rectangle r2 = new Rectangle(" 藍色 ",15, 15); 44 System.out.printf(" 產生矩形物件 r2, 此時共有 %d 個矩形物件 ", Rectangle.objects); // 不能用 r2.objects 45 System.out.print(",r2 的顏色為 " + r2.getcolor()); 46 System.out.printf(",r2 的面積為 %5.2f\n", r2.getarea()); 47 } 48 } 執行結果 一開始, 共有 0 個矩形物件產生矩形物件 r1, 此時共有 1 個矩形物件,r1 的顏色為紅色,r1 的面積為 產生矩形物件 r2, 此時共有 2 個矩形物件,r2 的顏色為藍色,r2 的面積為

43 9.5.1 實例變數與類別變數 圖 9.4: 實例變數和類別變數之記憶體結構 43

44 9.5.2 類別方法 範例程式 8 Rectangle 類別 ( 矩形類別 ), 類別方法 2 // 程式名稱 :ch09_rectangle_static_2.java 6 class Rectangle 7 { 8 private static int objects; // 物件的個數 9 private String color; // 顏色 10 private double height, width; // 高, 寬 Rectangle(String color, double height, double width) // 建構元 ( 顏色, 高, 寬 ) 13 { 14 this.color = color; 15 this.height = height; 16 this.width = width; 17 objects ++; 18 } 44

45 9.5.2 類別方法 20 public static int getobjects() 21 { 22 return objects; 23 } public double getarea() 26 { 27 return (this.height * this.width); 28 } public String getcolor() 31 { 32 return this.color; 33 } 34 } 45

46 9.5.2 類別方法 36 public class ch09_rectangle_static_2 37 { 38 public static void main(string args[]) 39 { 40 System.out.printf(" 一開始, 共有 %d 個矩形物件 \n", Rectangle.getObjects()); // 不能用 Rectangle.objects Rectangle r1 = new Rectangle(" 紅色 ",10, 10); 43 System.out.printf(" 產生矩形物件 r1, 此時共有 %d 個矩形物件 ", r1.getobjects()); 44 System.out.print(",r1 的顏色為 " + r1.getcolor()); 45 System.out.printf(",r1 的面積為 %5.2f\n", r1.getarea()); Rectangle r2 = new Rectangle(" 藍色 ",15, 15); 48 System.out.printf(" 產生矩形物件 r2, 此時共有 %d 個矩形物件 ", Rectangle.getObjects()); 49 System.out.print(",r2 的顏色為 " + r2.getcolor()); 50 System.out.printf(",r2 的面積為 %5.2f\n", r2.getarea()); 51 } 52 } 46

47 9.5.3 使用 Math 類別 圖 9.5:java.lang.Math 的範疇 (Field) 和方法 (Method) 47

48 9.5.3 使用 Math 類別 範例程式 9 Math 類別的應用 2 // 程式名稱 :ch09_math.java 8 public static void main(string args[]) 執行結果 9 { PI= double i = -33.3; 的絕對值 = int j = 123, k = 81; 123 的絕對值 = 的平方根 = System.out.println("PI=" + Math.PI); 14 System.out.println(i + " 的絕對值 =" + Math.abs(i)); 15 System.out.println(j + " 的絕對值 =" + Math.abs(j)); 16 System.out.println(k + " 的平方根 =" + Math.sqrt(k)); 17 } 48

49 9.6.1 傳遞引數給方法 傳值 當引數為文字 數值 變數時 引數的值不會受參數值改變的影響, 仍然會保有原先的值 傳參照 當引數為陣列或物件時若在方法執行的過程中改變參數 ( 即陣列 物件 ) 的值, 那麼引數的值也會被一併改變掉 49

50 傳回值 方法的傳回值 單一資料值基本資料型別之陣列或物件 return 用來傳回資料並結束方法方法若沒有傳回值 則可以省略 return 或以 return; 表示之 傳回值型別 是以 void 來表示 50

51 9.6.3 傳物件給方法 範例程式 10 傳物件給方法 2 // 程式名稱 :ch09_pass_object.java 6 class Array 7 { 8 int a[] = new int[3]; 9 10 Array() // 建構元 11 { 12 a[0] = 1; 13 a[1] = 2; 14 a[2] = 3; 15 } 16 } 51

52 9.6.3 傳物件給方法 18 class Print 19 { 20 public static void printarraydata(array o) 21 { 22 System.out.print(" 陣列資料為 :"); 23 for(int i = 0; i < o.a.length; i++) 24 System.out.print(o.a[i] + " "); 29 public class ch09_pass_object 25 System.out.println(); 30 { 26 } 31 public static void main(string args[]) 27 } 32 { 33 Array y = new Array(); 執行結果 陣列資料為 : Print.printArrayData(y); 36 } 37 } 52

53 9.6.4 從方法傳回物件 範例程式 11 從方法傳回物件 2 // 程式名稱 :ch09_return_object.java 6 class Array 7 { 8 int a[] = new int[3]; 9 10 Array() // 建構元 11 { 12 a[0] = 1; 13 a[1] = 2; 14 a[2] = 3; 15 } 16 } 53

54 9.6.4 從方法傳回物件 18 class Array1 19 { 20 Array createnewobj() // 傳回值型別為 Array 21 { 22 return (new Array()); 26 class Print 23 } 27 { 24 } 28 public static void printarraydata(array o) 29 { 30 System.out.print(" 陣列資料為 :"); 31 for(int i = 0; i < o.a.length; i++) 32 System.out.print(o.a[i] + " "); 33 System.out.println(); 34 return; 35 } 36 } 54

55 9.6.4 從方法傳回物件 38 public class ch09_return_object 39 { 40 public static void main(string args[]) 41 { 42 Array1 x = new Array1(); 43 Array y = x.createnewobj(); Print.printArrayData(y); 46 } 47 } 執行結果 陣列資料為 :

56 9.6.5 傳陣列給方法, 並從方法傳回陣列 範例程式 12 傳陣列給方法, 並從方法傳回陣列 2 // 程式名稱 :ch09_pass_array.java 6 class Array 7 { 8 int [] a; 9 10 public void setarraydata(int a[]) 11 { 12 this.a = a; 13 } public double[] sqrt(int a[]) 16 { 17 double b[] = new double[a.length]; for(int i = 0; i < a.length; i++) 20 b[i] = Math.sqrt((double)a[i]); 21 return b; 22 } 23 } 56

57 9.6.5 傳陣列給方法, 並從方法傳回陣列 25 class Print 26 { 27 public static void printarraydata(string objectname, int a[]) 28 { 29 System.out.print(" 陣列 " + objectname + " 的資料為 :"); 30 for(int i = 0; i < a.length; i++) 31 System.out.print(a[i] + " "); 32 System.out.println(); 33 } public static void printarraydata(string objectname, double a[]) 36 { 37 System.out.print(" 陣列 " + objectname + " 的資料為 :"); 38 for(int i = 0; i < a.length; i++) 39 System.out.print(a[i] + " "); 40 System.out.println(); 41 } 42 } 57

58 9.6.5 傳陣列給方法, 並從方法傳回陣列 44 public class ch09_pass_array 45 { 46 public static void main(string args[]) 47 { 48 int x[] = {4, 25, 81}; 49 double z[] = new double[3]; 執行結果 50 陣列 x 的資料為 : Array y = new Array(); 取平方根 陣列 z 的資料為 : y.setarraydata(x); 54 Print.printArrayData("x", x); System.out.println(" 取平方根..."); 57 z = y.sqrt(x); 58 Print.printArrayData("z", z); 59 } 60 } 58

59 9.6.5 傳陣列給方法, 並從方法傳回陣列 59

60 9.6.5 傳陣列給方法, 並從方法傳回陣列 60

61 9.6.6 方法多載 ch09_pass_array.java 27 public static void printarraydata(string objectname, int a[]) 35 public static void printarraydata(string objectname, double a[]) Math 類別 static double abs(double a) static float abs(float a) static int abs(int a) static long abs(long a) 61

62 9.7 進一步認識建構元 建構元的主要特性, 包括 : 產生物件時, 系統便會自動地呼叫建構元, 執行建構元的程式內容建構元的名稱必須與類別名稱相同建構元不能有傳回值, 且建構元名稱之前不可以使用 void 這個關鍵字可以省略建構元, 若省略建構元則是執行預設建構元, 預設建構元為 : public 類別名稱 () { } 62

63 9.7.1 利用建構元來設定物件的初值 範例程式 14 物件的初始化 2 // 程式名稱 :ch09_rectangle_init_1.java 6 class Rectangle 7 { 8 String color = " 紅色 "; 9 double height = 10, width = 10; 10 } 執行結果 紅色矩形 r1 的高為 寬為 紅色矩形 r2 的高為 寬為 Rectangle r1 = new Rectangle(); 17 System.out.printf("%s 矩形 r1 的高為 %3.2f 寬為 %3.2f\n", r1.color, r1.height, r1.width); Rectangle r2 = new Rectangle(); 20 System.out.printf("%s 矩形 r2 的高為 %3.2f 寬為 %3.2f\n", r2.color, r2.height, r2.width); 63

64 9.7.1 利用建構元來設定物件的初值 範例程式 15 使用建構元來指定物件的初值 2 // 程式名稱 :ch09_rectangle_init_2.java 6 class Rectangle 7 { 8 String color = " 紅色 "; 9 double height = 10, width = 10; Rectangle(String color, double height, double width) // 建構元 12 { 13 this.color = color; 14 this.height = height; 15 this.width = width; 16 System.out.println(" 執行建構元..."); 17 } 18 } 64

65 9.7.1 利用建構元來設定物件的初值 20 public class ch09_rectangle_init_2 21 { 22 public static void main(string args[]) 23 { 24 Rectangle r1 = new Rectangle(" 綠色 ", 10, 15); 25 System.out.printf("%s 矩形 r1 的高為 %3.2f 寬為 %3.2f\n", r1.color, r1.height, r1.width); Rectangle r2 = new Rectangle(" 藍色 ", 20, 20); 28 System.out.printf("%s 矩形 r2 的高為 %3.2f 寬為 %3.2f\n", r2.color, r2.height, r2.width); 29 } 執行結果 30 } 執行建構元... 綠色矩形 r1 的高為 寬為 執行建構元... 藍色矩形 r2 的高為 寬為

66 9.7.2 建構元多載 Rectangle() // 建構元 1 Rectangle(double height, double width) // 建構元 2 Rectangle(String color, double height, double width) // 建構元 3 66

67 9.7.2 建構元多載 範例程式 16 建構元多載 2 // 程式名稱 :ch09_rectangle_init_3.java 6 class Rectangle 7 { 8 String color = " 紅色 "; 9 double height = 10, width = 10; Rectangle() // 建構元 1 12 { } 16 Rectangle(double height, double width) // 建構元 2 17 { } Rectangle(String color, double height, double width) // 建構元 3 24 { } 30 } 67

68 9.7.2 建構元多載 32 public class ch09_rectangle_init_3 33 { 34 public static void main(string args[]) 35 { 36 Rectangle r1 = new Rectangle(); Rectangle r2 = new Rectangle(15, 15); Rectangle r3 = new Rectangle(" 藍色 ", 20, 20); 44 } 45 } 68

69 9.7.3 利用 this() 來呼叫建構元 範例程式 17 利用 this() 來呼叫建構元 2 // 程式名稱 :ch09_rectangle_init_4.java 6 class Rectangle 7 { 8 String color; 9 double height, width; Rectangle() // 建構元 1 12 { 13 this(" 粉紅色 ", 5, 5); // this() 必須放在建構元區塊裡的第一行 14 System.out.println(" 執行建構元 1..."); 15 // this(" 粉紅色 ", 5, 5); 16 } 69

70 9.7.3 利用 this() 來呼叫建構元 18 Rectangle(double height, double width) // 建構元 2 19 { 20 this.color = " 藍色 "; 21 this.height = height; 22 this.width = width; 23 System.out.println(" 執行建構元 2..."); 24 } Rectangle(String color, double height, double width) // 建構元 3 27 { 28 this.color = color; 29 this.height = height; 30 this.width = width; 31 System.out.println(" 執行建構元 3..."); 32 } 33 } 70

71 9.7.3 利用 this() 來呼叫建構元 35 public class ch09_rectangle_init_4 36 { 37 public static void main(string args[]) 38 { 39 Rectangle r1 = new Rectangle(); 40 System.out.printf("%s 矩形 r1 的高為 %3.2f 寬為 %3.2f\n", r1.color, r1.height, r1.width); 41 } 42 } 執行結果 執行建構元 3... 執行建構元 1... 粉紅色矩形 r1 的高為 5.00 寬為

72 9.7.4 私有建構元 範例程式 18 私有建構元 2 // 程式名稱 :ch09_rectangle_init_5.java 6 class Rectangle 7 { 8 String color; 9 double height, width; private Rectangle() // 建構元 1 12 { 13 this.color = " 紅色 "; 14 System.out.println(" 執行建構元 1..."); 15 } 72

73 9.7.4 私有建構元 17 Rectangle(double height, double width) // 建構元 2 18 { 19 this(); // this() 必須放在建構元區塊裡的第一行 20 this.height = height; 21 this.width = width; 22 System.out.println(" 執行建構元 2..."); 23 } Rectangle(String color, double height, double width) // 建構元 3 26 { 27 this.color = color; 28 this.height = height; 29 this.width = width; 30 System.out.println(" 執行建構元 3..."); 31 } 32 } 73

74 9.7.4 私有建構元 34 public class ch09_rectangle_init_5 35 { 36 public static void main(string args[]) 37 { 38 // Rectangle r1 = new Rectangle(); 39 Rectangle r1 = new Rectangle(15, 15); 40 System.out.printf("%s 矩形 r1 的高為 %3.2f 寬為 %3.2f\n", r1.color, r1.height, r1.width); Rectangle r2 = new Rectangle(" 藍色 ", 20, 20); 43 System.out.printf("%s 矩形 r2 的高為 %3.2f 寬為 %3.2f\n", r2.color, r2.height, r2.width); 44 } 45 } 74

75 9.8.1 回收記憶體垃圾 Rectangle r1 = new new Rectangle();... r1 = null; // 主動歸還記憶體 75

76 9.8.2 變數的有效範圍 項次 相同意義的名詞 1 類別變數 靜態變數 全域變數 2 非類別變數 非靜態變數 動態變數 區域變數 類別階層 方法階層 區塊階層 76

77 9.9 綜合練習 以陣列實作堆疊 以鏈結串列實作堆疊 77

78 9.10 後記 物件是一個具有狀態 行為和識別的實體 類別是物件抽象化的結果 類別是一個用來產生物件的模板, 用這個模版可以產生相同性質的物件, 而物件則是類別的一個實例對於類別的描述主要有 : 資料成員 ( 即變數 ) 成員函數( 即方法 ) 和建構元 78

79 9.10 後記 封裝乃指將變數和方法包裝在物件 ( 類別 ) 裡, 封裝隱藏了變數和實作方法等細節, 讓外界只能經由方法這個窗口來對物件進行操作, 只能透過方法來傳遞訊息給物件的變數, 進而改變物件的狀態行為封裝將資訊隱藏在物件 ( 類別 ) 裡, 讓系統較容易維護利用類別來產生物件的步驟為 : 1. 首先要用類別來宣告一個物件變數 2. 然後用 new 來產生類別物件並將之指定給物件變數 79

80 9.10 後記 存取類別 ( 物件 ) 成員的方式有 : 1. 物件名稱. 資料成員名稱 2. 物件名稱. 方法名稱 3. 類別名稱. 方法名稱 建構元是一個特殊的方法, 它的名稱必須與類別名稱相同, 它專門用來產生物件並設定物件的初值 在建構元的程式區塊裡, 僅可以用 this() 方法來呼叫另一個建構元, 並且 this() 方法也可以帶參數 this() 方法必須放在建構元程式區塊的第一行敘述 80

81 9.10 後記 私有成員的保護機制可以達到資訊隱藏的作用並減少程式的錯誤 其運用原則為 : 1. 讓類別程式區塊之外的程式碼呼叫公開方法 2 再由公開方法來變更私有變數之值 類別變數又稱為靜態變數, 類別方法又稱為靜態方法 用 static 所宣告的變數為類別變數, 用 static 所宣告的方法即為類別方法 在類別程式區塊之外, 類別變數只能用類別來存取, 類別方法則可以用類別或物件來呼叫 81

82 9.10 後記 呼叫方法時, 引數的傳遞方式有以下兩種 : 傳值 : 當引數為文字 數值 變數時 引數的值不會受參數值改變的影響 傳參照 : 當引數為陣列或物件時 若在方法執行的過程中改變參數 ( 即陣列 物件 ) 的值, 那麼引數的值也會被一併改變掉 82

第1章

第1章 第 8 章 函式 1 本章提要 8.1 前言 8.2 如何定義函式 8.3 函式的呼叫和返回 8.4 傳遞陣列 8.5 方法多載 8.6 遞迴 8.7 綜合練習 8.8 後記 2 8.1 前言 每一種高階程式語言都有提供函式 (Function)( 或稱函數 ) 的功能, 以便將經常使用到的程式功能包裝成函式的形式, 如此一來便能反覆地呼叫該函式來完成某件特定工作在高階程式語言中, 副程式 (Subroutine)

More information

Microsoft PowerPoint - 13_ClassAndObj.ppt

Microsoft PowerPoint - 13_ClassAndObj.ppt Visual Basic 2005 (VB.net 2.0) 程式設計 講師 : 戴志華 hana@arbor.ee.ntu.edu.tw 國立台灣大學電機工程研究所 第十三章 物件與類別 物件與類別 物件導向程式設計 物件與類別的建立 物件與類別 物件 (object) Ex. 人 屬性 (property) 身高 體重 血型 方法 (method) 走路 跑步 訊息 (message) 交談 事件

More information

Microsoft PowerPoint - P766Ch06.ppt

Microsoft PowerPoint - P766Ch06.ppt PHP5&MySQL 程式設計 第 6 章物件導向 6-1 認識物件導向 物件 (object) 或 案例 (instance) 屬性 (property) 欄位 (field) 或 成員變數 (member variable) 方法 (method) 或 成員函式 (member function) 事件 (event) 類別 (class) 物件導向程式設計 (OOP) 具有下列特點 : 封裝

More information

第1章

第1章 第 10 章 類別的進階 - 繼承 抽象類別 介面與類別庫 1 本章提要 10.1 前言 10.2 繼承 10.3 改寫 10.4 Object 類別是類別之源 10.5 抽象類別 10.6 介面 10.7 內部類別 10.8 類別庫 10.9 綜合練習 10.10 後記 2 10.1 前言 本章將進ㄧ步來探討類別的進階應用, 包括以下主題 : 繼承 (Inheritance) 改寫 (Overriding)

More information

Microsoft Word - JAVA Programming Language Homework I ans

Microsoft Word - JAVA Programming Language Homework I ans JAVA Programming Language Homework I - OO concept Student ID: Name: 1. Which of the following techniques can be used to prevent the instantiation of a class by any code outside of the class? A. Declare

More information

javaexample-02.pdf

javaexample-02.pdf n e w. s t a t i c s t a t i c 3 1 3 2 p u b l i c p r i v a t e p r o t e c t e d j a v a. l a n g. O b j e c t O b j e c t Rect R e c t x 1 y 1 x 2 y 2 R e c t t o S t r i n g ( ) j a v a. l a n g. O

More information

Microsoft Word - ch04三校.doc

Microsoft Word - ch04三校.doc 4-1 4-1-1 (Object) (State) (Behavior) ( ) ( ) ( method) ( properties) ( functions) 4-2 4-1-2 (Message) ( ) ( ) ( ) A B A ( ) ( ) ( YourCar) ( changegear) ( lowergear) 4-1-3 (Class) (Blueprint) 4-3 changegear

More information

第1章

第1章 第 7 章 字串 1 本章提要 7.1 前言 7.2 類別與物件 7.3 String 類別 7.4 StringBuffer 類別 7.5 綜合練習 7.6 後記 2 7.1 前言 Java 用 String 類別 (Class) 來處理字串, String 類別是 Java 類別庫內建的類別, 它是一堆已經寫好的程式, 我們可以直接拿來使用字串很像字元型別的一維陣列, 字串裡能存放的資料都屬於字元性質,

More information

詞 彙 表 編 號 詞 彙 描 述 1 預 約 人 資 料 中 文 姓 名 英 文 姓 名 身 份 證 字 號 預 約 人 電 話 性 別 2 付 款 資 料 信 用 卡 別 信 用 卡 號 信 用 卡 有 效 日 期 3 住 房 條 件 入 住 日 期 退 房 日 期 人 數 房 間 數 量 入

詞 彙 表 編 號 詞 彙 描 述 1 預 約 人 資 料 中 文 姓 名 英 文 姓 名 身 份 證 字 號 預 約 人 電 話 性 別 2 付 款 資 料 信 用 卡 別 信 用 卡 號 信 用 卡 有 效 日 期 3 住 房 條 件 入 住 日 期 退 房 日 期 人 數 房 間 數 量 入 100 年 特 種 考 試 地 方 政 府 公 務 人 員 考 試 試 題 等 別 : 三 等 考 試 類 科 : 資 訊 處 理 科 目 : 系 統 分 析 與 設 計 一 請 參 考 下 列 旅 館 管 理 系 統 的 使 用 案 例 圖 (Use Case Diagram) 撰 寫 預 約 房 間 的 使 用 案 例 規 格 書 (Use Case Specification), 繪 出 入

More information

The Embedded computing platform

The Embedded computing platform 嵌入式系統及實驗 Embedded System and Experiment 詹曉龍 長庚大學電機系 Java 的類別與物件 : 宣告類別 建構子 public class Customer { private String name; private String address; // Customer 類別宣告 // 成員資料 public int age; // 建構子 : 使用參數設定成員資料初始值

More information

软件工程文档编制

软件工程文档编制 实训抽象类 一 实训目标 掌握抽象类的定义 使用 掌握运行时多态 二 知识点 抽象类的语法格式如下 : public abstract class ClassName abstract void 方法名称 ( 参数 ); // 非抽象方法的实现代码 在使用抽象类时需要注意如下几点 : 1 抽象类不能被实例化, 实例化的工作应该交由它的子类来完成 2 抽象方法必须由子类来进行重写 3 只要包含一个抽象方法的抽象类,

More information

使 用 Java 语 言 模 拟 保 险 箱 容 量 门 板 厚 度 箱 体 厚 度 属 性 锁 具 类 型 开 保 险 箱 关 保 险 箱 动 作 存 取 款

使 用 Java 语 言 模 拟 保 险 箱 容 量 门 板 厚 度 箱 体 厚 度 属 性 锁 具 类 型 开 保 险 箱 关 保 险 箱 动 作 存 取 款 JAVA 程 序 设 计 ( 肆 ) 徐 东 / 数 学 系 使 用 Java 语 言 模 拟 保 险 箱 容 量 门 板 厚 度 箱 体 厚 度 属 性 锁 具 类 型 开 保 险 箱 关 保 险 箱 动 作 存 取 款 使 用 Java class 代 表 保 险 箱 public class SaveBox 类 名 类 类 体 实 现 封 装 性 使 用 class SaveBox 代 表 保

More information

Java java.lang.math Java Java.util.Random : ArithmeticException int zero = 0; try { int i= 72 / zero ; }catch (ArithmeticException e ) { // } 0,

Java java.lang.math Java Java.util.Random : ArithmeticException int zero = 0; try { int i= 72 / zero ; }catch (ArithmeticException e ) { // } 0, http://debut.cis.nctu.edu.tw/~chi Java java.lang.math Java Java.util.Random : ArithmeticException int zero = 0; try { int i= 72 / zero ; }catch (ArithmeticException e ) { // } 0, : POSITIVE_INFINITY NEGATIVE_INFINITY

More information

Microsoft Word - 投影片ch11

Microsoft Word - 投影片ch11 Java2 JDK5.0 教學手冊第三版洪維恩編著博碩文化出版書號 pg20210 第十一章抽象類別與介面 本章學習目標認識抽象類別學習介面的使用認識多重繼承與介面的延伸 抽象類別與介面 11-2 11.1 抽象類別 抽象類別的目的是要依據它的格式來修改並建立新的類別 11.1.1 定義抽象類別 定義抽象類別的語法如下 : abstract class 類別名稱 { 宣告資料成員 ; // 定義抽象類別

More information

OOP with Java 通知 Project 4: 4 月 18 日晚 9 点 关于抄袭 没有分数

OOP with Java 通知 Project 4: 4 月 18 日晚 9 点 关于抄袭 没有分数 OOP with Java Yuanbin Wu cs@ecnu OOP with Java 通知 Project 4: 4 月 18 日晚 9 点 关于抄袭 没有分数 复习 类的复用 组合 (composition): has-a 关系 class MyType { public int i; public double d; public char c; public void set(double

More information

Strings

Strings Polymorphism and Virtual Functions Cheng-Chin Chiang Virtual Function Basics 多 型 (Polymorphism) 賦 予 一 個 函 數 多 種 意 涵, 存 在 於 同 一 類 別 之 內 祖 先 類 別 與 後 代 類 別 間 物 件 導 向 程 式 設 計 基 本 原 理 虛 擬 函 數 (Virtual Function)

More information

EJB-Programming-4-cn.doc

EJB-Programming-4-cn.doc EJB (4) : (Entity Bean Value Object ) JBuilder EJB 2.x CMP EJB Relationships JBuilder EJB Test Client EJB EJB Seminar CMP Entity Beans Session Bean J2EE Session Façade Design Pattern Session Bean Session

More information

任務二 : 產生 20 個有炸彈的磚塊, 放在隨機的位置編輯 Block 類別的程式碼 import greenfoot.; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo) Write a description of class

任務二 : 產生 20 個有炸彈的磚塊, 放在隨機的位置編輯 Block 類別的程式碼 import greenfoot.; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo) Write a description of class 踩地雷遊戲 高慧君南港高中 開啟專案 MineSweep 任務一 : 產生 30X20 個磚塊編輯 Table 類別的程式碼 import greenfoot.; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo) import java.util.arraylist; Write a description of class MyWorld

More information

Microsoft Word - 物件導向編程精要.doc

Microsoft Word - 物件導向編程精要.doc Essential Object-Oriented Programming Josh Ko 2007.03.11 object-oriented programming C++ Java OO class object OOP Ruby duck typing complexity abstraction paradigm objects objects model object-oriented

More information

第1章

第1章 第 15 章 標準類別 1 本章提要 15.1 前言 15.2 基本資料類別介紹 15.3 Integer 類別 15.4 Double 類別 15.5 Float 類別 Long 類別 Short 類別 15.6 數學相關類別 Math 15.7 後記 2 15.1 前言 不同基本資料型別可以互相轉換, 但也只予許由小轉大的情況, 例如 1. byte 轉為 short int long float

More information

OOP with Java 通知 Project 4: 4 月 19 日晚 9 点

OOP with Java 通知 Project 4: 4 月 19 日晚 9 点 OOP with Java Yuanbin Wu cs@ecnu OOP with Java 通知 Project 4: 4 月 19 日晚 9 点 复习 类的复用 组合 (composition): has-a 关系 class MyType { public int i; public double d; public char c; public void set(double x) { d

More information

Mac Java import com.apple.mrj.*;... public class MyFirstApp extends JFrame implements ActionListener, MRJAboutHandler, MRJQuitHandler {... public MyFirstApp() {... MRJApplicationUtils.registerAboutHandler(this);

More information

Chapter 9: Objects and Classes

Chapter 9: Objects and Classes Fortran Algol Pascal Modula-2 BCPL C Simula SmallTalk C++ Ada Java C# C Fortran 5.1 message A B 5.2 1 class Vehicle subclass Car object mycar public class Vehicle extends Object{ public int WheelNum

More information

運算子多載 Operator Overloading

運算子多載 Operator Overloading 多型 Polymorphism 講師 : 洪安 1 多型 編譯時期多型 ( 靜態多型 ) function overloading 如何正確呼叫同名的函數? 利用參數個數與型態 operator overloading 其實同 function overloading 執行時期多型 ( 或動態多型 ) 如何正確呼叫不同物件的相同名稱的成員函數 利用繼承與多型 2 子類別與父類別物件間的指定 (assignment)

More information

Microsoft PowerPoint - C++類別.ppt

Microsoft PowerPoint - C++類別.ppt C++ 的類別 (Class) 類別 (Class) 是一種資料型態, 可用來宣告物件 類別內含有資料成員 (Data member) 和成員函式 (Member function) 類別中不論是 Data Member 或 Member function 都可在 public 區或 private 區宣告 因 OOP 特性之一是隱藏資料, 一般會將 data member 以 private 方式宣告保護起來,

More information

OOP with Java 通知 Project 4: 5 月 2 日晚 9 点

OOP with Java 通知 Project 4: 5 月 2 日晚 9 点 OOP with Java Yuanbin Wu cs@ecnu OOP with Java 通知 Project 4: 5 月 2 日晚 9 点 复习 Java 包 创建包 : package 语句, 包结构与目录结构一致 使用包 : import restaurant/ - people/ - Cook.class - Waiter.class - tools/ - Fork.class - Table.class

More information

Microsoft PowerPoint - 11_Templates.ppt

Microsoft PowerPoint - 11_Templates.ppt 1 1. 上機考 20% 期末考 6/23( 四 ) 晚 6:30~8:30 範圍 : 第 7, 8, 9, 10 章實習內容 按座位坐, 隨機抽兩題 2. 紙上測驗 20% 6/21( 二 ) :9:30~11:00 課本 7-11, 13 章內容 2 第 11 章樣版 (Templates) 11.1 簡介 11.2 函式樣版 11.3 多載函式樣版 11.4 類別樣版 11.5 類別樣版與無型

More information

2009年3月全国计算机等级考试二级Java语言程序设计笔试试题

2009年3月全国计算机等级考试二级Java语言程序设计笔试试题 2009 年 3 月 全 国 计 算 机 等 级 考 试 笔 试 试 卷 二 级 Java 语 言 程 序 设 计 ( 考 试 时 间 90 分 钟, 满 分 100 分 ) 一 选 择 题 ( 每 题 2 分, 共 70 分 ) 下 列 各 题 A) B) C) D) 四 个 选 项 中, 只 有 一 个 选 项 是 正 确 的 请 将 正 确 选 项 填 涂 在 答 题 卡 相 应 位 置 上,

More information

主程式 : public class Main3Activity extends AppCompatActivity { ListView listview; // 先整理資料來源,listitem.xml 需要傳入三種資料 : 圖片 狗狗名字 狗狗生日 // 狗狗圖片 int[] pic =new

主程式 : public class Main3Activity extends AppCompatActivity { ListView listview; // 先整理資料來源,listitem.xml 需要傳入三種資料 : 圖片 狗狗名字 狗狗生日 // 狗狗圖片 int[] pic =new ListView 自訂排版 主程式 : public class Main3Activity extends AppCompatActivity { ListView listview; // 先整理資料來源,listitem.xml 需要傳入三種資料 : 圖片 狗狗名字 狗狗生日 // 狗狗圖片 int[] pic =new int[]{r.drawable.dog1, R.drawable.dog2,

More information

untitled

untitled 1 Outline 數 料 數 數 列 亂數 練 數 數 數 來 數 數 來 數 料 利 料 來 數 A-Z a-z _ () 不 數 0-9 數 不 數 SCHOOL School school 數 讀 school_name schoolname 易 不 C# my name 7_eleven B&Q new C# (1) public protected private params override

More information

OOP with Java 通知 Project 4: 5 月 2 日晚 9 点

OOP with Java 通知 Project 4: 5 月 2 日晚 9 点 OOP with Java Yuanbin Wu cs@ecnu OOP with Java 通知 Project 4: 5 月 2 日晚 9 点 复习 类的复用 组合 (composition): has-a 关系 class MyType { public int i; public double d; public char c; public void set(double x) { d =

More information

KillTest 质量更高 服务更好 学习资料 半年免费更新服务

KillTest 质量更高 服务更好 学习资料   半年免费更新服务 KillTest 质量更高 服务更好 学习资料 http://www.killtest.cn 半年免费更新服务 Exam : 310-055Big5 Title : Sun Certified Programmer for the Java 2 Platform.SE 5.0 Version : Demo 1 / 22 1. 11. public static void parse(string str)

More information

untitled

untitled 1 Outline 料 類 說 Tang, Shih-Hsuan 2006/07/26 ~ 2006/09/02 六 PM 7:00 ~ 9:30 聯 ives.net@gmail.com www.csie.ntu.edu.tw/~r93057/aspnet134 度 C# 力 度 C# Web SQL 料 DataGrid DataList 參 ASP.NET 1.0 C# 例 ASP.NET 立

More information

Microsoft PowerPoint - Chap03.ppt [相容模式]

Microsoft PowerPoint - Chap03.ppt [相容模式] 本章目的 2D / 3D 遊戲程式設計入門使用 XNA 3.0 與 C# 探討 XNA 遊戲程式內部的基本架構與遊戲開發流程 示範如何完成一個簡單的 XNA 遊戲方案 第三章 XNA 遊戲程式基本架構 1 2 新增 XNA 專案 新增 XNA 專案 3 4 XNA 相關的命名空間 Game1.cs 程式中的六個函數 using Microsoft.Xna.Framework; // 和 XNA 架構相關的型別

More information

Microsoft PowerPoint - 14Threads.ppt

Microsoft PowerPoint - 14Threads.ppt Threads Outline Introduction to Threads How to create Thread extend Thread implement Runnable interface Synchronization What is thread? 定義 : 程式的執行軌跡 Single Thread Multi-Thread 依序執行 int x, y; int z; x =

More information

運算子多載 Operator Overloading

運算子多載 Operator Overloading 函數樣板 (Function Template) 與 類別樣板 (Class Template) 講師 : 洪安 1 資料結構與 C++ 程式設計進階班 為何需要通用函數? (1/2) int abs(int x) { return (x>0)?x:-x; 取名困難不好記 float fabs(float x) { return (x>0)?x:-x; complex cabs(complex x)

More information

内 容 简 介 本 书 是 一 本 关 于 语 言 程 序 设 计 的 教 材, 涵 盖 了 语 言 的 基 本 语 法 和 编 程 技 术, 其 中 包 含 了 作 者 对 语 言 多 年 开 发 经 验 的 总 结, 目 的 是 让 初 学 的 读 者 感 受 到 语 言 的 魅 力, 并 掌

内 容 简 介 本 书 是 一 本 关 于 语 言 程 序 设 计 的 教 材, 涵 盖 了 语 言 的 基 本 语 法 和 编 程 技 术, 其 中 包 含 了 作 者 对 语 言 多 年 开 发 经 验 的 总 结, 目 的 是 让 初 学 的 读 者 感 受 到 语 言 的 魅 力, 并 掌 语 言 程 序 设 计 郑 莉 胡 家 威 编 著 清 华 大 学 逸 夫 图 书 馆 北 京 内 容 简 介 本 书 是 一 本 关 于 语 言 程 序 设 计 的 教 材, 涵 盖 了 语 言 的 基 本 语 法 和 编 程 技 术, 其 中 包 含 了 作 者 对 语 言 多 年 开 发 经 验 的 总 结, 目 的 是 让 初 学 的 读 者 感 受 到 语 言 的 魅 力, 并 掌 握 语

More information

<4D6963726F736F667420506F776572506F696E74202D20332D322E432B2BC3E6CFF2B6D4CFF3B3CCD0F2C9E8BCC6A1AAD6D8D4D8A1A2BCCCB3D0A1A2B6E0CCACBACDBEDBBACF2E707074>

<4D6963726F736F667420506F776572506F696E74202D20332D322E432B2BC3E6CFF2B6D4CFF3B3CCD0F2C9E8BCC6A1AAD6D8D4D8A1A2BCCCB3D0A1A2B6E0CCACBACDBEDBBACF2E707074> 程 序 设 计 实 习 INFO130048 3-2.C++ 面 向 对 象 程 序 设 计 重 载 继 承 多 态 和 聚 合 复 旦 大 学 计 算 机 科 学 与 工 程 系 彭 鑫 pengxin@fudan.edu.cn 内 容 摘 要 方 法 重 载 类 的 继 承 对 象 引 用 和 拷 贝 构 造 函 数 虚 函 数 和 多 态 性 类 的 聚 集 复 旦 大 学 计 算 机 科 学

More information

Microsoft PowerPoint - chap07.ppt

Microsoft PowerPoint - chap07.ppt 第七章類別類別與物件 資訊科技系 林偉川 類別的定義語法 修飾字 class 類別名稱 { // 類別的標頭 // 屬性宣告 // 建構子定義 // 方法定義 2 1 類別的修飾字 public- 公開類別, 宣告成此種類別可以被任何類別所使用 無修飾字 (default) 類別, 此種類別僅能被同一套件 (package) 內的類別使用 final- 此種類別不可被繼承 abstract- 此為抽象類別的修飾字

More information

Python a p p l e b e a r c Fruit Animal a p p l e b e a r c 2-2

Python a p p l e b e a r c Fruit Animal a p p l e b e a r c 2-2 Chapter 02 變數與運算式 2.1 2.1.1 2.1.2 2.1.3 2.1.4 2.2 2.2.1 2.2.2 2.2.3 type 2.2.4 2.3 2.3.1 print 2.3.2 input 2.4 2.4.1 2.4.2 2.4.3 2.4.4 2.4.5 + 2.4.6 Python Python 2.1 2.1.1 a p p l e b e a r c 65438790

More information

java2d-4.PDF

java2d-4.PDF 75 7 6 G r a d i e n t P a i n t B a s i c S t r o k e s e t P a i n t ( ) s e t S t o r k e ( ) import java.awt.*; import java.awt.geom.*; public class PaintingAndStroking extends ApplicationFrame { public

More information

Microsoft Word - 01.DOC

Microsoft Word - 01.DOC 第 1 章 JavaScript 简 介 JavaScript 是 NetScape 公 司 为 Navigator 浏 览 器 开 发 的, 是 写 在 HTML 文 件 中 的 一 种 脚 本 语 言, 能 实 现 网 页 内 容 的 交 互 显 示 当 用 户 在 客 户 端 显 示 该 网 页 时, 浏 览 器 就 会 执 行 JavaScript 程 序, 用 户 通 过 交 互 式 的

More information

EJB-Programming-3.PDF

EJB-Programming-3.PDF :, JBuilder EJB 2.x CMP EJB Relationships JBuilder EJB Test Client EJB EJB Seminar CMP Entity Beans Value Object Design Pattern J2EE Design Patterns Value Object Value Object Factory J2EE EJB Test Client

More information

Java Access 5-1 Server Client Client Server Server Client 5-2 DataInputStream Class java.io.datainptstream (extends) FilterInputStream InputStream Obj

Java Access 5-1 Server Client Client Server Server Client 5-2 DataInputStream Class java.io.datainptstream (extends) FilterInputStream InputStream Obj Message Transition 5-1 5-2 DataInputStream Class 5-3 DataOutputStream Class 5-4 PrintStream Class 5-5 (Message Transition) (Exercises) Java Access 5-1 Server Client Client Server Server Client 5-2 DataInputStream

More information

(procedure-oriented)?? 2

(procedure-oriented)?? 2 1 (procedure-oriented)?? 2 (Objected-Oriented) (class)? (method)? 3 : ( 4 ???? 5 OO 1966 Kisten Nygaard Ole-Johan Dahl Simula Simula 爲 6 Smalltalk Alan Kay 1972 PARC Smalltalk Smalltalk 爲 Smalltalk 爲 Smalltalk

More information

Microsoft PowerPoint - C-Ch11.ppt

Microsoft PowerPoint - C-Ch11.ppt 各式各樣的資料型態 11-1 結構的基礎知識 決定新的型態 關於結構 結構資料型態可以將不同資料型態的值整合成新的型態 結構型態的宣告語法 : struct 結構型態 { 資料型態識別字 ; 資料型態識別字 ; }; 加上 struct 進行宣告 宣告結構變數 語法 : 結構型態結構變數名稱 ; 範例 : struct Car car1; 對成員進行存取 使用結構型態的成員時, 必須使用成員選擇運算子

More information

用手機直接傳值不透過網頁連接, 來當作搖控器控制家電 ( 電視遙控器 ) 按下按鍵發送同時會回傳值來確定是否有送出 問題 :1. 應該是使用了太多 thread 導致在傳值上有問題 2. 一次按很多次按鈕沒辦法即時反應

用手機直接傳值不透過網頁連接, 來當作搖控器控制家電 ( 電視遙控器 ) 按下按鍵發送同時會回傳值來確定是否有送出 問題 :1. 應該是使用了太多 thread 導致在傳值上有問題 2. 一次按很多次按鈕沒辦法即時反應 專題進度 老師 : 趙啟時老師 學生 : 陳建廷 2013/10/13 用手機直接傳值不透過網頁連接, 來當作搖控器控制家電 ( 電視遙控器 ) 按下按鍵發送同時會回傳值來確定是否有送出 問題 :1. 應該是使用了太多 thread 導致在傳值上有問題 2. 一次按很多次按鈕沒辦法即時反應 程式碼 : package com.example.phone; import java.util.arraylist;

More information

投影片 1

投影片 1 Chap 9 巢狀類別 多形與套件 9-1 巢狀類別 9-2 匿名內層類別 9-3 多形的基礎 9-4 多形的實作 9-5 套件 9-1 巢狀類別 9-1-1 巢狀類別 9-1-2 內層類別的使用 9-1-1 巢狀類別 - 說明 巢狀類別是在類別中擁有其他類別的宣告, 在外面的類別稱為 外層類別 (Enclosing Class); 內層的成員類別稱為 內層類別 (Inner Classes) 巢狀類別強調類別之間的關聯性,

More information

(TestFailure) JUnit Framework AssertionFailedError JUnit Composite TestSuite Test TestSuite run() run() JUnit

(TestFailure) JUnit Framework AssertionFailedError JUnit Composite TestSuite Test TestSuite run() run() JUnit Tomcat Web JUnit Cactus JUnit Java Cactus JUnit 26.1 JUnit Java JUnit JUnit Java JSP Servlet JUnit Java Erich Gamma Kent Beck xunit JUnit boolean JUnit Java JUnit Java JUnit Java 26.1.1 JUnit JUnit How

More information

Microsoft Word - 04_object_Boxing_property_indexer.doc

Microsoft Word - 04_object_Boxing_property_indexer.doc C# 程式設計人員參考 object 型別是.NET Framework 中,System.Object 的別名 您可以將 任何型別的值指派給 object 型別的變數 所有的資料型別, 包括預先定義的和使用者定義的, 都繼承自 System.Object 類別 object 資料型別是物件 Box 目標或來源的型 別 範例下列範例顯示 object 型別的變數如何接受任何資料型別的值, 以及 object

More information

Template

Template 第十一章 ( 上篇 ) 函數樣板 (Function Template) 與 類別樣板 (Class Template) 建立通用函數 (Generic Functions) & 通用類別 (Generic Classes) - Code Reuse 的另一種發揮 - 煩人的事經歷一次就夠了 1 為何需要通用函數? int abs(int x) { return (x>0)?x:-x; int abs(int

More information

4. 如下的程式碼中, 宣告了類別 A3 和 B3 由於在兩個類別中都定義了 print() 的方法, 所以依據定義, 總共有兩次的 overloading 以及一次的 overriding public class A3 { public class B3 extends A3 { protect

4. 如下的程式碼中, 宣告了類別 A3 和 B3 由於在兩個類別中都定義了 print() 的方法, 所以依據定義, 總共有兩次的 overloading 以及一次的 overriding public class A3 { public class B3 extends A3 { protect 姓名 : 物件導向程式設計 (II) Spring 2010, 期中考 學號 : 是非題 : ( 每題 5 分 ) 注意 : 若答案為 非, 你必須提供正確的解釋才有分數 ; 否則, 以零分計 若有程式錯誤, 請回答 非 並指出錯誤 1. 如下的程式碼中, 宣告了類別 A1 和 B1 若在其他類別( 如控制類別 ) 執行 B1 b1 = new B1(5);, 則 a1 的值會改成 5 public

More information

OOP with Java 通知 Project 3 提交时间 3 月 29 日晚 9 点 Piazza Project 2 投票

OOP with Java 通知 Project 3 提交时间 3 月 29 日晚 9 点 Piazza Project 2 投票 OOP with Java Yuanbin Wu cs@ecnu OOP with Java 通知 Project 3 提交时间 3 月 29 日晚 9 点 Piazza Project 2 投票 复习 创建对象 构造函数 函数重载 : 函数 = 函数名 + 参数列表 public class MyType { int i; double d; char c; void set(double x)

More information

<4D F736F F D20B1D0A87CB3A1A7EFB5BDAE76B8EAB867B64FB8C9A7555FABCAADB1>

<4D F736F F D20B1D0A87CB3A1A7EFB5BDAE76B8EAB867B64FB8C9A7555FABCAADB1> 教育部改善師資經費補助 正修科技大學 102 年度教師成果報告 ****************************** 跨平台 APP 開發從零開始 ****************************** 團體 個人 單 位 : 電子工程系 單位主管 : 陳振聲 ( 簽章 ) 職 姓 稱 : 副教授 名 : 林宜賢 執行期間 :102 年 8 月 26 日至 8 月 28 日 教評會審查期間

More information

untitled

untitled 1 MSDN Library MSDN Library 量 例 參 列 [ 說 ] [] [ 索 ] [] 來 MSDN Library 了 類 類 利 F1 http://msdn.microsoft.com/library/ http://msdn.microsoft.com/library/cht/ Object object 參 類 都 object 參 object Boxing 參 boxing

More information

《大话设计模式》第一章

《大话设计模式》第一章 第 1 章 代 码 无 错 就 是 优? 简 单 工 厂 模 式 1.1 面 试 受 挫 小 菜 今 年 计 算 机 专 业 大 四 了, 学 了 不 少 软 件 开 发 方 面 的 东 西, 也 学 着 编 了 些 小 程 序, 踌 躇 满 志, 一 心 要 找 一 个 好 单 位 当 投 递 了 无 数 份 简 历 后, 终 于 收 到 了 一 个 单 位 的 面 试 通 知, 小 菜 欣 喜

More information

untitled

untitled (encapsulation) 例 類 說 類 料 來 料 information hiding 念 (inheritance) 來說 類 類 類 類 類 類 行 利 來 (polymorphism) 不 類 數 不 1 2 3 4 類 類 不 類 不 類 5 6 7 // virtual 不見了 #include #include using namespace

More information

Microsoft Word - DataStruct-981.doc

Microsoft Word - DataStruct-981.doc 4. 堆疊與佇列 (Stack and Queue) 4. Stak (). 基本觀念 定義 : 當將東西疊成一堆, 而取用的時候由上方來取出 特性 : 先進後出, 後進先出 ( 號球先放, 但 3 號球會先拿出 ) 2 3 3 2 (2). Stack 的運算 基本運算 push: 將資料放入堆疊 pop: 將資料由堆疊最頂端取出一個 TopItem: 位於堆疊中最上面的一個資料 IsEmpty:

More information

JavaIO.PDF

JavaIO.PDF O u t p u t S t ream j a v a. i o. O u t p u t S t r e a m w r i t e () f l u s h () c l o s e () public abstract void write(int b) throws IOException public void write(byte[] data) throws IOException

More information

Microsoft PowerPoint - L17_Inheritance_v4.pptx

Microsoft PowerPoint - L17_Inheritance_v4.pptx C++ Programming Lecture 17 Wei Liu ( 刘 威 ) Dept. of Electronics and Information Eng. Huazhong University of Science and Technology May. 2015 Lecture 17 Chapter 20. Object-Oriented Programming: Inheritance

More information

1: public class MyOutputStream implements AutoCloseable { 3: public void close() throws IOException { 4: throw new IOException(); 5: } 6:

1: public class MyOutputStream implements AutoCloseable { 3: public void close() throws IOException { 4: throw new IOException(); 5: } 6: Chapter 15. Suppressed Exception CH14 Finally Block Java SE 7 try-with-resources JVM cleanup try-with-resources JVM cleanup cleanup Java SE 7 Throwable getsuppressed Throwable[] getsuppressed() Suppressed

More information

前言 C# C# C# C C# C# C# C# C# microservices C# More Effective C# More Effective C# C# C# C# Effective C# 50 C# C# 7 Effective vii

前言 C# C# C# C C# C# C# C# C# microservices C# More Effective C# More Effective C# C# C# C# Effective C# 50 C# C# 7 Effective vii 前言 C# C# C# C C# C# C# C# C# microservices C# More Effective C# More Effective C# C# C# C# Effective C# 50 C# C# 7 Effective vii C# 7 More Effective C# C# C# C# C# C# Common Language Runtime CLR just-in-time

More information

untitled

untitled 1 Outline ArrayList 類 列類 串類 類 類 例 理 MSDN Library MSDN Library 量 例 參 列 [ 說 ] [] [ 索 ] [] 來 MSDN Library 了 類 類 利 F1 http://msdn.microsoft.com/library/ http://msdn.microsoft.com/library/cht/ Object object

More information

3.1 num = 3 ch = 'C' 2

3.1 num = 3 ch = 'C' 2 Java 1 3.1 num = 3 ch = 'C' 2 final 3.1 final : final final double PI=3.1415926; 3 3.2 4 int 3.2 (long int) (int) (short int) (byte) short sum; // sum 5 3.2 Java int long num=32967359818l; C:\java\app3_2.java:6:

More information

KillTest 质量更高 服务更好 学习资料 半年免费更新服务

KillTest 质量更高 服务更好 学习资料   半年免费更新服务 KillTest 质量更高 服务更好 学习资料 http://www.killtest.cn 半年免费更新服务 Exam : 1Z0-854 Title : Java Standard Edition 5 Programmer Certified Professional Upgrade Exam Version : Demo 1 / 12 1.Given: 20. public class CreditCard

More information

Microsoft PowerPoint - SE7ch07.ppt

Microsoft PowerPoint - SE7ch07.ppt 第七章物件導向設計 : 類別與物件 課前指引在本章中, 我們將正式進入物件導向程式設計的領域, 雖然我們在前面章節, 已經使用過某些 Java 類別庫的類別或物件 ( 例如 :Math 類別 String 物件 ), 但卻未曾學習如何建立一個物件 ( 事實上建立物件必須先宣告類別 ) 在本章中, 我們將從頭教您如何使用 Java 並以物件觀點設計程式, 逐漸體驗物件導向程式設計帶來的好處, 尤其是在發展中大型專案時,

More information

OOP with Java 通知 Project 3: 3 月 29 日晚 9 点 4 月 1 日上课

OOP with Java 通知 Project 3: 3 月 29 日晚 9 点 4 月 1 日上课 OOP with Java Yuanbin Wu cs@ecnu OOP with Java 通知 Project 3: 3 月 29 日晚 9 点 4 月 1 日上课 复习 Java 包 创建包 : package 语句, 包结构与目录结构一致 使用包 : import restaurant/ - people/ - Cook.class - Waiter.class - tools/ - Fork.class

More information

OOP with Java 通知 Project 4: 4 月 19 日晚 9 点

OOP with Java 通知 Project 4: 4 月 19 日晚 9 点 OOP with Java Yuanbin Wu cs@ecnu OOP with Java 通知 Project 4: 4 月 19 日晚 9 点 复习 Protected 可以被子类 / 同一包中的类访问, 不能被其他类访问 弱化的 private 同时赋予 package access class MyType { public int i; public double d; public char

More information

chp6.ppt

chp6.ppt Java 软 件 设 计 基 础 6. 异 常 处 理 编 程 时 会 遇 到 如 下 三 种 错 误 : 语 法 错 误 (syntax error) 没 有 遵 循 语 言 的 规 则, 出 现 语 法 格 式 上 的 错 误, 可 被 编 译 器 发 现 并 易 于 纠 正 ; 逻 辑 错 误 (logic error) 即 我 们 常 说 的 bug, 意 指 编 写 的 代 码 在 执 行

More information

Chapter 9: Objects and Classes

Chapter 9: Objects and Classes Java application Java main applet Web applet Runnable Thread CPU Thread 1 Thread 2 Thread 3 CUP Thread 1 Thread 2 Thread 3 ,,. (new) Thread (runnable) start( ) CPU (running) run ( ) blocked CPU sleep(

More information

untitled

untitled 4.1AOP AOP Aspect-oriented programming AOP 來說 AOP 令 理 Cross-cutting concerns Aspect Weave 理 Spring AOP 來 AOP 念 4.1.1 理 AOP AOP 見 例 來 例 錄 Logging 錄 便 來 例 行 留 錄 import java.util.logging.*; public class HelloSpeaker

More information

第十章 虛擬函數 (Virtual Functions)

第十章 虛擬函數   (Virtual Functions) 繼承的優點 程式碼再使用 (code reuse) 抽象概念再使用 類別階層化 澄清物件間的關係 繼承與 Code Reuse( 被動 ) 主計劃 子計劃 1 子計劃 2 子計劃 3 ( 你所在的組 ) 類別庫函式庫 (.lib.dll) 繼承與 Code Reuse class List { void insert() { void delete() { 重新改寫??? (1) 原始碼在哪? (2)

More information

WiFi,WiMAX之安全分析

WiFi,WiMAX之安全分析 第 8 章 物件導向程式設計入門 1 本章提要 8-1 物件導向與類別 8-2 定義類別 8-3 類別與指標 8-4 friend 類別的夥伴 8-5 綜合演練 2 8-1 物件導向與類別 寫程式的最終目的是為了解決人們的問題, 而當電腦的應用愈來愈廣泛時, 所需設計的程式也變得愈來愈複雜, 而以傳統程序導向的程式設計方式, 要解決真實世界中各種問題也就顯得捉襟見肘 3 物件導向與類別 此時就有人提出一種新的觀念,

More information

第七章 繼承

第七章 繼承 繼承概念的優點 類別再使用 ( 程式碼再使用 ) 抽象化概念再使用 類別關係階層化 1 2-3 簡介繼承 Q: Q: 人 黑猩猩與猴子的有哪些共同屬性? 繼承 靈長類特徵 (( 屬性 )) -- 手 足 脊椎 大拇指型態行為 :: -- 育兒 :: 哺乳 -- 使用工具 人類 黑猩猩 彌猴 人類是靈長類的一種 人類繼承了靈長類應有的特徵及行為 人類繼承了靈長類 2 繼承的概念 員工 (employee)

More information

Microsoft PowerPoint - Fig03_Stack.ppt [相容模式]

Microsoft PowerPoint - Fig03_Stack.ppt [相容模式] 四 堆疊與佇列 (Stack & Queue) 4-. 串列及鏈結串列 4-. 用陣列結構實作堆疊 4-3. 用鏈結串列實作堆疊 4-4. 堆疊的應用 4-5. 佇列 4-6. 用陣列結構實作佇列 4-7 7. 用鏈結串列實作佇列 堆疊的基本觀念. 定義 : 4- 堆疊 當將東西疊成一堆, 而取用的時候由上方來取出. 特性 : 先進後出, 後進先出 ( 號球先放, 但 3 號球會先拿出 ) 3 3

More information

OOP with Java 通知 Project 4: 推迟至 4 月 25 日晚 9 点

OOP with Java 通知 Project 4: 推迟至 4 月 25 日晚 9 点 OOP with Java Yuanbin Wu cs@ecnu OOP with Java 通知 Project 4: 推迟至 4 月 25 日晚 9 点 复习 Protected 可以被子类 / 同一包中的类访问, 不能被其他类访问 弱化的 private 同时赋予 package access class MyType { public int i; public double d; public

More information

Microsoft PowerPoint - SE7ch02.ppt

Microsoft PowerPoint - SE7ch02.ppt 第二章 Java 從零開始 (Java 程式的基本結構 ) 課前指引在本章中, 我們將透過一個非常簡單的 Java 程式來說明 Java 的程式結構 章節大綱 2.1 最簡單的 Java 程式範例 2.2 註解 (comment) 2.6 Java 程式的進入點 main( ) 2.7 Java 的敘述 2.3 package 區 2.4 import 區 2.8 println() 輸出方法的簡易使用法

More information

第3章.doc

第3章.doc 3 3 3 3.1 3 IT Trend C++ Java SAP Advantech ERPCRM C++ C++ Synopsys C++ NEC C C++PHP C++Java C++Java VIA C++ 3COM C++ SPSS C++ Sybase C++LinuxUNIX Motorola C++ IBM C++Java Oracle Java HP C++ C++ Yahoo

More information

雲端 Cloud Computing 技術指南 運算 應用 平台與架構 10/04/15 11:55:46 INFO 10/04/15 11:55:53 INFO 10/04/15 11:55:56 INFO 10/04/15 11:56:05 INFO 10/04/15 11:56:07 INFO

雲端 Cloud Computing 技術指南 運算 應用 平台與架構 10/04/15 11:55:46 INFO 10/04/15 11:55:53 INFO 10/04/15 11:55:56 INFO 10/04/15 11:56:05 INFO 10/04/15 11:56:07 INFO CHAPTER 使用 Hadoop 打造自己的雲 8 8.3 測試 Hadoop 雲端系統 4 Nodes Hadoop Map Reduce Hadoop WordCount 4 Nodes Hadoop Map/Reduce $HADOOP_HOME /home/ hadoop/hadoop-0.20.2 wordcount echo $ mkdir wordcount $ cd wordcount

More information

<4D6963726F736F667420576F7264202D20C8EDC9E82DCFC2CEE7CCE22D3039C9CF>

<4D6963726F736F667420576F7264202D20C8EDC9E82DCFC2CEE7CCE22D3039C9CF> 全 国 计 算 机 技 术 与 软 件 专 业 技 术 资 格 ( 水 平 考 试 2009 年 上 半 年 软 件 设 计 师 下 午 试 卷 ( 考 试 时 间 14:00~16:30 共 150 分 钟 请 按 下 述 要 求 正 确 填 写 答 题 纸 1. 在 答 题 纸 的 指 定 位 置 填 写 你 所 在 的 省 自 治 区 直 辖 市 计 划 单 列 市 的 名 称 2. 在 答

More information

一、

一、 考試時間 : 1 小時 30 分座號 : 全五頁第一頁 注意 : 禁止使用電子計算器 不必抄題, 作答時請將試題題號及答案依照順序寫在試卷上, 於本試題上作答者, 不予計分 一 就下列 Java 程式片斷中加入一個 for 迴圈, 使其印出右側結果 (15 分 ) public class AllNumbers number square cube 0 0 0 public static void

More information

Microsoft PowerPoint - C-Ch08.ppt

Microsoft PowerPoint - C-Ch08.ppt 函數 8-1 函數 函數 (function) 可以整合某些特定的處理 整合好的處理可以隨時呼叫使用 C 語言的程式本身也是一個函數, 也就是 main() 函數 使用函數可簡化程式 提款的處理 1. 將提款卡插入自動提款機當中 2. 輸入個人密碼 3. 指定提款金額 4. 領取款項 5. 確認款項與提款卡 提款處理 8-2 函數的定義與呼叫 定義函數的語法 : 傳回值的型態函數名稱 ( 引數列表

More information

1 4 1.1 4 1.2..4 2..4 2.1..4 3.4 3.1 Java.5 3.1.1..5 3.1.2 5 3.1.3 6 4.6 4.1 6 4.2.6 5 7 5.1..8 5.1.1 8 5.1.2..8 5.1.3..8 5.1.4..9 5.2..9 6.10 6.1.10

1 4 1.1 4 1.2..4 2..4 2.1..4 3.4 3.1 Java.5 3.1.1..5 3.1.2 5 3.1.3 6 4.6 4.1 6 4.2.6 5 7 5.1..8 5.1.1 8 5.1.2..8 5.1.3..8 5.1.4..9 5.2..9 6.10 6.1.10 Java V1.0.1 2007 4 10 1 4 1.1 4 1.2..4 2..4 2.1..4 3.4 3.1 Java.5 3.1.1..5 3.1.2 5 3.1.3 6 4.6 4.1 6 4.2.6 5 7 5.1..8 5.1.1 8 5.1.2..8 5.1.3..8 5.1.4..9 5.2..9 6.10 6.1.10 6.2.10 6.3..10 6.4 11 7.12 7.1

More information

投影片 1

投影片 1 Chap 8 繼承 抽象類別與介面 8-1 類別的繼承 8-2 介面 8-3 介面的繼承 8-4 抽象類別 8-5 抽象類別與介面 8-6 常數類別 8-1 類別的繼承 8-1-1 類別架構 8-1-2 類別的繼承 8-1-3 覆寫和隱藏父類別的方法 8-1-4 隱藏父類別的成員變數 8-1-5 使用父類別的建構子 8-1-1 類別架構 - 繼承關係 類別的繼承關係可以讓我們建立類別架構, 在 UML

More information

Strings

Strings Inheritance Cheng-Chin Chiang Relationships among Classes A 類 別 使 用 B 類 別 學 生 使 用 手 機 傳 遞 訊 息 公 司 使 用 金 庫 儲 存 重 要 文 件 人 類 使 用 交 通 工 具 旅 行 A 類 別 中 有 B 類 別 汽 車 有 輪 子 三 角 形 有 三 個 頂 點 電 腦 內 有 中 央 處 理 單 元 A

More information

Adobe® Flash® 的 Adobe® ActionScript® 3.0 程式設計

Adobe® Flash® 的 Adobe® ActionScript® 3.0 程式設計 337 18 Adobe Flash CS4 Professional MovieClip ActionScript Flash ActionScript Flash Flash Flash MovieClip MovieClip ActionScript ( ) MovieClip Flash Sprite ActionScript MovieClip ActionScript 3.0 Shape

More information

基于CDIO一体化理念的课程教学大纲设计

基于CDIO一体化理念的课程教学大纲设计 Java 语 言 程 序 设 计 课 程 教 学 大 纲 Java 语 言 程 序 设 计 课 程 教 学 大 纲 一 课 程 基 本 信 息 1. 课 程 代 码 :52001CC022 2. 课 程 名 称 :Java 语 言 程 序 设 计 3. 课 程 英 文 名 称 :Java Programming 4. 课 程 类 别 : 理 论 课 ( 含 实 验 上 机 或 实 践 ) 5. 授

More information

Microsoft PowerPoint - EmbSys101_Java Basics.ppt [相容模式]

Microsoft PowerPoint - EmbSys101_Java Basics.ppt [相容模式] Java Basics Hi Hsiao-Lung Chan, Ph.D. Dept Electrical Engineering Chang Gung University, Taiwan chanhl@maili.cgu.edu.twcgu 執行環境 - eclipse 點選 eclipse 軟體執行檔 設定工作路徑 eclipse 開啟 2 建置 Java 專案 File New project

More information

OOP with Java 通知 Project 4: 5 月 2 日晚 9 点

OOP with Java 通知 Project 4: 5 月 2 日晚 9 点 OOP with Java Yuanbin Wu cs@ecnu OOP with Java 通知 Project 4: 5 月 2 日晚 9 点 复习 Protected 可以被子类 / 同一包中的类访问, 不能被其他类访问 弱化的 private 同时赋予 package access class MyType { public int i; public double d; public char

More information

Microsoft PowerPoint - ch6 [相容模式]

Microsoft PowerPoint - ch6 [相容模式] UiBinder wzyang@asia.edu.tw UiBinder Java GWT UiBinder XML UI i18n (widget) 1 2 UiBinder HelloWidget.ui.xml: UI HelloWidgetBinder HelloWidget.java XML UI Owner class ( Composite ) UI XML UiBinder: Owner

More information

Microsoft Word - 新1-12.doc

Microsoft Word - 新1-12.doc 实训 5 面向对象编程练习 实训 5 面向对象编程练习 5.1 实训目的 通过编程和上机实验理解 Java 语言是如何体现面向对象编程基本思想 以及如何创建类 和对象 了解成员变量和成员方法的特性 5.2 实训要求 编写一个体现面向对象思想的程序 编写一个创建对象和使用对象的方法的程序 5.3 实训内容 5.3.1 创建对象并使用对象 1 定义一个 Person 类 可以在应用程序中使用该类 成员属性

More information

資料結構之C語言重點複習

資料結構之C語言重點複習 鏈結串列自編教材 ( 一 ) 本教材 ( 一 ) 目標問題 : 每次以亂數產生一 [0,1000] 之整數值, 若該值 >100, 則以同方式繼續產生下一亂數值, 若該值

More information

PowerPoint Presentation

PowerPoint Presentation C++ 與資料結構 NTU CSIE 大綱 使用類別 (Class) 建立資料結構 使用繼承 (Inheritance) 建立資料結構 C++ 物件導向 以物件為基礎的程式設計, 將程式中互動的單元視為一個個的物件 封裝 (Encapsulation) 封裝物件資訊是第一步, 您要瞭解如何使用類別定義物件, 像是定義物件的屬性 方法 ( 行為 ) 等等, 類別是建構物件時所依賴的規格書 Example

More information

第二章 簡介類別

第二章  簡介類別 Instructor Hsueh-Wen Tseng 曾學文,hwtseng@nchu.edu.tw Textbook C++ 程式設計風格與藝術 (O Reilly). Requirements Assignment x? 100% TAs 第一章概觀 C++ 1-2 二種版本的 C++ 1-5 初步檢視類別 1-1 何謂物件導向程式設計 1-8 C++ 的關鍵字 1-2 二種版本的 C++ //

More information

C 1

C 1 C homepage: xpzhangme 2018 5 30 C 1 C min(x, y) double C // min c # include # include double min ( double x, double y); int main ( int argc, char * argv []) { double x, y; if( argc!=

More information

Microsoft PowerPoint - 04-array_pointer.ppt

Microsoft PowerPoint - 04-array_pointer.ppt Array 與 Pointer Array Dynamical Memory Allocation Array( 陣列 ) 陣列是用來存放同樣型態的資料陣列的大小必須在程式中預先設定在程式執行中, 陣列的大小無法改變陣列中的資料是透過索引 (index) 來存取 一維陣列的宣告 type array_name[array_size]; int iarray[100]; /* an integer array

More information

C/C++程序设计 - 字符串与格式化输入/输出

C/C++程序设计 - 字符串与格式化输入/输出 C/C++ / Table of contents 1. 2. 3. 4. 1 i # include # include // density of human body : 1. 04 e3 kg / m ^3 # define DENSITY 1. 04 e3 int main ( void ) { float weight, volume ; int

More information

Microsoft Word - CPMidTerm2010SpringSolution

Microsoft Word - CPMidTerm2010SpringSolution 通識計算機程式設計期中考參考解答, 4/23/2010 1. (a) 宣告 double 變數 z, bool 變數 b, int 變數 i (3%) 答 : double z; bool b; (b) 在螢幕顯示一行字, 要求使用者輸入一個浮點數. (3%) 答 : Console.WriteLine(" 輸入一個浮點數 "); (c) 自鍵盤讀入一個浮點數., 並將其值存入已宣告之 double

More information

星星排列 _for loop Protected Sub Page_Load(ByVal sender As Object, ByVal e As Dim h As Integer = 7 'h 為變數 ' Dim i, j As Integer For i = 1 To h

星星排列 _for loop Protected Sub Page_Load(ByVal sender As Object, ByVal e As Dim h As Integer = 7 'h 為變數 ' Dim i, j As Integer For i = 1 To h 資訊系統與實習 製作 : 林郁君 一 2009.09.28 9X9 'button 被按下後 ' Dim i, j As Integer For i = 1 To 9 'i 從 1 到 9' For j = 1 To 9 'j 從 1 到 9' If j * i < 10 Then ' 如果 j 乘上 i 是為個位數 ' Response.Write(i & "*" & j & " =" & i *

More information