WiFi,WiMAX之安全分析

Size: px
Start display at page:

Download "WiFi,WiMAX之安全分析"

Transcription

1 第 8 章 物件導向程式設計入門 1

2 本章提要 8-1 物件導向與類別 8-2 定義類別 8-3 類別與指標 8-4 friend 類別的夥伴 8-5 綜合演練 2

3 8-1 物件導向與類別 寫程式的最終目的是為了解決人們的問題, 而當電腦的應用愈來愈廣泛時, 所需設計的程式也變得愈來愈複雜, 而以傳統程序導向的程式設計方式, 要解決真實世界中各種問題也就顯得捉襟見肘 3

4 物件導向與類別 此時就有人提出一種新的觀念, 亦即程式本身要能模擬真實世界的運作方式, 設計程式時的思考方式便是以真實世界的運作方式來思考如何解決問題, 這種新的計計理念就稱為物件導向程式設計, 其中模擬真實世界的方式就是使用物件 (object) 4

5 物件 :C++ 舞台劇的演員 如果將 C++ 程式比擬為一齣舞台劇的話, 那麼要說明甚麼是物件導向程式語言就不難了 要上演一齣舞台劇, 首先必須要有導演, 先將自己想要表達的理念構思好 然後再由編劇將劇裡所需要的角色 道具描繪出來, 並且將這些元素搭配劇情撰寫出劇本 最後, 再由演員以及道具在舞台上依據劇本實際的演出 5

6 物件 :C++ 舞台劇的演員 每一個 C++ 程式也一樣可以分解為這些要素, 導演就是撰寫程式的您, 要先設想程式想要完成甚麼事情 接下來的編劇當然還是您, 必須先規劃出如何完成工作 以下就說明 C++ 程式中相對於一齣舞台劇的各個元素, 讓讀者瞭解如何運用這樣的觀念設計程式 6

7 類別 (Class) 與物件 一齣舞台劇有了基本的構思之後, 接下來就要想像應該有哪些角色來展現這齣劇, 每一種角色都會有它的特性以及要做的動作 舞台劇的角色與演員 C++ 的類別與物件 7

8 舞台劇的角色與演員 舉例來說, 如果演出西遊記, 不可缺少的當然是美猴王這位主角, 它有多種表情 還能夠進行 72 變 除了美猴王以外, 當猴子猴孫的小猴子也少不了, 這些小猴子可能有 3 種表情, 而且可以跑步 爬樹等等 想好了角色 編好劇本後, 還得找演員來演出這些角色, 否則只是空有劇本, 觀眾根本看不到 有些角色, 像是美猴王, 在整個劇中只有一個 ; 但有些角色, 像是小猴子, 可能就會有好幾個, 就得找多個演員來演出這些角色, 只是每一個猴子站的位置 表情不一樣 8

9 舞台劇的角色與演員 9

10 舞台劇的角色與演員 同樣的道理, 舞台上除了演員外, 可能還需要一些布景或道具, 每一種布景也有它的特性與可能的動作 舉例來說, 西遊記中美猴王騰雲駕霧, 舞台上可少不了雲 雲可能有不同顏色 形狀, 也可以飄來飄去, 而且同時間舞台上可能還需要很多朵雲 10

11 舞台劇的角色與演員 這些不論是要演員演的 還是要道具來表現的, 都可以通稱為角色 在劇本中就以文字來描述這些角色的特性以及行為, 並且描述整個劇的進行, 然後再找演員或是製作道具來實際演出 11

12 C++ 的類別與物件 每種角色都有其自我的屬性和行為, 這些角色在 C++ 中就稱為類別 (Class), 例如小猴子這個角色, 應該都具有相似的屬性及行為 ( 例如都會爬樹 ) 而實際演出的演員則稱為物件 (Object), 每個物件都是獨立的個體, 可以表現出與眾不同的行為 例如在一場戲中, 有的小猴子在玩水 有的小猴子在爬樹等等 當我們在設計程式時, 首先就是規劃出參與演出的有哪些類型的角色, 並定義出相對應的類 12 別

13 C++ 的類別與物件 接著劇本就是寫在 main() 函式中, 在 main() 函式中各演出者要一一上場或放置在特定的位置上, 這些演出者就是所謂的物件, 它們是根據事先定義好的類別所產生的 例如需要有 5 個小猴子上場, 要由小猴子的類別產生 5 個小猴子物件上場演出 當我們構思好故事大綱後, 就需擬定參與角色的特性, 此時就是要宣告類別, 因此以下就先看如何宣告及定義類別 13

14 8-2 定義類別 類別又稱為使用者自訂資料型別 (User Defined Data Type), 表示它是由程式設計人員自訂出的資料型別, 而編譯器也會把類別當成一種資料型別來處理 定義類別的語法 資料成員 成員函式 靜態成員 14

15 定義類別的語法 我們可以用 class 或 struct 關鍵字來定義類別, 但最常用到的則是 class 定義類別時的語法如下 : 15

16 定義類別的語法 以上就是定義類別的敘述架構, 例如以下就是定義一個空白的類別, 其名稱為 Car: 完成類別的定義, 就等於告訴編譯器我們已定義了一個新資料型別, 接著就能用它來建立物件了, 宣告的方式和使用內建資料型別宣告變數一樣 : 16

17 定義類別的語法 在此類別名稱就像是一個新的型別名稱, 並可用來定義出各個性質相同的物件, 這些物件就稱為該類別的個體 (Instance), 例如上例中的 mycar yourcar 就稱為 Car 類別的個體 此外我們也可在定義類別時, 即建立物件, 不過這種用法目前較少使用 : 17

18 定義類別的語法 以上雖完成一個自訂資料型別的定義, 不過這樣的空白類別不能做什麼事, 所以我們要在裏面加入一些內容來描述類別的屬性及行為 類別的屬性是透過資料成員 (Data Member) 來模擬, 類別的行為則是以成員函式 (Member Function) 來模擬, 以下就分別來看如何在類別中定義這 2 種成員 18

19 資料成員 資料成員的宣告方式和一般的變數相同, 只不過資料成員是被宣告在類別之內, 例如描述汽車的類別可能需要記錄載油量 耗油量等屬性, 此時可在類別中宣告 2 個資料成員來代表這些屬性 : 19

20 資料成員 請注意, 資料成員不能設定初始值, 因為基本上每個物件彼此都不盡相同, 若類別的資料成員可設定初始值, 就變成每個物件的該項屬性都相同, 並不合理, 所以在定義類別時, 不可將資料成員設定初始值 20

21 物件導向程式設計的特性 : 封裝 物件導向程式設計具有三項特性 : 封裝 (Encapsulation ) 繼承 (Inheritance) 多面性 (Polymorphism), 本章我們先來認識什麼是封裝 封裝的意思是指將類別的屬性及操作屬性的方法都包裝在其中, 而且只對外公開一些操作資料的方法, 外人無法直接存取類別 ( 物件 ) 未公開的屬性 21

22 物件導向程式設計的特性 : 封裝 封裝的目的是讓使用類別的人, 不需要理會 瞭解類別中包裝了什麼樣的內容, 他只需透過公開的方法來操作物件即可達到使用類別的目的 ( 就像只要會操作搖控器就能看電視, 而不需瞭解電視內部的設計 ) 這樣的理念讓設計好的類別有如軟體 IC, 程式設計人員可將既有的 IC ( 類別 ) 組合起來, 實作出程式的功能, 如此不但讓程式碼可重複使用, 更能提高工作效率 22

23 物件導向程式設計的特性 : 封裝 封裝的另一個意義則是資料隱藏 (Data Hiding), 類別中的成員預設都無法被外界任意存取 因為若能被外界任意存取 修改資料成員, 又失去了物件導向程式設計的意義 類別中不能被外部存取的成員, 統稱為私有 (private) 成員 ; 相對於私有成員則是公開 (public) 成員, 它們可被類別外部的程式任意存取 23

24 物件導向程式設計的特性 : 封裝 為了方便說明, 我們暫時先將範例類別的資料成員設為公開的成員, 設定的方式就是在定義資料成員之前, 加上 public 關鍵字及冒號 : 24

25 物件導向程式設計的特性 : 封裝 public 稱為存取修飾字 (Access Specifier), 存取修飾字共有 3 個, 分別是 : public: 在此段落中的成員都是公開的成員 若是用 struct 定義類別, 則類別中的成員預設是公開的成員 private: 在此段落中的成員都是私有的成員 用 class 定義類別時, 則成員預設都是私有的成員 protected: 在此段落中的成員對外部程式而言屬於私有的成員, 但對繼承的類別而言, 則是公開的成員 25

