Ch09. 類別、結構與列舉.

Slides:



Advertisements
Similar presentations
微信营销宝典. 什么是微信? 微信是腾讯公司于 2011 年初推出的一款通过网络 快速发送语音短信、视频、图片和文字,支持多 人群聊的手机聊天软件。
Advertisements

社交游戏在移动平台的飞跃 社交游戏的前世今生 社交游戏的天然平台 iPhone/iPad 如何打造专属于 iOS 的社交游戏 社交游戏在 iOS 平台的多种赢利途径.
第一單元 建立java 程式.
第 4 章 PHP 基本語法.
我征服了黃山 林達的黃山之旅 2006春.
2010年手机之家第二次圆桌会议 共同参与共创手机之家 2010年7月10日 北京双井.
08 CSS 基本語法 8-1 CSS 的演進 8-2 CSS 樣式規則與選擇器 8-3 連結HTML 文件與CSS 樣式表
第一章信託法 第一節 信託契約 第二節 信託財產 第三節 受益人 第四節 受託人 第五節 信託關係之消滅.
第 5 章 流程控制 (一): 條件分支.
陳維魁 博士 儒林圖書公司 第九章 資料抽象化 陳維魁 博士 儒林圖書公司.
新世代計算機概論 第14章 程式語言.
App 晶片一甲 4A 林渼茵.
拿 法 常晓波博士 Mobile:
蘋果、三星聯手囊括5成智慧型手機市場 2012年他廠空間持續受擠壓
第十一章 結構.
程式設計 博碩文化出版發行.
LINQ 建國科技大學 資管系 饒瑞佶.
Visual C++ introduction
列舉(enum).
第四章 流程控制(一) if,if-else 與 switch
保留字與識別字.
101北一女中 資訊選手培訓營 妳不可不了解的指標 Nan.
授课老师:龚涛 信息科学与技术学院 2018年3月 教材: 《Visual C++程序员成长攻略》 《C++ Builder程序员成长攻略》
類別(class) 類別class與物件object.
SQL Stored Procedure SQL 預存程序.
Methods 靜宜大學資工系 蔡奇偉副教授 ©2011.
變數命名 保留字(Reserved Word)
Java 程式設計 講師:FrankLin.
JAVA 程式設計與資料結構 第四章 陣列、字串與數學物件.
|12 結構與列舉型態.
程式設計實習課(四) ----C 函數運用----
第一單元 建立java 程式.
網頁程式設計 本章投影片錄自HTML5、CSS3、RWD、jQuery Mobile跨裝網頁設計 陳惠貞 著 碁峰資訊股份有限公司出版
Ch20. 計算器 (Mac 版本).
第 19 章 XML記憶體執行模式.
Ch17.泛型.
CH10. 屬性與方法.
CH05. 選擇敘述.
Ch15. 型態轉換與延展.
挑戰C++程式語言 ──第8章 進一步談字元與字串
LINQ資料查詢技術.
Class & Object 靜宜大學資工系 蔡奇偉副教授 ©2011.
Ch02.變數、常數以及資料型態.
<编程达人入门课程> 本节内容 为什么要使用变量? 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ:
Ch16. 協定.
陣列與結構.
Ch18. 位元運算子與運算子函式.
從HTML表格到CSS 靜宜大學 資管系 楊子青.
#include <iostream.h>
第二章 Java基本语法 讲师:复凡.
Ch07. 函式.
北一女中 資訊選手培訓營 妳不可不了解的指標 Nan.
進階UI元件:ListView元件以及複選 靜宜大學資管系 楊子青
工业设计教研室 主讲教师:李明 Mobile: 教学主楼1385室
Go 语言编程 —— 平台研发部 吴植民.
第四章 陣列、指標與參考 4-1 物件陣列 4-2 使用物件指標 4-3 this指標 4-4 new 與 delete
適用於多選一 可減少if 與 else配對混淆的錯誤.
What is “this”? 在物件導向程式設計中,類別的定義就是在說明如果創建了“這個物件”的話,它會具有那些屬性與功能,以及這些功能是如何實現的。 而所謂的“這個物件”就以 this 來表示。 當我們在JavaScript與jQuery中寫 script 程式(函式)時,“誰”呼叫這個函式,這個“誰”就是該函式中所謂的.
多重條件選擇敘述
Ch06. 聚集型態.
C#快速導讀 流程控制.
ABAP Basic Concept (2) 運算子 控制式與迴圈 Subroutines Event Block
String類別 在C語言中提供兩種支援字串的方式 可以使用傳統以null結尾的字元陣列 使用string類別
104學年度 進修學校期初工作報告.
台大資訊工程學系 資訊系統訓練班 第119期 吳晉賢
共同作業的 7 種方法 使用 PowerPoint 與其他人共同編輯 查看誰正在使用 與他人共用簡報 以便共同編輯。 目前狀態指示器會顯示
方法(Method) 函數.
ABAP Basic Concept (2) 運算子 控制式與迴圈 Subroutines Event Block
移动改变世界 mobile changes the world
InputStreamReader Console Scanner
Presentation transcript:

Ch09. 類別、結構與列舉

9.1 類別與結構的比較 類別與結構的相似之處除了可以定義屬性與功能外,還可以使用 索引存取屬性值、定義初始器來初始屬性、延展預設實作的功能 以及遵從某一協定提供某一形式的標準功能。