26 物件導向程式設計的特性 : 封裝 由於使用 struct 定義類別時, 預設所有的成員都是公開的成員, 所以上述的例子若改用 struct 定義需寫成 : 26

27 struct 與 class 的差別 用 struct 與 class 定義類別只有兩個差異 : struct 的成員預設為 public;class 的成員預設為 private 繼承 struct 時, 預設是以 public 的方式繼承 ; 繼承 class 時, 則是以 private 的方式繼承 27

28 struct 與 class 的差別 除了以上兩點外, 用 struct 和 class 是沒有差別的 但由於 struct 是承襲自 C 語言而來的, 只不過在 C++ 中增強 擴充為具有類別的功能 ; 再加上 struct 成員預設可公開存取又失去封裝的意義, 因此大部份的 C++ 程式設計人員都習慣用 class 來定義類別, 而較少使用 struct 28

29 存取資料成員 定義了公開的資料成員後, 在類別以外的程式中 ( 例如 main() 函式中 ), 可透過成員存取 (class member access) 運算子. 來存取各物件中的公開資料成員 : 例如 : 29

30 存取資料成員 透過這種方式, 我們可以用 Car 類別寫一個模擬汽車行駛狀況的程式如下 : 30

31 存取資料成員 31

32 存取資料成員 32

33 存取資料成員 33

34 存取資料成員 第 20 行的 while 迴圈會在油量大於 0 的狀況下持續執行, 當油量不足以走完指定里程時, 就會在第 31 行顯示相關資訊, 並於第 33 行跳出迴圈 在此要提醒讀者, 類別的公開成員可由外界自由存取, 所以我們也可在建構物件時, 即以設定陣列元素 結構體成員初始值的相同方式來設定其公開成員的初始值, 所以上例中第 12~14 行可簡化成一行敘述 : 34

35 存取資料成員 我們用 gas 及 eff 兩個資料成員來表現汽車物件的屬性及狀態, 這樣的表示方式雖然不錯, 但上述程式的寫法, 也等於只是將變數放在類別之中, 完全沒有發揮類別的資料封裝功效, 因此我們必須再加入可操作物件的成員函式, 讓汽車類別更能模擬真實汽車的行為 35

36 const 資料成員 資料成員也可加上 const 關鍵字成為常數, 由於常數一經宣告即無法更改其值, 所以 const 資料成員可在類別定義中設定初值, 這是它們與一般資料成員不同之處 舉例來說, 若汽車類別代表的是同款式的車型, 其耗油量是固定的, 即可將之宣告為 const 36

37 成員函式 成員函式的種類 定義成員函式 呼叫成員函式 37

38 成員函式的種類 成員函式 (member function) 乃是類別的靈魂所在, 也是設計類別時的成敗關鍵 它不僅要提供一個公開的類別操作界面, 有時還必須完成許多特殊的功能, 我們大致可以將成員函式依功能分成下列幾種 : 用來操作物件的函式 : 例如我們定義了一種字串類別, 則複製字串 搜尋字串 替代字串等函式都是所謂操作物件的方法 38

39 成員函式的種類 用來存取物件內資料成員的函式 : 由於我們通常都將資料成員封裝在類別之內 ( 設為 private), 所以外界必須經由這類函式才能間接取得代表物件屬性或狀態的資料成員 僅供類別內部使用的函式成員 : 第 6 章提過, 有一項功能 ( 或說一段程式碼 ) 會重複用到時, 即可將它寫成函式以提高程式撰寫效率 同理, 如果有多個成員函式需要用到同一個功能, 但又不希望公開給外界使用, 那麼就可以將這個功能獨立成一個函式, 並將之設為 private 而封裝在類別之內 39

40 成員函式的種類 類別的自動管理函式 : 當一個新物件被產生或生命期結束時, 我們可能需要做一些特別的處理, 例如新物件要做一些初始化或配置記憶體的工作 ; 而物件的生命期結束時, 可能也要釋放所配置的記憶體或是做一些其他的善後工作 前兩類成員函式是初學者最常接觸到的, 以下就來介紹如何定義成員函式, 以設計操作物件及存取資料成員的成員函式 40

41 定義成員函式 成員函式既然也是函式, 所以定義的方式和一般函式沒什麼不同 : 都要有函式名稱 傳回值 參數等等 定義函式成員有兩種方式, 第 1 種是直接將函式本體定義在類別的大括號中, 此法適用在內容只有 1 2 行敘述的函式 : 41

42 定義成員函式 42

43 定義成員函式 上例中的 geteff() 及 checkgas() 函式都只有一行敘述, 因此將函式本體定義在類別內即可 定義在類別內的函式有項特性 : 就是它們預設都是行內函式, 換言之, 上述的定義對編譯器來說, 就相當於我們有在函式前加上 inline 關鍵字 : 43

44 定義成員函式 另一種定義函式的方式, 則是只在類別內宣告函式原型, 但將函式本體定義在類別的大括號之外, 此方法適用在函式內敘述較多的情況 由於類別的成員函式可與程式中的一般函式 甚至其它類別的成員函式使用相同的名稱, 因此在定義成員函式時, 需以類別名稱及範圍解析運算子 :: 明確讓編譯器瞭解我們定義的是哪一個類別的成員函式 44

45 定義成員函式 45

46 定義成員函式 請注意, 成員函式與一般函式或其他類別中的函式同名並不算多載 (overloading), 因為它們都分屬不同的視野, 所以彼此互不相關, 根本不會形成多載 只有同一個類別內的同名函式, 才會型成多載 : 46

47 定義成員函式 47

48 呼叫成員函式 成員函式為類別的成員, 在使用上和一般函式有個最大的差異, 即成員函式必須透過類別的物件來呼叫, 例如 : 另外, 大家應會注意到, 在前述的成員函式定義中, 都直接存取資料成員, 而未透過成員存取運算子 其道理很簡單, 當我們用物件呼叫成員函式時, 函式所存取的資料成員, 就是該物件自己的資料成員 : 48

49 呼叫成員函式 49

50 呼叫成員函式 由於我們每次都必須以 " 物件. 函式名稱 " 的方式來呼叫成員函式, 所以成員函式自然不會與類別以外的其他函式混淆 認識成員函式的定義與呼叫方式後, 我們將前面的 Car 類別重新定義, 將資料成員設為私有, 而外部則可透過公開的成員函式來操作物件, 範例程式內容如下 : 50

51 呼叫成員函式 51

52 呼叫成員函式 52

53 呼叫成員函式 53

54 呼叫成員函式 1. 第 15~28 行的 go() 函式即為模擬汽車行走的函式, 參數為要行走的公里數, 函式中會檢查油量是否足夠, 並將車子原本的油量減掉此趟耗掉的部份 2. 第 30~34 行的 init() 函式則是用於初始化私有的資料成員, 因我們已將資料成員宣告於 private: 的段落中, 所以只能透過成員函式來設定其值 其實類別還有一種更佳的成員初始化方式 54

55 呼叫成員函式 類別經過一番重新設計後, main() 函式的內容變得相對簡單, 而且 main() 函式的功能就很容易一目瞭然 或許有讀者覺得這樣設計, 似乎使整個程式變得複雜, 其實這是因為我們未讓類別發揮重複使用的效果, 如果目前是在開發中大型的專案, 則只要類別都妥善定義好, 則開發各部份的程式就相對簡單許多, 這也是物件導向程式設計的最大好處 55

56 類別中成員的宣告慣例 在 Ch08-02.cpp 範例程式第 4~13 行 Car 類別的定義中, 將私有的成員也特地宣告在 private: 段落中 讀者或許會覺得奇怪, 為何不直接在類別定義的大括號一開始, 就先宣告私有的成員, 這樣不是可少寫一個 "private:" 嗎? 56

57 類別中成員的宣告慣例 57

58 類別中成員的宣告慣例 左邊的寫法看似要多寫一點字, 但它卻是常見的 C++ 程式的慣用寫法 (convention), 其寫法是在類別定義中, 依最公開的成員先出現的原則來宣告資料成員及成員函式, 所以採這種寫法時, 即是依 public protected private 三種成員的順序宣告 當然這只是一種寫作習慣, 並非強制的語法規則 58

59 靜態成員 靜態資料成員 靜態成員函式 59

60 靜態資料成員 我們也可將類別中的資料成員前面加上 static 關鍵字, 使其成為靜態的資料成員 一般的資料成員是每個物件都有自己的資料成員 ; 但靜態資料成員則是所有同類別的物件共用的, 換言之類別的靜態資料成員在記憶體中只有一份, 每個同類別物件所存取到的靜態資料成員都是相同的, 若有物件更改了靜態資料成員的值, 則所有物件存取到的值也跟著改變 由於這項特性, 靜態資料成員適用於存放類別的共通屬性 60

61 靜態資料成員 舉例來說, 前面範例的汽車類別, 若是用來代表同型的車款, 則基本的耗油量應該是相同的, 此時即可將代表耗油量的資料成員, 宣告為靜態成員, 讓每個物件都使用同一個資料 : 61

62 靜態資料成員 靜態資料成員會被視為獨立的個體, 並不專屬於哪一個物件, 所以我們必須額外定義它 ( 初始化其值 ), 定義的形式如下 : 62

63 靜態資料成員 雖然這樣的定義方式好像在定義全域變數, 但靜態資料成員並非全域變數, 這一點要分清楚 以下範例示範物件共用靜態資料成員的情形 : 63

64 靜態資料成員 64

65 靜態資料成員 第 9 行宣告的靜態資料成員於第 12 行定義, 因此在 main() 函式中建立物件後, 即可透過物件立即存取其值 在第 21 行時以 One 物件呼叫成員函式設定靜態資料成員的值, 在第 22 行用 Two 物件取得靜態資料成員的值已經是更動後的新數值, 印證了各物件共用同一靜態資料成員的事實 65

66 靜態成員函式 除了資料成員可加上 static 關鍵字變成靜態資料成員外, 成員函式也可用同樣的方法設定為靜態成員函式 (static member function) 靜態成員函式與一般成員函式最大的不同包括 : 不需透過物件即可呼叫, 但為了與一般非成員函式區分, 在呼叫時需以類別名稱 :: 函式名稱 () 的方式呼叫 在函式中只能存取靜態的資料成員, 不能存取非靜態的成員 66

67 靜態成員函式 使用靜態成員函式的目的主有有兩種 : 首先就是設計成用來修改靜態資料的函式 ; 此外基於不需物件即可呼叫的特性, 靜態成員函式也適合用來設計通用性 工具性的類別 舉例來說, 在台灣加油時是以公升為單位, 在美國等地則是以加侖為單位, 我們就可替汽車類別設計換算這兩種單位的成員函式, 並設為 static, 讓所有程式不建立物件, 也能呼叫該函式來進行單位換算 請參考以下範例 : 67

68 靜態成員函式 68

69 靜態成員函式 69

70 8-3 類別與指標 指標在類別上的應用包括 : 建立指向物件的指標, 以及在類別中使用指標型別的資料成員, 其中包括一個所有類別都有的 this 指標 指向物件的指標 指標型別的成員 this 指標 70

71 指向物件的指標 建立指向基本資料型別的指標時, 要存取變數值, 需使用間接存取運算子 * 但建立指向物件的指標時, 要用物件指標存取公開的成員時, 並不需使用間接存取運算子, 但需使用另一個成員存取運算子 "->" ( 橫線加大於符號 ) 來存取成員, 例如 : 71

72 指向物件的指標 宣告類別指標變數時, 可用 new 運算子建立新的物件, 讓指標可指向該物件, 請參考以下範例 : 72

73 指向物件的指標 73

74 指標型別的成員 我們知道, 指標變數在宣告時並未設定要指向何處, 所以若在類別中使用指標型別的資料成員時, 必須記得在物件建立即初始化其指標成員所指的位址, 例如我們可在初始化物件的成員函式中, 動態配置記憶體給物件的資料成員, 請參考以下的範例 : 74

75 指標型別的成員 75

76 指標型別的成員 76

77 指標型別的成員 Str 類別只是個很簡單的字串類別, 其唯一的資料成員就是指向字串的指標, 由於建立物件時不會讓指標指向任何字串, 所以設計了兩個多載的 set() 成員函式, 其中之一是傳入字串指標, 並將資料成員也指向相同的位址 ; 另一個不需參數的版本, 則是直接配置新的記憶體空間, 然後將 "Empty!" 這個字串內容複製進入 77

78 指標型別的成員 上述的 Str 類別設計方式仍不夠好, 因為要初始化字串內容相當不便, 且要具有實用功能的字串類別, 必須設計相當多處理字串的成員函式 所幸 C++ 已經幫我們設計好一個實用的 string 類別, 在第 11 章就會介紹如何使用 string 類別處理字串 78

79 this 指標 當我們建立物件時, 每個物件都會享有獨自的記憶體空間, 以存放各自擁有的非靜態資料成員, 所以每個物件的資料成員都是獨立互不干擾 但是類別的成員函式則是所有物件共用的, 在記憶體中只會存一份成員函式的程式碼, 每個物件呼叫成員函式時, 都是執行到同一份程式碼 79

80 this 指標 這時候就出現一個問題, 當我們透過各物件呼叫成員函式來存取資料成員時, 成員函式是如何得知目前呼叫它的是哪一個物件? 如何存取到正確物件的資料成員, 而不會存取到別的物件的資料成員? 答案很簡單, C++ 編譯器在編譯成員函式時, 偷偷做了幾個動作, 以便讓成員函式能存取到正確物件的資料成員 : 80

81 this 指標 1. 編譯器會自動在成員函式的參數列最前面加上一個該類別的指標參數, 並以 this 為參數名稱, 然後再將函式定義內所有出現資料成員的部份, 均改成 this-> 資料成員的形式 : 81

82 this 指標 2. 替程式中實際呼叫成員函式的敘述, 偷偷加上呼叫者物件的位址做為第一個參數, 例如 : 這樣一來, 就等於讓成員函式都能從 this 指標取得呼叫物件的資料成員, 所以就不會發生存取到錯誤的資料成員的情形 82

83 this 指標 為讓讀者體會這個隱含在程式中的 this 指標確實存在, 我們用以下的範例程式透過 this 指標來取得物件的位址 : 83

84 this 指標 84

85 this 指標 第 8 行的 showthis() 成員函式將程式未定義的 this 指標輸出到 cout, 也就是輸出指標所指的位址 結果程式仍可順利編譯 連結, 表示 this 指標確實存於程式之中 85

86 使用 this 指標的時機 在某些狀況下會需要用到 this 指標, 例如當成員函式的參數名稱與資料成員的名稱相同 或是要做整個物件的複製, 請參見以下的例子 : 86

87 使用 this 指標的時機 87

88 使用 this 指標的時機 88

89 使用 this 指標的時機 在第 7 行的 copy 函式中, 將參數物件 source 直接用指定運算子設定給 this 指標所指的物件, 此敘述的功用就是讓兩個物件的資料成員值變得完全一樣, 也就是把 source 物件的資料成員值複製給 this 物件的資料成員 89

90 使用 this 指標的時機 第 13 行的 Time::set() 成員函式其參數名稱與類別資料成員的名稱相同, 此時成員函式預設只會存取到它自己的局部變數, 也就是函式的參數 因此在函式中, 可用 "this-> 資料成員 " 的語法來存取物件的資料成員, 在第 15~17 行就是透過此方式將各參數的值指定給同名的資料成員 90

91 傳回物件的成員函式 另一種會應用到 this 指位器的情況, 就是希望類別的成員函式能以有如 cout 和 << 運算子的使用方式一樣, 可以串接在一起呼叫, 例如 : 91

92 傳回物件的成員函式 因為. 和 -> 運算子的結合順序都是由左到右, 所以 t.set() 會先執行, 執行完後的傳回值需為 Time 類別的物件, 然後再以傳回的物件來呼叫 show() 那麼, 要如何來設計 set() 呢?很簡單, 就是把它的傳回值設為 Time 類別的參考型別, 並在函式本體中傳回 this 指標所指的物件 : 92

93 傳回物件的成員函式 在執行 t.set(12,10,45).show(); 時, t.set(12,10,45) 會先執行並傳回 t ( 時 t 的值已被更改 ), 然後再以傳回的 t 來執行 t.show(): 請參見以下範例 : 93

94 傳回物件的成員函式 94

95 傳回物件的成員函式 95

96 傳回物件的成員函式 我們一直使用的 cout 及 << 運算子的串接輸出方式, 就是這種傳回物件本身的應用 因為在 C++ 中運算子也算是一種函式, 所以也可以設計成具有這種串接的特性 96