類別的定義的語法如下: class name { //類別的定義從此處開始 } 結構的宣告語法如下: struct name { //結構的定義從此處開始

9.1.1 值型態 結構與列舉是屬於值型態 (value type) 的資料。 9.1.1 值型態 結構與列舉是屬於值型態 (value type) 的資料。 當一結構或列舉指定給另一結構或列舉時,若其中有一所屬的資 料改變,另一個是不會受影響,因為它們各自佔不同的記憶體空 間。

範例程式 // value type struct Point { var x = 0 var y = 0 } var onePoint = Point() var anotherPoint = onePoint print("onePoint.x = \(onePoint.x)") print("onePoint.y = \(onePoint.y)") print("anotherPoint.x = \(anotherPoint.x)") print("anotherPoint.y = \(anotherPoint.y)") anotherPoint.x = 10 anotherPoint.y = 10 print("\n將原點座標改為(10, 10)")

輸出結果 onePoint.x = 0 onePoint.y = 0 anotherPoint.x = 0 anotherPoint.y = 0 將原點座標改為(10, 10) anotherPoint.x = 10 anotherPoint.y = 10

9.1.2 參考型態 不同於結構與列舉,類別是屬於參考型態 (reference type) 的資料。 9.1.2 參考型態 不同於結構與列舉,類別是屬於參考型態 (reference type) 的資料。 當一類別指定給另一類別時,若其中有一所屬的資料改變,另一 個也會受影響,因為它們參考同一個類別,

範例程式 // reference type class Rectangle { var width = 0.0 var height = 0.0 } var oneRectangle = Rectangle() var anotherRectangle = oneRectangle print("oneRectangle.width = \(oneRectangle.width)") print("oneRectangle.height = \(oneRectangle.height)") print("anotherRectangle.width = \(anotherRectangle.width)") print("anotherRectangle.height = \(anotherRectangle.height)") anotherRectangle.width = 50 anotherRectangle.height = 80 print("\n將寬與高改為(50, 80)") print(“anotherRectangle.width = \(anotherRectangle.width)")

輸出結果 oneRectangle.width = 0.0 oneRectangle.height = 0.0 anotherRectangle.width = 0.0 anotherRectangle.height = 0.0 將寬與高改為(50, 80) oneRectangle.width = 50.0 oneRectangle.height = 80.0 anotherRectangle.width = 50.0 anotherRectangle.height = 80.0

9.1.3 === 與 !== 運算子 類別是參考型態,所以有可能多個常數或變數參考到相同的類別 物件。 9.1.3 === 與 !== 運算子 類別是參考型態,所以有可能多個常數或變數參考到相同的類別 物件。 這裏將介紹兩個判斷變數或常數是否參考相同類別的運算子,分 別是相同運算子(===)與不相同運算子 (!==)。

範例程式part1 // === and !== operator class Rectangle { var width = 10 var height = 20 } var oneRectangle = Rectangle() print("oneRectangle.width = \(oneRectangle.width)") print("oneRectangle.height = \(oneRectangle.height)") var anotherRectangle = Rectangle() anotherRectangle.width = 50 anotherRectangle.height = 80 print("anotherRectangle.width = \(anotherRectangle.width)") print("anotherRectangle.height = \(anotherRectangle.height)") if oneRectangle === anotherRectangle { print("the same") } else { print("not the same")

範例程式part2 //------------------------------------- print() anotherRectangle = oneRectangle anotherRectangle.width = 20 anotherRectangle.height = 10 print("oneRectangle.width = \(oneRectangle.width)") print("oneRectangle.height = \(oneRectangle.height)") print("anotherRectangle.width = \(anotherRectangle.width)") print("anotherRectangle.height = \(anotherRectangle.height)") if oneRectangle === anotherRectangle { print("the same") } else { print("not the same") }

輸出結果 oneRectangle.width = 10 oneRectangle.height = 20 anotherRectangle.width = 50 anotherRectangle.height = 80 not the same   oneRectangle.width = 20 oneRectangle.height = 10 anotherRectangle.width = 20 anotherRectangle.height = 10 the same

9.2 列舉的語法 語法是以enum為開頭,之後以左、右大括號括起列舉值,並在 列舉值名稱前加上case,即可完成。 如: 9.2 列舉的語法 語法是以enum為開頭,之後以左、右大括號括起列舉值,並在 列舉值名稱前加上case,即可完成。 如: enum people { case freshman case sophomore case junior case senior }

9.2.1 在switch敘述中使用列舉值 可以定義一屬於此列舉的變數,並利用switch敘述加以判斷。

範例程式 enum people { case freshman, sophomore, junior, senior } let status = people.junior switch status { case .freshman: print("你是大一生") case .sophomore: print("你是大二生") case .junior: print("你是大三生") case .senior: print("你是大四生")

輸出結果 你是大三生

9.2.2 關連值 在列舉值中我們可以給予其關連值 (associated value) 。

範例程式 //associated value enum mobile { case iOS(String) case Android(String, String) case Windows(String) } var myMobile = mobile.iOS("iPhone") switch myMobile { case .iOS(let mobile1): print("使用iOS系統, 你可以選擇: \(mobile1)") case .Android(let mobile3, let mobile4): print("使用 Android 系統, 你可以選擇: \(mobile3) 或 \(mobile4) 或其它") case .Windows(let mobile6): print("使用 Windows Phone, 你可以選擇: \(mobile6)")

輸出結果 使用iOS系統, 你可以選擇: iPhone

9.2.3 rawValue 在列舉中Swift 3提供rawValue 函式,用以告訴列舉值的原始值 (raw value),亦即是預設值(default value)。

範例程式 enum people: Int { case freshman=1, sophomore, junior, senior } let status = people.senior.rawValue print(status)

輸出結果 4