97 8-4 friend 類別的夥伴 類別是一個封裝良好的機構, 可以將內部私有的資料與外界完全隔離, 但這有時卻反而會造成一些困擾, 尤其是當我們想要在類別以外的 ( 成員或非成員 ) 函式來存取已封裝好的資料時 以字串類別為例, 我們知道在標準函式庫中有一個 strcmp() 函式可以做字串的比較, 如果我們想要另外寫一個 strcmp(str, Str) 的多載函式, 使得二個 Str 物件也可以用 strcmp() 來做比較, 這時除了將字串的成員設為公開成員外是否還有其它方法呢? 97

98 friend 類別的夥伴 答案就是將自訂的 strcmp( ) 宣告為 Str 類別的夥伴 (Friend) 被宣告為類別夥伴的函式具有存取私有成員的特權, 所以這樣一來就不必將類別的資料成員設為公開成員而破壞類別資料隱藏的特性 要將函式宣告為類別夥伴很簡單, 只需在類別中加上該函式的原型宣告, 並在宣告最前面加上 friend 關鍵字 : 98

99 friend 類別的夥伴 用關鍵字 friend 宣告以後, 在 strcmp(str&, Str&) 的函式本體中, 便可以直接存取 Str 類別中任何私有的成員 夥伴的宣告可以放在類別定義內的任何位置, 不過我們一般都將它放在最前面, 以方便閱讀 以下就是加入夥伴比較函式的 Str 類別 : 99

100 friend 類別的夥伴 100

101 friend 類別的夥伴 101

102 誰可以做為類別的夥伴 由於宣告為夥伴的對象並非類別內的成員, 所以沒有 private protected 或 public 之分 可以做為夥伴的對象有下列三種 : 1. 一般函式 : 例如前面提到的 strcmp() 函式 且同一個函式可以做為多個類別的夥伴, 例如 : 2. 其他類別內的成員函式 : 但這個類別必須是已定義好的, 例如 : 102

103 誰可以做為類別的夥伴 103

104 誰可以做為類別的夥伴 注意, copy() 函式本身的定義必須放在 String 類別的定義之後, 這是因為 copy() 要用到 Str 內的資料成員 所以如果我們想要將 copy() 的定義放在 MemBlock 類別之內的話, 必須用下面第三種方法 3. 其他的類別 : 這必須以 friend class 夥伴類別的名稱 ( 其中 class 可以省略 ) 來宣告 當甲類別被宣告為乙類別的夥伴時, 所有甲類別中的成員函式均可任意存取乙類別內的非共用資料 例如 : 104

105 誰可以做為類別的夥伴 105

106 8-5 綜合演練 複數類別 堆疊類別 106

107 複數類別 複數是在進階的數學應用中經常用到的數值, 但在內建資料型別中並沒有複數這樣的類別, 因此在 C++ 發展初期, 就有不少人都嘗試設計一個複數 (Complex) 類別來使用 不過到後來, C++ 標準組織就決定在標準類別庫中加入複數類別, 讓有需要的程式設計人員省下不少工夫 107

108 複數類別 在此我們還是利用自訂複數類別來做練習, 讓讀者能熟悉類別的定義及使用 複數的組成可分為實數的實部與虛數的虛部, 所以複數類別至少需有 2 個資料成員來儲存這兩個值, 而複數類別的四則運算也有些特別之處, 以下程式示範一個含加減法成員函式的陽春複數類別 : 108

109 複數類別 109

110 複數類別 110

111 複數類別 這個陽春的類別共有 4 個成員函式, 分別是設定數值的 set() 及顯示數值的 show(), 以及加減法的函式 加減法函式分別依照複數實部加實部 虛部加虛部的計算規則設計, 並傳回物件本身 由於我們還未學到一些實用的類別功能設計方式, 所以這幾個函式的設計方式都不太恰當, 例如加減法函式都改變呼叫物件的值, 當然我們也可修改成建立新複數物件, 並將計算結果設定給新物件, 最後再傳回新物件的方式 111

112 堆疊類別 初學程式設計者, 免不了會接觸到一些基本的資料結構 (Dat a Structure), 其中堆疊 (stack) 是初學者最常接觸到的 所謂堆疊是指一種後進先出 (LIFO, Last In First Out) 的資料結構, 也就是說, 放入此結構 ( 集合 ) 的物件 ( 變數 ) 要被取出時, 必須等比它後加入的物件全部被拿出來後, 才能將它拿出來 例如一端封閉的網球收納筒, 就是一種堆疊結構 : 112

113 堆疊類別 113

114 堆疊類別 關於資料結構的探討, 在此不擬深入, 有興趣者, 可參照其它相關主題的書籍 不過我們可以發現這種簡單的資料結構, 也很適合設計成類別, 不但能以更直覺的方式操作, 也能達到堆疊內資料不被外部任意存取 / 修改的目的 114

115 堆疊類別 舉一個整數堆疊的例子, 它可用來存放整數的資料, 我們可設計一個整數堆疊類別, 其中可存放一定數量的整數, 然後再設計用來將整數存入堆疊的成員函式 push() 將整數自堆疊取出的成員函式 pop(), 就可以很方便地將整數存入堆疊或由堆疊取出了 請看下面的程式 : 115

116 堆疊類別 116

117 堆疊類別 117

118 堆疊類別 以上是可存放整數資料的堆疊類別, 資料成員 buffer[] 陣列就是用來存放放入堆疊的整數, 而 sp 則記錄目前已存幾筆資料 push() pop() 函式分別模擬將資料存入堆疊 及從堆疊中取出資料的動作, 其內容很簡單, 都是先檢查 sp 是否已達最大值 ( 表示堆疊已滿 ) 或是 0 ( 表示堆疊是空的 ), 不是就進行存入或取出的動作 我們將程式存於.h 檔中, 這樣子別的程式要使用時, 只需含括這個.h 檔即可使用整數堆疊類別, 如以下範例所示 : 118

119 堆疊類別 119

120 堆疊類別 120

121 堆疊類別 在上例的 main() 函式中一共建立了二個堆疊物件, 並分別用它們來存放 3 個整數, 再取出之 程式最後故意要 st2 物件多 pop 一次資料, 結果就會執行到私有成員函式 Error(), 顯示堆疊出錯的訊息 121

Microsoft PowerPoint - java2012-ch08投影片.ppt

Microsoft PowerPoint - java2012-ch08投影片.ppt 第八章認識類別 認識類別的基本架構在類別裡使用資料成員與函數成員學習 this 關鍵字的用法在類別裡設計函數的多載學習如何使用類別裡的公有與私有成員 1 類別的基本概念 每一個 Java 程式, 至少會存在一個或一個以上的類別 類別是由資料成員與函數成員封裝而成 類別內的資料成員稱為 field( 範疇 ) 在 oop 裡, 函數成員是封裝在類別之內 類別是由 資料成員 與 函數成員 封裝而成 2

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

第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 Word - Prog1-981.docx

Microsoft Word - Prog1-981.docx 5. 變數參照 (Memory Reference) 5.1 指標 (Pointer) (1). 指標 (Pointer) 的基本觀念 特性 內含為一 Memory Address 會因不同的機器而有不同的結果 &" 也是代表變數的位址 例如 : int var1 = 2; cout

More information

運算子多載 Operator Overloading

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

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

Microsoft PowerPoint - 12 struct and other datatypes.ppt

Microsoft PowerPoint - 12 struct and other datatypes.ppt 第十一章結構與其它資料型態 結構與巢狀結構 結構陣列的各種使用方法 列舉型態 自定的型態別名 typedef 認識結構 使用者自定的資料型態 結構可將型態不同的資料合併成為新的型態 定義結構與宣告結構變數的格式如下 : struct 結構名稱 資料型態成員名稱 1; 資料型態成員名稱 2;... 資料型態成員名稱 n; struct 結構名稱變數 1, 變數 2,, 變數 n; 定義結構與宣告結構變數的語法

More information

Microsoft PowerPoint - java2012-ch12投影片.ppt

Microsoft PowerPoint - java2012-ch12投影片.ppt 第十二章大型程式的發展與常用的類別庫 學習如何分割檔案認識類別庫以及取用類別庫裡的類別建構 package 的階層關係學習 Java 裡常用的類別庫 1 分割檔案的實作 (1/2) 12.1 檔案的分割 以 CCircle 類別為例, 說明分割檔案的實作 1. 依序建立兩個類別檔案, 並置於同一個資料夾內 : 2 分割檔案的實作 (2/2) 12.1 檔案的分割 2. 分別以下列的指令編譯 CCircle.java

More information

0 0 = 1 0 = 0 1 = = 1 1 = 0 0 = 1

0 0 = 1 0 = 0 1 = = 1 1 = 0 0 = 1 0 0 = 1 0 = 0 1 = 0 1 1 = 1 1 = 0 0 = 1 : = {0, 1} : 3 (,, ) = + (,, ) = + + (, ) = + (,,, ) = ( + )( + ) + ( + )( + ) + = + = = + + = + = ( + ) + = + ( + ) () = () ( + ) = + + = ( + )( + ) + = = + 0

More information

第1章

第1章 第 9 章 類別 1 本章提要 9.1 前言 9.2 物件導向程式設計基礎 9.3 類別的基本認識 9.4 公有成員與私有成員 9.5 類別變數與類別方法 9.6 進一步認識方法 9.7 進一步認識建構元 9.8 其它 9.9 綜合練習 9.10 後記 2 9.1 前言 物件導向程式設計的特性主要有 : 分而治之 (Divide and Conquer) 資訊隱藏 (Information Hiding)

More information

Microsoft PowerPoint - EmbSys102_JavaOOP [相容模式]

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

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

Microsoft PowerPoint - C-Ch11.ppt

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

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

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

二次曲線 人們對於曲線的使用及欣賞 比曲線被視為一種數學題材來探討要早 得多 各種曲線中 在日常生活常接觸的 當然比較容易引起人們的興趣 比如 投擲籃球的路徑是拋物線 盤子的形狀有圓形或橢圓形 雙曲線 是較不常見的 然而根據科學家的研究 彗星的運行軌道是雙曲線的一部 分 我們將拋物線 圓與橢圓 雙曲

二次曲線 人們對於曲線的使用及欣賞 比曲線被視為一種數學題材來探討要早 得多 各種曲線中 在日常生活常接觸的 當然比較容易引起人們的興趣 比如 投擲籃球的路徑是拋物線 盤子的形狀有圓形或橢圓形 雙曲線 是較不常見的 然而根據科學家的研究 彗星的運行軌道是雙曲線的一部 分 我們將拋物線 圓與橢圓 雙曲 -1 圓方程式 第 章 二次曲線 38 二次曲線 人們對於曲線的使用及欣賞 比曲線被視為一種數學題材來探討要早 得多 各種曲線中 在日常生活常接觸的 當然比較容易引起人們的興趣 比如 投擲籃球的路徑是拋物線 盤子的形狀有圓形或橢圓形 雙曲線 是較不常見的 然而根據科學家的研究 彗星的運行軌道是雙曲線的一部 分 我們將拋物線 圓與橢圓 雙曲線合稱為圓錐曲線 因為在平面坐標 系中 其對應的方程式均為二元二次式

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

Microsoft PowerPoint - FS720-Ch08

Microsoft PowerPoint - FS720-Ch08 第 8 章物件導向程式設計 (Object-Oriented Programming) 著作權所有 旗標出版股份有限公司 本章重點 8-1 認識類別與物件 8-2 定義類別與建立物件 8-3 方法的進階應用 8-4 方法的多重定義 (Overloading) 8-5 綜合演練 2 8-1 認識類別與物件 如果將 Java 程式比擬為一齣舞台劇, 那麼要說明甚麼是物件導向程式語言就不難了 要上演一齣舞台劇,

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

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

09_Constructor

09_Constructor 物件的建構 物件的建構 幫物件設定初始狀態 物件的建構方法 (Constructor) 建構方法 是一種 method Constructor 在建立物件時由系統系統自動自動呼叫, 例如當在建構物件時 Ootest ot = new Ootest(); () 就是系統自動呼叫的作用 若類別中沒有定義建構方法, 則 Java 編譯器會自動幫該類別定義一個預設建構方法 (Defualt constructor)

More information

Microsoft PowerPoint - ch4.pptx

Microsoft PowerPoint - ch4.pptx .NET 程式設計入門 ( 使用 C#) 1 Outline 類别與物件 欄位與屬性 方法 靜態成員 方法多載 建構式 遞迴 2 命名空間 (1) 使用命名空間的好處可以將功能類似的類別組織在一起 命名空間允許巢狀的結構, 形成階層式的架構, 更容易分類管理 若在同一個程式檔中宣告二個名稱一樣的類別時, 編譯會發生錯誤, 我們可以利用命名空間來解決此問題 利用 using 關鍵字來指定需要的命名空間

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

C/C++ Programming

C/C++ Programming 265 第九講 結構 講師 : 李根逸 (Ken-Yi Lee), E-mail: feis.tw@gmail.com 266 課程 大綱 結構 (struct) 結構宣告 [P.267] 結構定義 [P.268] 結構變數宣告 [P.269] 結構變數的初始化 [P.272] 存取結構成員 [P.244] 傳送 大型資料型態參數 [P.277] 267 結構宣告 結構是 一種衍 生的 自訂資料型態,

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

投影片 1

投影片 1 資料庫管理程式 ( 補充教材 -Part2) 使用 ADO.NET 連結資料庫 ( 自行撰寫程式碼 以實現新增 刪除 修改等功能 ) Private Sub InsertButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles InsertButton.Click ' 宣告相關的 Connection

More information

Microsoft Word - About_C_PointerAdvanced.doc

Microsoft Word - About_C_PointerAdvanced.doc (*) 如何宣告或解讀某一個資料型態的指標變數? 在變數名稱前加上一個 * 號 ( 陣列也可算成是指標只是其值不能被更改!) 反過來在解讀變數的型態時 : 先找到變數名稱, 再看其左邊是否有星號 ( 至多取一個 ), 若有表示這是一個指標變數, 否則就是一般的變數 至於資料型態的部份, 只要將變數或連同 * 號移去後, 剩下的部份就是此變數或指標的資料型態 (*) 優先順序 : 運算子的優先順序 5

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

Microsoft PowerPoint - 08_Class

Microsoft PowerPoint - 08_Class 第八章認識類別 認識類別的基本架構在類別裡使用資料成員與成員函數學習 this 關鍵字的用法在類別裡設計 method 的多載學習如何使用類別裡的公有與私有成員 1 8.1 認識類別 類別的基本概念 每一個 Java 程式, 至少會存在一個或一個以上的類別 類別是由資料成員與成員函數封裝而成 矩形有寬 (width) 與高 (height) 兩個基本屬性 根據這兩個屬性, 可求出面積 (area)

More information

10-2 SCJP SCJD 10.1 昇陽認證 Java 系統開發工程師 的認證程序 Java IT SCJD

10-2 SCJP SCJD 10.1 昇陽認證 Java 系統開發工程師 的認證程序 Java IT SCJD 10 SCJD 簡介 Java 10-2 SCJP SCJD 10.1 昇陽認證 Java 系統開發工程師 的認證程序 Java IT SCJD 10 SCJD 10-3 Java Java SCJD 7 Swing RMI 10.1.1 The Assignment The Essay 9 10 10-4 SCJP SCJD 90 10.1.2 SCJP Java 90 120 Swing 10

More information

01 用 ActionScript 3.0 開始認識 Flash CS3 Flash 是應用在網路上非常流行且高互動性的多媒體技術, 由於擁有向量圖像體積小的優點, 而且 Flash Player 也很小巧精緻, 很快的有趣的 Flash 動畫透過設計師的創意紅遍了整個網際網路 雖然很多人都對 Fl

01 用 ActionScript 3.0 開始認識 Flash CS3 Flash 是應用在網路上非常流行且高互動性的多媒體技術, 由於擁有向量圖像體積小的優點, 而且 Flash Player 也很小巧精緻, 很快的有趣的 Flash 動畫透過設計師的創意紅遍了整個網際網路 雖然很多人都對 Fl 01 用 ActionScript 3.0 開始認識 Flash CS3 Flash 是應用在網路上非常流行且高互動性的多媒體技術, 由於擁有向量圖像體積小的優點, 而且 Flash Player 也很小巧精緻, 很快的有趣的 Flash 動畫透過設計師的創意紅遍了整個網際網路 雖然很多人都對 Flash 可以做精美的網路動畫並不陌生, 但是實際上 Flash 不僅如此, 只要搭配 ActionScript

More information

全國各級農會第 2 次聘任職員統一考試試題 科目 : 程式設計類別 : 九職等以下新進人員作答注意事項 : 1 全部答案請寫在答案卷內, 如寫在試題紙上, 則不予計分 2 請以黑色或藍色鋼筆或原子筆書寫, 並以橫式書寫 ( 由左至右, 由上而下 ) 一 選擇題 ( 每題 4 分, 共 40 分 )

全國各級農會第 2 次聘任職員統一考試試題 科目 : 程式設計類別 : 九職等以下新進人員作答注意事項 : 1 全部答案請寫在答案卷內, 如寫在試題紙上, 則不予計分 2 請以黑色或藍色鋼筆或原子筆書寫, 並以橫式書寫 ( 由左至右, 由上而下 ) 一 選擇題 ( 每題 4 分, 共 40 分 ) 全國各級農會第 2 次聘任職員統一考試試題 一 選擇題 ( 每題 4 分, 共 40 分 ) 1. 在 Java 語言中, 請問下列何者資料型別的變數, 所需的儲存空間最少? (a) char (b) float (c) double (d) int 2. 請問下列何者非 C 語言的關鍵字 (key word)? (a) const (b) default (c) dynamic (d) continue

More information

Microsoft PowerPoint - C_Structure.ppt

Microsoft PowerPoint - C_Structure.ppt 結構與其他資料型態 Janet Huang 5-1 結構的宣告 struct 結構名稱 struct 結構名稱變數 1, 變數 2,, 變數 m; struct 結構名稱 變數 1, 變數 2,, 變數 m; student; student; 5-2 1 結構變數初值的設定 struct 結構名稱 struct 結構名稱變數 = 初值 1, 初值 2,, 初值 n student="janet","1350901",100,95

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 - C-Ch10.ppt

Microsoft PowerPoint - C-Ch10.ppt 了解陣列元素的位址 陣列 指標的應用 10-1 陣列與指標的關係 可以使用位址運算子 (&) 來查詢陣列中各個元素的位址 &test[0] 這行表示陣列最前面元素的位址 &test[1] 這行表示陣列第二個元素的位址 關於陣列名稱的機制 陣列名稱可以表示陣列最前面元素的位址 #include int main(void) int test[5] = 80,60,55,22,75;

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

840 提示 Excel - Excel -- Excel (=) Excel ch0.xlsx H5 =D5+E5+F5+G5 (=) = - Excel 00

840 提示 Excel - Excel -- Excel (=) Excel ch0.xlsx H5 =D5+E5+F5+G5 (=) = - Excel 00 Excel - - Excel - -4-5 840 提示 Excel - Excel -- Excel (=) Excel ch0.xlsx H5 =D5+E5+F5+G5 (=) = - Excel 00 ( 0 ) 智慧標籤 相關說明提示 -5 -- Excel 4 5 6 7 8 + - * / % ^ = < >= & 9 0 (:) (,) ( ) Chapter - :,

More information

Microsoft Word - CS-981.doc

Microsoft Word - CS-981.doc 4. 資料表示法 4.1 十進位與數字系統 (1). 基本觀念 數字系統的觀念 人們習慣以十進位的計量方式來計算 不同的數字系統有二進位 (Binary) 八進位 (Octal) 十進位 (Decimal) 十六進位(Hexadecimal) 二進位 電腦內部用來表達訊號的資料只有兩種符號 : 0 表示沒電,1 表示有電透過多個電路的組合表示出無數符號, 電腦便利用這些符號來表示不同的數字 利用兩條電線可以表示出

More information

Chapter 3 Camera Raw Step negative clarity +25 ] P / Step 4 0 ( 下一頁 ) Camera Raw Chapter 3 089

Chapter 3 Camera Raw Step negative clarity +25 ] P / Step 4 0 ( 下一頁 ) Camera Raw Chapter 3 089 Photoshop CC Camera Raw Photoshop Camera Raw Step 1 3 1 2 3 SCOTT KELBY Step 2 B Camera Raw 088 Chapter 3 Camera Raw Chapter 3 Camera Raw Step 3-4 -100 negative clarity +25 ] P / -75-50 Step 4 0 ( 下一頁

More information

Microsoft Word - chap05.doc

Microsoft Word - chap05.doc 31 5. Structures/Simple Classes in C++ 結構體是程式設計者自訂的資料型態 (data type), 一結構體是由多個彼此相關之基本資料型態之資料所構成的複合式資料型態 程式設計者可將程式中彼此相關 且類型不同的資料整合在一起, 定義為結構體, 此新的資料型態宣告建立後, 便可產生屬於此結構體類型 ( 定義 ) 的變數 ( 實體 ), 此有助於資料的管理 結構體與陣列都屬於複合式的資料型態,

More information

Microsoft PowerPoint - ch04_AEL0080.ppt

Microsoft PowerPoint - ch04_AEL0080.ppt 4 選擇 在正常的情況下, 電腦程式的執行是以敘述的排列次序逐步處理的 使用控制架構 (control structures) 可以改變這種既定的先後次序, 讓程式得以進行更複雜的運算, 或以更簡潔的指令來實現演算法 1/42 選擇 4.1 演算法的描述方式 4.2 變數的運用範圍 (Scope of variables) 4.3 if- 敘述 4.4 巢狀 if- 敘述 (Nested if statements)

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

Microsoft PowerPoint - java2012-ch13投影片.ppt

Microsoft PowerPoint - java2012-ch13投影片.ppt 第十三章例外處理 瞭解什麼是例外處理認識例外類別的繼承架構認識例外處理的機制學習如何撰寫例外類別 1 例外的基本觀念 在撰寫程式時常見的幾種情況 : (1) 要開啟的檔案並不存在 (2) 存取陣列時, 陣列的索引值超過陣列容許的範圍 (3) 原本預期使用者由鍵盤輸入的是整數, 但使用者輸入的卻是英文字母 這類不尋常的狀況稱為 例外 (exception) 在 Java 中, 所有的例外都是以類別的型態存在

More information

Microsoft PowerPoint - VB14.ppt

Microsoft PowerPoint - VB14.ppt VB 列表盒 LISTBOX 應用 資科系 林偉川 執行畫面 1 2 1 重要屬性 LISTBOX 物件 (VB6) 新增至 LISTBOX 物件中 ADDITEM 自 LISTBOX 物件中刪除選取物件 REMOVEITEM 自 LISTBOX 物件中取出選取物件 ListIndex 顯示 LISTBOX 物件中紀錄個數 Listcount 3 LISTBOX 物件 (VB.NET) 重要屬性 新增至

More information

PowerPoint Presentation

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

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

Strings

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

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 PowerPoint - C-Ch08.ppt

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

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

C/C++基礎程式設計班

C/C++基礎程式設計班 C/C++ 基礎程式設計 C++: 物件導向程式設計 - 使用類別 (Class) 決不 決不 決不 決不放棄! Never, never, never, never give up. -Steve Jobs 講師 : 張傑帆 CSIE, NTU 課程大綱 類別 (Class) 物件導向 類別, 物件, 成員 權限 建構式與解構式 作業 C++ 物件導向 以物件為基礎的程式設計, 將程式中互動的單元視為一個個的物件

More information

C++

C++ 第五講 泛型程式設計 講師 : 李根逸 (Ken-Yi Lee), E-mail: feis.tw@gmail.com 130 課程 大綱 模版 (template) 簡介實作多個相似內容的函式函式模版類別模版 自製陣列模版 static 的 用法修飾全域變數或 一般函式修飾區域變數修飾類別成員 C++ STL 的陣列模版 (std::vector) 131 實作多個相似內容的函式 [1] 寫 C/C++

More information

PowerPoint Presentation

PowerPoint Presentation 第六章簡介運算子超載 (Operator Overloading) 6-1 運算子超載的基礎 6-2 超載二元運算子 6-3 超載邏輯與關係運算子 6-4 超載一元運算子 6-5 使用夥伴函數 6-6 細部檢視指定運算子 6-7 超載註標運算子 6-1 運算子超載的基礎 甚麼是運算子超載? 讓運算子 ( 符號 ) 有不同的意義 EX: 運算子的預設意義 ( 以 + 與 = 為例 ) class frac

More information

Microsoft Word - PB_A_ doc

Microsoft Word - PB_A_ doc PowerBuilder 如何實做 Interface 前言 : 在物件導向程式中, 我們常會透過繼承 (Inheritance) 的方式來取得另一類別的屬性和方法, 主要目的是為了讓我們的程式可以重複使用 (Reuse) 然而, 當我們想要繼承更多不同的類別時, 多重繼承 (Multiple Inheritance) 則是物件導向程式能夠允許的一種方式, 但還是有許多程式語言是不支援的, 主要原因是多重繼承很可能發生父類別的屬性名稱及方法名稱相同,

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

Microsoft PowerPoint - 第10章.ppt

Microsoft PowerPoint - 第10章.ppt 副程式 通常我們會將重複功能的程式碼, 獨立形成一個固定的程式片段, 讓主程式重複呼吸使用稱為副程式 主程式 開 始 副程式 1 副程式 2 敘述 1 敘述 2 Sub 功能 1( ) : : End Sub Sub 功能 2( ) : : End Sub 輸 出 結 束 主程式與副程式 10-1 副程式 副程式和函式最大的不同處在於 : (1) 副程式並不傳回值 (2) 函式會傳回一個值 假設要讓副程式回傳值,

More information

Microsoft Word - 投影片ch11

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

More information

第二章 簡介類別

第二章  簡介類別 Instructor 曾學文 hwtseng@nchu.edu.tw http://wccclab.cs.nchu.edu.tw/www/index.php/c ourse/2017-03-20-07-38-21/105-105-2-c TA 王昱彬 第一章概觀 C++ 1-2 二種版本的 C++ 1-5 初步檢視類別 1-1 何謂物件導向程式設計 1-8 C++ 的關鍵字 1-2 二種版本的 C++

More information

untitled

untitled 1 Outline 類别 欄 (1) 類 類 狀 更 易 類 理 若 類 利 來 利 using 來 namespace 類 ; (2) namespace IBM class Notebook namespace Compaq class Notebook 類别 類 來 類 列 欄 (field) (property) (method) (event) 類 例 立 來 車 類 類 立 車 欄 料

More information

<4D F736F F D20B1D0A87CB3A1A7EFB5BDAE76B8EAB867B64FB8C9A7555FABCAADB1>

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

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

References

References 第四章模擬實驗與結果分析 4.1 模擬實驗的設計與假設本實驗使用 NS-2(Network Simulater ver. 2.29) 進行模擬, 我們另外使用 WiMAX_v2.3 module[13], 這是一個 NS-2 的 WiMAX 模組 由於 WiMAX_v2.3 module 為目前 NS-2 上有支援 WiMAX QoS 設計的模組, 因此我們將利用它來做為我們實驗的環境, 最後我們將在本章比較驗證實驗的結果

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

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

第二節 研究方法 本論文第一章 緒論 說明研究動機與目的 研究方法及研究的範圍及限制 並對 飲食散文的義界 作一觀念的釐清 第二章 文獻探討 就將本研究的理 論建構中的概念作釐清 分別為 現代文學 飲食文學的重要論著 等兩個部 分來描述目前文獻的研究成果 並探討其不足待補述的地方 本研究以 文化研 究 為主要研究基礎 統攝整個研究架構 在不同章節裡 佐以相關研究方法進 行論述 茲圖示如下 研究方法

More information

運算子多載 Operator Overloading

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

More information

46 2011 11 467 數位遊戲式學習系統 7 2011 11 467 47 3 DBGameSys 48 2011 11 467 正規化資料模組 如何配置並儲存電子化資料 以 便減少資料被重覆儲存的程序 DBGameSys的主要功能模組包 學習者 審核評分模組 含 正規化資料模組 審核評分 模組 高分列表模組3大區塊 系統資料庫 在正規化資料模組的執行 高分列表模組 過程中 先要求學習者瀏覽遊戲

More information

6 2012 8476你猜得到它是什麼嗎 它就是 高分子! 生活中的高分子 有種物質的重要性不亞於我們所呼吸的空氣, 不管身在何處, 都有它的存在, 它甚至就隱藏在人體裡面! 人類若失去了它, 就得回到遠古時代, 甚至可能終止生命 高分子是什麼 高分子是由千個 甚至萬個以上的原子所組成, 呈現柔軟的特性 日常生活中使用的塑膠袋就是由高分子製造的, 人體組成中的 DNA 也是一種高分子 2012 8476

More information

Object-Oriented Programming, Mid-term Test, 11/21/2000

Object-Oriented Programming, Mid-term Test, 11/21/2000 通識計算機程式設計期中考試題參考解答, 4/17/2009 1. 撰寫一或數個 C# 敘述達成下列要求 : ( 假設 using System; 敘述已經包含於程式中 ) (a) 宣告 int 變數 x, bool 變數 b, double 常數 F = 7.0. (3%) int x; bool b; const double F = 7.0; (b) 在螢幕顯示一行字, 要求使用者輸入一個整數.

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

理性真的普遍嗎 注意力的爭奪戰 科學發展 2012 年 12 月,480 期 13

理性真的普遍嗎 注意力的爭奪戰 科學發展 2012 年 12 月,480 期 13 12 科學發展 2012 年 12 月,480 期 你可能不知道的媒體影響 劉正山若用 選戰 的角度來看選舉和參與選舉, 你大腦裡情感的作用一定大過理性的作用, 便會很習慣地拿各種媒體或別人的觀點來使自己的選擇合理化 2012 理性真的普遍嗎 注意力的爭奪戰 科學發展 2012 年 12 月,480 期 13 14 科學發展 2012 年 12 月,480 期 agendasetting 報紙和網路新聞的頭版空間有限,

More information

Microsoft PowerPoint - 07-overloaded.ppt

Microsoft PowerPoint - 07-overloaded.ppt Overloaded Functions 前言 處理多載函式宣告的規則 處理多載函式呼叫的規則 多載函式與 scope 函式呼叫的議決 前言 C 語言規定 : 函式的名稱不可相同 這樣的規定使得我們必須為功能相近但參數型態相異的函式取不同的名稱, 譬如 : int imax (int, int); double dmax (double, double ); // max function for

More information

CU0594.pdf

CU0594.pdf 8 SOHO 1 3 003 SOHO SOHO Coder Programmer HTML CSS PHP JavaScrip 009 LECTURE 1-1 1 048 PART 2 LECTURE 1-1 1 049 SOHO Landing Page Landing 050 PART 2 LECTURE 1-1 1 SEO SEO P.093 SEO SEO SEO SEO SEO 051

More information

Microsoft PowerPoint - 09.Android 程式設計-SQLite

Microsoft PowerPoint - 09.Android 程式設計-SQLite 計劃名稱 : 104 年度教育部資通訊軟體創新人才推升推廣計畫跨校資源中心 : 雲端運算 ( 國立中山大學 ) 課程名稱 : 網路及平台服務 Part1- 課程教材 教材名稱 :Android 程式設計 -SQLite 國立高雄大學資訊工程學系張保榮教授 大綱 SQLite execsql() 函式 rawquery() 函式 insert() 函式 delet() 函式 update() 函式 query()

More information

C++ 程序设计 告别 OJ1 - 参考答案 MASTER 2019 年 5 月 3 日 1

C++ 程序设计 告别 OJ1 - 参考答案 MASTER 2019 年 5 月 3 日 1 C++ 程序设计 告别 OJ1 - 参考答案 MASTER 2019 年 月 3 日 1 1 INPUTOUTPUT 1 InputOutput 题目描述 用 cin 输入你的姓名 ( 没有空格 ) 和年龄 ( 整数 ), 并用 cout 输出 输入输出符合以下范例 输入 master 999 输出 I am master, 999 years old. 注意 "," 后面有一个空格,"." 结束,

More information

17-72c-1

17-72c-1 台灣喜宴文化與陶瓷餐具設計開發 廖素慧 林長弘 林秀娟 摘 要 喜宴文化它包括了生活風俗習慣 禮教的 禁忌與料理 飲食的結合 可以看到民族的思 想行為以及社會的結構模式 是生活文化的濃 縮 它的過程對於一對新人在人生旅程開始 時 得到關愛與祝福也給予責任 所以喜宴的 禮教約束 是人生很重要的一個過程 好的飲 食禮教約束可以產生良性的人生觀 從喜宴的 食物料理與新開發餐具的造形與裝飾美感等的 結合來做一個開始

More information

單步除錯 (1/10) 打開 Android Studio, 點選 Start a new Android Studio project 建立專案 Application name 輸入 BMI 點下 Next 2 P a g e

單步除錯 (1/10) 打開 Android Studio, 點選 Start a new Android Studio project 建立專案 Application name 輸入 BMI 點下 Next 2 P a g e Android Studio Debugging 本篇教學除了最基本的中斷點教學之外, 還有條件式中斷的教學 條件式中斷是進階的除錯技巧, 在某些特定情況中, 我們有一個函數可能會被呼叫數次, 但是我們只希望在某種條件成立時才進行中斷, 進而觀察變數的狀態 而條件式中斷這項技巧正是符合這項需求 本教學分兩部分 單步除錯 (Page2~11, 共 10) 條件式中斷點 (Page12~17, 共 6)

More information

Autodesk Product Design Suite Standard 系統統需求 典型使用用者和工作流程 Autodesk Product Design Suite Standard 版本為為負責建立非凡凡產品的設計師師和工程師, 提供基本概念設計計和製圖工具, 以取得令人驚驚嘆

Autodesk Product Design Suite Standard 系統統需求 典型使用用者和工作流程 Autodesk Product Design Suite Standard 版本為為負責建立非凡凡產品的設計師師和工程師, 提供基本概念設計計和製圖工具, 以取得令人驚驚嘆 Autodesk Product Design Suite Standard 20122 系統統需求 典型使用用者和工作流程 Autodesk Product Design Suite Standard 版本為為負責建立非凡凡產品的設計師師和工程師, 提供基本概念設計計和製圖工具, 以取得令人驚驚嘆的產品設計計 Autodesk Product Design Suite Standard 版本中中包括以下軟體體產品

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

CHAPTER VC#

CHAPTER VC# 1. 2. 3. 4. CHAPTER 2-1 2-2 2-3 2-4 VC# 2-5 2-6 2-7 2-8 Visual C# 2008 2-1 Visual C# 0~100 (-32768~+32767) 2 4 VC# (Overflow) 2-1 2-2 2-1 2-1.1 2-1 1 10 10!(1 10) 2-3 Visual C# 2008 10! 32767 short( )

More information

Slide 1

Slide 1 Java 程式設計入門 講師 : 陳昭源 CSIE, NTU 2005/07/16 Outline 物件基礎 Object Basics 類別與成員 Classes & Members Exercise July 16, 2005 Page 2 物件導向程式設計 Object-Oriented Programming (OOP) 類別 Class 模板 樣板, 可根據此規格建立物件 Hidden Implementation

More information

Microsoft Word - 97.01.30軟體設計第二部份範例試題_C++_ _1_.doc

Microsoft Word - 97.01.30軟體設計第二部份範例試題_C++_ _1_.doc 電 腦 軟 體 設 計 乙 級 技 術 士 技 能 檢 定 術 科 測 試 範 例 試 題 (C++) 試 題 編 號 :11900-920201-4 審 定 日 期 : 94 年 7 月 1 日 修 訂 日 期 : 96 年 2 月 1 日 97 年 1 月 30 日 ( 第 二 部 份 ) 電 腦 軟 體 設 計 乙 級 技 術 士 技 能 檢 定 術 科 測 試 應 檢 參 考 資 料 壹 試

More information

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

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

More information

投影片 1

投影片 1 計算機程式及實習 期末報告 題目 : 六宿炒翻天 班級 : 奈米一乙姓名 : 陳洋翼學號 :4A514050 老師 : 謝慶存 程式說明 設計結帳系統, 選擇數量後, 在按下計算, 將會顯示總金額 若是老人或小孩, 將可享 8 折或 9 折的優惠 程式畫面 填選數量 在火腿蛋炒飯的數量選擇 1, 並按下計算, 可得總金額 50 元 程式畫面 打折 填選完後, 若客人是小孩或老人, 選擇欲打折項目,

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

第一篇文概說第七章公文的用語及標點符號公本篇內容 第一章 緒論 第二章 公文的意義 第三章 公文與高 普 特各類考試 第四章 公文程式之意義及演變 第五章 公文之分類及其行文系統 第六章 公文之結構與行款 第一篇 第一章緒論 003 第一章緒論 等 等 004 最新應用公文 第一篇 第二章公文的意義 005 第二章公文的意義 第一節 一 須為公務員製作之文書 二 須為公務員 職務上 製作之文書 006

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

前言 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

Microsoft Word - ch10.doc

Microsoft Word - ch10.doc CHAPTER 10 變數的儲存類別 10.1 變數的儲存類別 10.2 自動變數 10.3 靜態變數 10.4 外部變數 10.5 暫存器變數 10.6 習題 10.1 變數的儲存類別 在第三章當您宣告一個變數時, 便可得知變數的名稱 變數是屬於哪種資料型別 該變數佔用記憶體有多少個 Bytes 當設計較大程式時, 使用的變數一多, 就必須考慮變數在記憶體中的配置情形 本章主要探討變數的儲存類別

More information

Microsoft Word - ACL chapter02-5ed.docx

Microsoft Word - ACL chapter02-5ed.docx 第 2 章神奇的質數 2.1.1 什麼是質數 1 1 1 打下好基礎 - 程式設計必修的數學思維與邏輯訓練 1 1 0 10 2 3 5 7 4 6 8 9 10 4 10000 1229 1000 168 2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97 101 103 107 109 113 127 131

More information

untitled

untitled 1 7 7.1 7.2 7.3 7.4 7.5 2 7.1 VFT virtual 7.1 3 1 1. 2. public protected public 3. VFT 4. this const volatile 4 2 5. ( ) ( ) 7.1 6. no-static virtual 7.2 7. inline 7.3 5 3 8. this this 9. ( ) ( ) delete

More information

附件一:

附件一: 理念 來 ~ 老 飯 飯 飯 都 飯 了 兩 飯 老 不 飯 不 飯 零 料 不 不 了 念 理念 了 不 更 力 識 來 路 領 行 了 了 度 聯 不 了 行 旅 念 更 更 力 了 識 蘿 了 了 狀 了 狀 不 狀 六 類 識六 類 類 量 念 樂 良 了 ~ 立 更 1 略 精神 都 更 不 了利 行 論 了 2 論旅論錄 流 領 年 年 年 年 來 4 良 度 力 良 力 識 不 律 良

More information

書面

書面 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 5.4 互動功能畫面 程式碼請參考附件-程式三 在進入互動頁面時 會執行setAllText()依寵物狀態數值來 設定狀態文字與頭像 並且依心情決定是否要不要播放音效 觸摸的區域 由於是自己寫的 view 所以並未透過xml來設置 而是透過Layut.addview()來動態新增

More information

extend

extend (object oriented) Encapsulation Inheritance Polymorphism Dynamic Binding (base class) (derived class) 1 class Base { int I; void X(); void Y(); class Derived: public Base { private: int j; void z(); Derived

More information

2 3 13 17 22 26 1 2 8 100738 +86 (10) 8508 5000 +86 (10) 8518 5111 www.kpmg.com.cn 2006 4 2002 2006 1 28% 2006 17 8 500 2006 2006 2006 7 2.5 2 1 500 500 40% 500 10 16 14 12 10 8 6 4 2 2002-2006 5.1 5.9

More information

新版 明解C++入門編

新版 明解C++入門編 511!... 43, 85!=... 42 "... 118 " "... 337 " "... 8, 290 #... 71 #... 413 #define... 128, 236, 413 #endif... 412 #ifndef... 412 #if... 412 #include... 6, 337 #undef... 413 %... 23, 27 %=... 97 &... 243,

More information

Microsoft PowerPoint - SE7ch07.ppt

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

More information

Microsoft PowerPoint - Class5.pptx

Microsoft PowerPoint - Class5.pptx C++ 程式初探 V 2015 暑期 ver. 1.0.1 C++ 程式語言 大綱 1. 大量檔案讀取 & 計算 2. 指標 3. 動態記憶體 & 動態陣列 4. 標準函式庫 (STL) vector, algorithm 5. 結構與類別 2 大量檔案讀取 & 計算 若目前有一個程式將讀取純文字文件 (.txt) 中的整數, 並將該文件中的整數有小到大排序後, 儲存到另外一個新的純文字件中 假設有

More information

2 part 01 浴室 浴室收納原則 要在浴室用的東西一定要收在浴室 從內容物只剩一點的洗滌劑容器開始整理 減少相同物品的數量 多的物品只要 1~2 個就夠了 每天要用的東西別放在浴室櫃子裡

2 part 01 浴室 浴室收納原則 要在浴室用的東西一定要收在浴室 從內容物只剩一點的洗滌劑容器開始整理 減少相同物品的數量 多的物品只要 1~2 個就夠了 每天要用的東西別放在浴室櫃子裡 101 KANG SI 1010091 1. Home Economics. 康熹家政報報 101 KANG SI 第三期 24830 (02)2299-9006 (02)2299-9110 好書推薦 一天一點無壓力收納 : 600 萬網友推薦的實用整理聖經 本書簡介 600157 2 part 01 浴室 浴室收納原則 要在浴室用的東西一定要收在浴室 從內容物只剩一點的洗滌劑容器開始整理 減少相同物品的數量

More information